sql abfrage in ein "Formular"

  • Themenstarter Themenstarter puschelchen
  • Beginndatum Beginndatum
Jaaaaa Seit Gestern vielen Dank :P
Bin hier überwiegend unterwegs da man hier ruhig Fragen kann.
Naja und wie Filter ich nun die Ausgaben? wenn like wie = ist bringt Like ja auch Relativ wenig.
hmmm Aber wie filterst du dann die Ausgaben sonst? :/
Neeee in der suchmaske sind sonst keine Zeichen nur mich stört das er alle ausgibt weil was ist wenn ich kunde x suche un kunde von a-z angezeigt wird und ich dann erstma 100000 einträge durchforsten muss um denjenigen zu finden ^^

Und um mich zu korrigieren
PHP:
<b> ich bin FAST zufrieden Damit</b>
Heisst das mit der Suche muss ich noch einschränken und dann passts
 
Zuletzt bearbeitet:
LIKE bringt schon etwas, wenn man es richtig anwendet.

Stell dir vor du hast jetzt wirklich 100.000 Adressen in der Datenbank. Da gibt es sicher nicht nur einen Schmidt. Schreibt der sich jetzt aber mit "T", mit "D" oder mit "DT" am Schluss?
Wenn du also mit "name LIKE Schmid" suchst wird er nicht gefunden. Wenn du aber "name LIKE Schmi%" nimmst ist er in der Trefferliste enthalten.

Was bei dir die Trefferzahl so verfälscht ist die Tatsache das du alle Suchbegriffe mit OR verknüpfst.

Beispiel, es gibt
- Herrn Schmidt in der Hauptstrasse in Hamburg
- Frau Müller in der Hauptstrasse in München
- Familie Huber in der Nebenstrasse in Hamburg

Du suchst jetzt nach "name LIKE 'Schmid' OR strasse LIKE 'Hauptstrasse' OR ort LIKE 'Hamburg'"

Dann werden alle 3 Datensätze zurückgeliefert da entweder Schmid ODER Hauptstrasse ODER Hamburg richtig ist. Für diese Suche wäre es besser du würdest mit "AND" verknüpfen.

Bei einer anderen Suche kann es aber wirklich besser sein wenn du die Angaben mit ODER verknüpfst. Mach deshalb in die Suchmaske zwei Optionsbuttons. Der eine übergibt den Wert "OR" und der andere "AND". Diesen Wert baust du dann in die Abfrage ein. Dann kannst du beim Suchen selber entscheiden was du haben willst.
 
und wie übertrag ich das jetz auf POST ? also alle OR mit And austauschen is erledigt
Ausgabe gibts nich mehr Felder bleiben Leer meine Dateien sehn so aus also formular wie anfangs
und Tabelle.php
PHP:
<html>
<body>
<?php
error_reporting(E_ALL);
$rowKeys = array('Userid', 'Vorname', 'Nachname','Firma','Email','Telefon','Telefon2','Laufzeit','PCLizenzen','Seriennummer','DatumAktiv','DatumEndAktiv');
$row = array_fill_keys($rowKeys, '');
    $Host = "localhost";
    $User = "david";
    $Password = "a";
    $dbname = "ABMC-Datenbank";
    $tbl="Kunden";
    mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
    mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
    $sql  = "SELECT * FROM {$tbl} WHERE Userid LIKE '" .mysql_real_escape_string( $_POST["Userid"])."' AND";
    $sql .= " Vorname LIKE '" .mysql_real_escape_string(' $_POST["Vorname"]') ."' AND";
    $sql .= " Nachname LIKE '" .mysql_real_escape_string(' $_POST["Nachname"]') ."' AND";
    $sql .= " Firma LIKE '" .mysql_real_escape_string(' $_POST["Firma"]') ."' AND";
    $sql .= " Email LIKE '" .mysql_real_escape_string(' $_POST["Email"]') ."' AND";
    $sql .= " Laufzeit LIKE '" .mysql_real_escape_string(' $_POST["Laufzeit"] ') ."' AND";
    $sql .= " PCLizenzen LIKE '" .mysql_real_escape_string(' $_POST["PCLizenzen"]') ."' AND";
    $sql .= " Seriennummer LIKE '" .mysql_real_escape_string(' $_POST["Seriennummer"]') ."' AND";
    $sql .= " DatumAktiv LIKE '" .mysql_real_escape_string(' $_POST["DatumAktiv"]') ."' AND";
    $sql .= " DatumEndAktiv LIKE '" .mysql_real_escape_string(' $_POST["DatumEndAktiv"]') ."'";
    $result = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($result);
