• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] Formular immun gegen RETURN

tklustig

New member
Hallo Leute,
nach längerer Abwesenheit habe ich mich ma' wieder mit PHP beschäftigt.
Es geht um ein Skript, welches eine datenbankabfrage nur durch Drücken des Buttons und nicht durch die RETURN-Taste korrekt verarbeitet.
Inwiefern muss ich den Code erweitern ,damit das klappt?
Benötige ich vielleicht zusätzlich JavaScript, oder reicht PHP aus?
Vorab vielen Dank für jedes konstruktive feedback
PHP:
<!Doctype html> <!-- Definition des doctype-Modus -->
<html> <!-- Definition des Stammverzeichnises -->

<head> <!-- Definition des Kopfbereiches -->

    <meta charset="utf-8"> <!-- charset[utf-8:]  definiert den deutschen Zeichensatz -->
    <title>Datenbankabfragen</title> <!-- weist dem HTML-Dokument in der Registerkarte einen Namen zu -->
    <!-- Hier ggf. CSS-Link einfügen, z.B.: <link href="css/design.css" rel="stylesheet"> -->

<!-- ab hier Designanweisungen einfügen -->
<style> 

body{background-color:#81F7F3;}

a:visited{color:blue}

p{font-size:22px;}

label{
font-size:21px;
border-bottom: double 4px;}

label.l1{font-size:16px;}

.button{
    height:50px;
    width:80px;
    background-color: #4CAF50;
    border: none;
    color: yellow;
    font-size: 15px;
    border-radius: 20px;}
    
.button1{
    height:30px;
    width:50px;
    background-color: blue;
    border: none;
    color: yellow;
    font-size: 15px;
    border-radius: 10px;}
    
.feld{
    background-color:#F6CEF5;     
    border: none;
    color: brown;
    padding: 15px;
    text-align: center;
    font-size: 20px;
    border-radius: 8px;}

#box1 {float:left;}
    
</style>
</head>
<body> <!-- ab hier HTML-Code einfügen -->
<a href="index.html" target="blank">zurück zur Hauptseite</a>
<center><h1>SQLite3-Abfragen/Postleitzahlenskript</h1></center><br>
<p><i>Diese Webseite sucht in einer lokalen Datenbank nach der PLZ oder dem Ort Ihrer Wahl!
In den dafür vorgesehenen pinken Feldern können Sie jeweils eintragen, wonach Sie suchen. Dafür genügen auch die Anfangsbuchstaben bzw. Anfangsziffern.</p>   
<p> Bitte beachten Sie, dass die Suche nur mit dem Button abgeschlossen werden kann, <b> nicht mit der RETURN-Taste!</b></p></i><br>
<form action= "PDO_Connect.php" method="post">

<div id="box1" class="box1">
<input class="button1" type="submit" name="search_reset" value="Reset">
<label name="ort">Suche bereinigen</label></div><br><br>
<center>

<input type class="feld" type="text" name="anfang0" id="anfang" placeholder="entweder hier Ort eintragen">
<input class="button" type="submit" name="search0" value="Suchen"><br><br>

<input type class="feld" type="text" name="anfang1" id="anfang1" placeholder="oder hier PLZ eintragen">
<input class="button" type="submit" name="search1" value="Suchen"><br><br><br> 
</form>
</center>
    
<?php
 
try{$dbh = new SQLite3("plz");}
catch(Exception $e) {
print "Datenbankverbindungsfehler: " . $e -> getMessage() . "<br>";} // sofern kein Aufbau möglich interne Fehlermeldung ausgeben
            
//PLZ nach Eingabe des Ortes
if(!empty($_POST["search0"]) && $_POST["search0"] == "Suchen"){
echo "Datenbankverbindung wird initialisiert.....<br>";
echo"<table border='3'>";
echo"<tr><td width='60' bgcolor=red>PLZ</td><td width='157' bgcolor=yellow>Ort</td></tr>";
	
$sql = $dbh->query("SELECT Stadt,plz FROM plz WHERE Stadt LIKE '".$_POST["anfang0"]."%' ORDER BY Stadt");
/*$rows=$sql->numColumns();// liefert nur die Spaltenanzahl; die Methode numRows() existiert in dieser Klasse nicht!! 
print "<br><b><font size='5'><font color='#ff00ff'>Es wurden ".$rows." Datensätze gefunden</b></font size></font><br><br>";*/
while ($daten = $sql->fetchArray(SQLITE3_ASSOC)){
	echo"<table border='1'>";
	echo "<tr><td width='60' bgcolor=red>".$daten['plz']."</td><td width='160' bgcolor=yellow>".$daten['Stadt']."</td></tr></table>";}
        
//$db->close();
}
//Ort nach Eingabe der PLZ
if(!empty($_POST["search1"]) && $_POST["search1"] == "Suchen") {
echo "Datenbankverbindung wird initialisiert.....<br>";
$sql = $dbh->query("SELECT Stadt,plz FROM plz WHERE plz LIKE '".$_POST["anfang1"]."%' ORDER BY plz asc");

while ($daten = $sql->fetchArray(SQLITE3_ASSOC)){
	echo"<table border='1'>";
	echo "<tr><td width='60' bgcolor=red>".$daten['plz']."</td><td width='160' bgcolor=yellow>".$daten['Stadt']."</td></tr></table>";}
}

?>
<script></script><!-- Hier ggf. JS-Code einfügen -->                         
</body>
</html>
 
Was bitteschön soll denn daran valide sein?
Und mit Return-Button meinte ich die Return-Taste!
Und nein: Habe den Link nicht verstanden....
Die Verbindung zur Datenbank klappt,die Abfragen auch. Logische oder Syntaxfehler liegen auch nicht vor;
jedes <tag> hat ein </tag>......
Also, was wo liegt denn jetzt die Invalidität!
P.S.: Soweit ich weiß fragt PHP nur Serverseitig ab. Müsste also auf Client-Seite eine Abfrage implementieren, ob die RETURN-Taste gedrückt wurde. Sofern das der Fall
ist,wird das php-Skript ausgeführt. Ist das der richtige Ansatz..??
 
Was bitteschön soll denn daran valide sein?
valide? viel. Invalid: html - Replacement for <center> - Stack Overflow

nein: Habe den Link nicht verstanden....
dann hast du ein gewaltiges problem und ich bete für dich, dass du das nicht öffentlich zugänglich einsetzt. stichwort sql-injection: MySQL-Injection und Datenmanipulation verhindern*-*MySQL/PHP-Skripte absichern und schützen*-*PC-Erfahrung.de


Müsste also auf Client-Seite eine Abfrage implementieren, ob die RETURN-Taste gedrückt wurde.
ja das geht nur clientseitig. hier hilft dir https://developer.mozilla.org/de/docs/Web/API/KeyboardEvent
 
Zurück
Oben