Suchscript php/mysql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suchscript php/mysql

    hallo,
    Ich kenne mich noch nicht so gut aus in PHP.
    Ich wollte einen suchscript schreiben dass daten aus einer mysql tabelle sucht und das ergebnis ausgibt:
    Es gibt eine personen-tabelle mit folgenden feldern: Personen_id, Anrede, Vorname, Nachname, Geburtrsdatum, Telefonnummer.

    bis jetzt habe ich
    PHP-Code:
    "SELECT * from Personen WHERE Personen_id='$Personen_id' OR Anrede='$Anrede
    OR Vorname='
    $Vorname' OR Nachname='$Nachname' OR Geb='$Geb' OR Tel='$Tel'"
    Aber mit dieser methode kann man ja nur entweder oder suchen. ich will aber zb. auch nach kombinationen suchen können.
    z.B. nach alle "Frauen" mit dem namen "Zach"

    gibt es vielleicht eine methode die mir dies ermöglicht?
    Hier ist der gesamte code der im body-tag steht:


    PHP-Code:
    <?
     if ($submit) {
          $sql = "SELECT * from Personen WHERE Personen_id='$Personen_id' OR Anrede='$Anrede' 
    OR Vorname='$Vorname' OR Nachname='$Nachname' OR Geb='$Geb' OR Tel='$Tel'";
          $result = mysql_query($sql,$connect);
          $menge = mysql_num_rows($result);
          list($Personen_id,$Anrede,$Vorname,$Nachname,$Geb,$Tel)
     = mysql_fetch_row($result);
          $y = substr($Geb, 0, 4); 
          $m = substr($Geb, 5, 2); 
          $d = substr($Geb, 8, 2); 
          $geboren = $d.".".$m.".".$y;
          
          if ($menge==0){
               echo "Keine Daten gefunden!";
          }
          else{
    ?>
              <table bordercolor="#000000">
                  <tr bordercolor="#000000">
                  <th>Nr.</th>
                  <th>Anrede</th>
                  <th>Vorname</th>
                  <th>Nachname</th>
                  <th>Geburtstag</th>
                  <th>Telefon</th>
                </tr>
    <?
                do{  
    ?>
                  <tr bgcolor="#FFFFFF">
                    <td><? echo $Personen_id ?></td>
                    <td><? echo $Anrede ?></td>
                    <td><? echo $Vorname ?></td>
                    <td><? echo $Nachname ?></td>
                    <td><? echo $geboren ?></td>
                    <td><? echo $Tel ?></td>
                  </tr>
    <?  
                 }while (list($Personen_id,$Anrede,$Vorname,$Nachname,$Geb,$Tel) 
    = mysql_fetch_row($erg));
                echo "</table>";
             }
        } 
        else {
    ?>
        <form action="<?php print($PHP_SELF); ?>" method="post">
          <table width="786" bgcolor="#FFFFFF">
             <tr>
               <th width="120">Personen_id:</th>
               <td width="132"><input name="Personen_id" type="text"></td>
               <th>Anrede:</th>
               <td>
                 <select name="Anrede" size="1" style="width:55">
                   <option value="5"></option>
                   <option value="Herr">Herr</option>
                   <option value="Frau">Frau</option>
                   <option value="Firma">Firma</option>
                   <option value="Familie">Familie</option>
                 </select>
               </td>
           <th>Vorname:</th>
           <td><input name="Vorname" type="text"></td>
           <th>Nachname:</th>
           <td><input name="Nachname" type="text"></td>
           <th>Geb:</th>
           <td><input name="Geb" type="text"></td>
           <th>Tel:</th>
           <td><input name="Tel" type="text"></td>
         </tr>
         <tr>
           <td><input class="button" name="reset" value="Zur&uuml;cksetzen" type="reset"></td>
           <td><input class="submit" name="submit" value="Suchen" type="submit"></td>
         </tr>
       </table>
     </form>
     <?
     }
     ?>
    (eigentlich stehen in der tabelle Personen 15 Felder, ich habe aus übersichtlichkeits-gründen nicht alle hier angeführt)

    ich hoffe ihr könnt mir helfen!
    danke!
    -spin
    Zuletzt geändert von Spin; 29.06.2005, 22:25.

  • #2
    Bitte Code umbrechen

    Mach es doch einfach so, dass du, falls das Feld einen Wert hat (empty) die Bedingung an den SQL String dranhängst


    Floriam
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      Hi,

      eine kombinierte Abfrage kannst du mit and lösen (anstelle von or).

      Folgendes hab ich bei mir eingebaut :

      <?php
      $sql = "SELECT y_achse FROM koordinaten where heim='5' and zentral='1'";
      $result = mysql_query($sql) or die (mysql_error());
      while ($row = mysql_fetch_row($result))
      {
      for ($b=0; $b<1; $b++)
      {
      $hmm = $row[$b];
      echo "$hmm";
      }
      echo "<br>";
      }
      ?>


      Mit diesem code erhalte ich alle y_achsen untereinander aufgelistet, bei denen in der Spalte heim eine 5 UND in der Spalte zentral eine 1 eingetragen ist

      Kommentar


      • #4
        Hallo,

        Danke für die antworten!

        ich hatte es eh mit empty bzw. jetzt mit strlen gemacht aber es hat nicht fuktioniert.

        PHP-Code:
          $abfrage "SELECT * FROM Personen WHERE 1='1'";
                if (
        strlen($Personen_id))
                   
        $abfrage .= " AND Personen_id = '$Personen_id'";
                if (
        strlen($anrede))
                   
        $abfrage .= " AND Anrede = '$anrede'";
                if (
        strlen($vorname))
                   
        $abfrage .= " AND Vorname = '$vorname'";
                if (
        strlen($nachname))
                   
        $abfrage .= " AND Nachname = '$nachname'"
        jetzt bin ich draufgekommen dass ich beim zeilenumbruch der abfrage das "space" vor AND vergessen habe.

        So etwas ist wirklich ärgerlich!!!

        aber vielen dank nocheinmal für die hilfe!!!
        Zuletzt geändert von Spin; 29.06.2005, 22:23.

        Kommentar

        Lädt...
        X