Simon: Schleife für Suchfunktion

Hi,
würd gern eine Suchfunktion machen. Ansich funktionierts ja auch, nur wenn in der Datenbank 2 gleiche Begriffe stehen wird immer nur einer angezeigt.
Ist ja ansich auch ganz logisch wenn man sich mein Script anschaut.
Kann mir vielleicht jemand sagen wie ich das machen kann dass alle gefundenen Ergebnisse angezeigt werden?

<?php  
function search($suche) {  
$hostUrl = '';  
$userName = '';  
$password = '';  
$mysql_datetime = date('Y-m-d H:i:s');  
$connectID = mysql_connect($hostUrl, $userName, $password)  
  or die ("Tut mir leid, kann keine Verbindung zur Datenbank aufbauen");  
mysql_select_db("", $connectID)  
  or die ("Auswahl der Datenbank nich Möglich");  
$myDataID = mysql_query("SELECT * FROM tabelle WHERE Nachname = '$suche'" , $connectID)  
  or die ("Auswahl von Datenbank nicht möglich");  
return $myDataID;  
mysql_close($connectID);  
}  
  
  
if (@$_POST['searched']) {  
    $suche = $_POST['suche'];  
	$returnedRecord = search($suche);  
	$LastName = @mysql_result($returnedRecord,0,'Nachname');  
	$FirstName = @mysql_result($returnedRecord,0,'Vorname');  
    $id = @mysql_result($returnedRecord,0,'id');  
		echo "<a href=\"test.php?tcid=$id\">$LastName $FirstName</a>";  
}  
?>

MfG
Simon

  1. Hi,
    würd gern eine Suchfunktion machen. Ansich funktionierts ja auch, nur wenn in der Datenbank 2 gleiche Begriffe stehen wird immer nur einer angezeigt.
    Ist ja ansich auch ganz logisch wenn man sich mein Script anschaut.
    Kann mir vielleicht jemand sagen wie ich das machen kann dass alle gefundenen Ergebnisse angezeigt werden?

    <?php

    function search($suche) {
    $hostUrl = '';
    $userName = '';
    $password = '';
    $mysql_datetime = date('Y-m-d H:i:s');
    $connectID = mysql_connect($hostUrl, $userName, $password)
      or die ("Tut mir leid, kann keine Verbindung zur Datenbank aufbauen");
    mysql_select_db("", $connectID)
      or die ("Auswahl der Datenbank nich Möglich");
    $myDataID = mysql_query("SELECT * FROM tabelle WHERE Nachname = '$suche'" , $connectID)
      or die ("Auswahl von Datenbank nicht möglich");
    return $myDataID;
    mysql_close($connectID);
    }

    Ich habe es nicht getestet, dürfte aber funktionieren. Und probier das nächste mal php.net, dort ist dieses Beispiel auch gelistet.

    Mewes

    <?php
      function search($suche) {
        $hostUrl = '';
        $userName = '';
        $password = '';
        $mysql_datetime = date('Y-m-d H:i:s');

    $connectID = mysql_connect($hostUrl, $userName, $password)
          or die ("Tut mir leid, kann keine Verbindung zur Datenbank aufbauen");
        mysql_select_db("", $connectID) or die ("Auswahl der Datenbank nich Möglich");
        return mysql_query("SELECT * FROM tabelle WHERE Nachname = '$suche'" , $connectID)
          or die ("Auswahl von Datenbank nicht möglich");
        mysql_close($connectID);
      }

    if (@$_POST['searched']) {
        $suche   = $_POST['suche'];
        $records = search($suche);
        while ($record = mysql_fetch_array($records, MYSQL_ASSOC)) {
          $LastName  = $record['Nachname'];
          $FirstName = $record['Vorname'];
          $id        = $record['Vorname'];
          echo "<a href="test.php?tcid=$id">$LastName $FirstName</a>";
        }
      }
    ?>

    if (@$_POST['searched']) {
        $suche = $_POST['suche'];
    $returnedRecord = search($suche);
    $LastName = @mysql_result($returnedRecord,0,'Nachname');
    $FirstName = @mysql_result($returnedRecord,0,'Vorname');
        $id = @mysql_result($returnedRecord,0,'id');
    echo "<a href="test.php?tcid=$id">$LastName $FirstName</a>";
    }
    ?>

    
    >   
    > MfG  
    > Simon  
    > 
    
    1. $id        = $record['Vorname'];
      muss natürlich
       $id        = $record['id'];
      heißen. Mein Fehler (copy & paste).

      1. Ok danke,
        ich bekomme aber leider als Meldung:

        Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

    2. Guten Tag,

      $mysql_datetime = date('Y-m-d H:i:s');

      Ist wohl überflüssig, da nirgendwo in der Funktion verwendet.

      if (@$_POST['searched']) {

      Man sollte Warnungen nicht deaktiveren. Einerseits braucht man sie, um Fehler zu finden, andererseits ist der @-Operator unperformant.

      $suche   = $_POST['suche'];

      Das öffnet SQL-Injection Tür und Tor.

      $records = search($suche);
          while ($record = mysql_fetch_array($records, MYSQL_ASSOC)) {

      Man kann auch direkt search() aufrufen, anstatt in $records zwischenzuspeichern.

      $LastName  = $record['Nachname'];
            $FirstName = $record['Vorname'];
            $id        = $record['Vorname'];
            echo "<a href="test.php?tcid=$id">$LastName $FirstName</a>";

      Auch die Ausgabe sollte man entsprechen behandeln. Eventuell ist XSS oder CSRF möglich.

      Gruß
      Christoph Jeschke

      --
      Zend Certified Engineer
      Certified Urchin Admin
      1. »»     $suche   = $_POST['suche'];

        Das öffnet SQL-Injection Tür und Tor.

        »»

        Ich weiß, mir geht es hier aber nur grad um die Suchfunkion, den Rest später

        Auch die Ausgabe sollte man entsprechen behandeln. Eventuell ist XSS oder CSRF möglich.

        Kannst du etwas näher erklären ?

        1. Guten Tag,

          Ich weiß, mir geht es hier aber nur grad um die Suchfunkion, den Rest später

          Das ist _genau_ die richtige Einstellung.

          Auch die Ausgabe sollte man entsprechen behandeln. Eventuell ist XSS oder CSRF möglich.

          Kannst du etwas näher erklären ?

          Wenn du die Daten aus der Datenbank nicht angemessen an die neue Umgebung (HTML) anpasst, kann ein Angreifer bösartigen Code einbinden, z.B. JavaScript. Auch könnte ein argloser Nutzer versehentlich Zeichen mit Metabedeutung eingeben, z.B. doppelte Anführungszeichen, und damit den Ausgabekontext verändern.

          Ansonsten findest du bei der Suchmaschine deines Vertrauens umfangreiche Informationen zu beiden Stichwörtern.

          Gruß
          Christoph Jeschke

          --
          Zend Certified Engineer
          Certified Urchin Admin
          1. »» Das ist _genau_ die richtige Einstellung.

            Ich weiß. Mir haben auch schon oft die Leute davon abgeraten, nur ich wollt halt nur mal die Suche ansich hinbekommen.

            MfG
            Simon