?>
<table border="1">
<tr><td>Userid </td>
<td>Vorname</td>
<td>Nachname</td>
<td>Firma</td>
<td>Email</td>
<td>Telefon</td>
<td>Telefon2</td>
<td>Laufzeit</td>
<td>PCLizenzen</td>
<td>Seriennummer</td>
<td>DatumAktiv </td>
<td>DatumEndAktiv</td>
</tr>
<?php
while($row = mysql_fetch_assoc($result))
{
?>
<tr>
<td><?php echo $row['Userid'];?></td>
<td><?php echo $row['Vorname'];?></td>
<td><?php echo $row['Nachname'];?></td>
<td><?php echo $row['Firma'];?></td>
<td><?php echo $row['Email'];?></td>
<td><?php echo $row['Telefon'];?></td>
<td><?php echo $row['Telefon2'];?></td>
<td><?php echo $row['Laufzeit'];?></td>
<td><?php echo $row['PCLizenzen'];?></td>
<td><?php echo $row['Seriennummer'];?></td>
<td><?php echo $row['DatumAktiv'];?></td>
<td><?php echo $row['DatumEndAktiv'];?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
meine Ergebnisse bleiben nun leer.
diese verflickste Tabelle... :/
 
Du benützt LIKE noch immer falsch:
1) Schmid
2) Schmidt
3) Schmit
4) Müller-Schmid

SQL:
name LIKE 'Schmid' //findet nur die Nummer 1

name LIKE 'Schmid%' //findet die Nummer 1 und 2

name LIKE 'Schmi%' //findet die Nummer 1, 2 und 3

name LIKE '%Schmid%' //findet die Nummer 1, 2 und 4
Bei dir muss es deshalb so

PHP:
$sql .= " Vorname LIKE '%" .mysql_real_escape_string(' $_POST["Vorname"]') ."'% AND";

oder so

PHP:
$sql .= " Vorname LIKE '" .mysql_real_escape_string(' $_POST["Vorname"]') ."%' AND";

aussehen.
 
Okay habs abgeändert Aber es geht nicht Tabelle bleibt leider leer
In der DB ist Derzeit ein Eintrag
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$_POST[\"Vorname\"]%' AND Nachname LIKE ' $_POST[\"Nachname\"]%' AND Firma LIKE ' at line 1

Ab un zu geht die Abfrage und dann bleibt sie leer is das normal? o.o
ah ok ne stimmt schon man muss das nur neu aufrufen denn beim zurückgehn verliert er die Sachen
 
Zuletzt bearbeitet:
Kannst du mal erklären was jetzt wann geht und was nicht.

Wenn du einen Fehler für die SQL-Anweisung erhältst, dann müsste dieser immer kommen und nicht nur manchmal (außer du hast jetzt nochmal was geändert!?).
 
Anstelle von den NULL Werten kannst du auch durch PHP ein geschütztes Leerzeichen (&nbsp;) oder sonst einen Hinweis ausgeben lassen:

PHP:
echo (is_null($variable) ? "&nbsp;" : $variable);

dann sieht deine Tabelle auch besser aus.
 
PHP:
<tr border="2" cellspacing="5" cellpadding="5">
<td><?php echo $row['Userid'];?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Vorname']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Nachname']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Firma']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Email']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Telefon']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Telefon2']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Laufzeit']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['PCLizenzen']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['Seriennummer']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['DatumAktiv']);?></td>
<td><?php echo (is_null($row) ? "&nbsp;" :$row['DatumEndAktiv']);?></td>
</tr>
so hab ichs abgeändert aber verändert hats nix o.o

geb ich Test ein kommt KEIN Datensatz da nicht alle Felder gefüllt sind
andere Datensätze wie z.b. Vruna sind alle datenfelder gefüllt gibt er sie aus?!
 
Zuletzt bearbeitet:
Zurück