Suchscript php/mysql

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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

    Comment


    • #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

      Comment


      • #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!!!
        Last edited by Spin; 29-06-2005, 22:23.

        Comment

        Working...
        X