Erste oder letzte Datensatz der Datenbank andere werden ignoriert

hume1991

Erfahrenes Mitglied
Guten Tag zusammen,

nun muss ich schon wieder schreiben :D die Abfragen etc. sind in Ordnung.
Besitze nur noch ein kleines problemchen bezüglich Datensätze.

Es handelt sich um ein Suchfeld welches wenn z.B. die Firma eingetragen wird und gleich ist eine Meldung ausgegeben wird. Ansonsten nicht vorhanden. Das Problem besteht dass was ich festgestellt habe, den ersten Datensatz eingebe keine Meldung, Datensatz 2 etc. sobald ich aber den letzten Datensatz eingebe erscheint eine Meldung, es sollten aber für jeden Datensatz eine Meldung erscheinen, wenn die Bedingung erfüllt wird.

Hier mal mein PHP Code:

PHP:
$name = $_POST['firma'];
$datenbank = "SELECT firma FROM partnersuche";
$abfrage = mysql_query($datenbank);
while ($row = mysql_fetch_object($abfrage))
{
 $vergleich = $row->firma;
}

if ($_POST['Suchen'] == "Suchen")
if ($_POST['firma'] == $vergleich)
{
    echo "<p class=\"suche\">Die Firma $name ist in der Datenbank vorhanden!</p>";
}

else
{
if ($_POST['Suchen'] == "Suchen")
   {
       echo "<p class=\"suche\">Die Firma $name ist in der Datenbank nicht vorhanden!</p>";
   }
}
 
Du schreibst ein bisschen wirr, deshalb bin ich mir nicht sicher ob ich es so verstanden habe wie du es meinst.

Schau mal was so passiert:

PHP:
$name = mysql_real_escape_string($_POST['firma']);
$datenbank = "SELECT firma FROM partnersuche WHERE firma = '" .$name ."'";
$abfrage = mysql_query($datenbank);

if (isset($_POST['Suchen'])) {
    if(mysql_num_rows($abfrage) >= 1) {
        echo "Eintrag bereits vorhanden";
    } else {
        echo "Eintrag ist nicht vorhanden";
    }
}
 
Zuletzt bearbeitet:
Du machst innerhalb deiner while-Schleife einen vergleich. Am Ende der while-Schleife ist in $vergleich die letzte Firma drin. Mit dieser gehst du nachher im Script weiter.

Setze deine Ausgabe in die Schleife hinein damit für jede Firma eine Ausgabe erfolgt
 
Hallo hume1991,

PHP:
while ($row = mysql_fetch_object($abfrage))
{
  $vergleich = $row->firma;
}
Da landet immer nur der letzte gefundene Datensatz in deiner Variable $vergleich, egal wie viele gefunden wurden!
Deine Überprüfung if($_POST['firma'] == $vergleich) sollte mit in die Schleife.

Übrigens wenn du deinen ganzen Code in das if(isset($_POST['Suchen'])) { ... } hinein schreibst, wird die DB nicht abgefragt wenns gar nicht nötig wäre...

MfG

// war zu langsam, sorry :)
 
Zurück