explode einzelne Daten aus DB

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

  • #16
    Habs abgeändert aber es ändert sich dadurch nichts am Ergebnis, wenn ich nach ganz normale Textfeldern suche funktioniert die Sache problemlos, aber wenn ich nach einem Feld suche mit arrayinhalt (in der DB steht z.b: Restaurant,Biergarten,Catering= und ich suche nun nach einem Datensatz der den Eintrag Biergarten enthält erscheint obengenannte fehlermeldung

    Kommentar


    • #17
      @wurzel

      die Fehlermeldung ist jetzt weg, aber dennoch erscheint kein Ergebnis, d.h. die Zeile in der etwas stehen müsste bleibt leer

      Kommentar


      • #18
        hab gerade gemerkt, wenn ich '$where' schreibe funktioniert nicht einmal mehr die Suche nach PLZ,, komischerweise erscheint dann die Fehlermeldung wie vorher

        You have an error in your SQL syntax near 'Achern' ' ORDER BY anz_name ASC' at line


        (Suchbegriff war Achern)

        Kommentar


        • #19
          muss das Suchfeld in der html-Datei (also im Suchformular) als array mit kategorie[] gekennzeichnet sein?

          Hab ich jetzt gemacht, aber es hat sich dadurch nichts geändert

          Kommentar


          • #20
            Tjaaaa ... du hast oben in der Where-Zusammenstellung ein
            $where.="anz_kategorie='".$_POST['anz_kategorie']."' AND";
            weiter unten benutzt du $_POST['anz_kategorie'] als Array ...

            Was meinst du, hat wohl where anz_kategorie='Array' zur Folge?

            besser:
            PHP-Code:
            if (!empty($_POST['anz_kategorie']) && count($_POST['anz_kategorie'])
              
            $where.="anz_kategorie in ('"implode("', '"$_POST['anz_kategorie'])."') AND"
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #21
              noch was: wenn überhaupt kein Parameter gesetzt ist, sieht deine Query so aus:

              SELECT * FROM anzeigen where ORDER BY anz_name ASC

              gibt auch einen Syntax Error ... mach aus dem

              $where=substr($where,0,strlen($where)-4);

              das hier:

              $where .= ' 1';

              noch besser ist natürlich der Code hier
              (nicht nur weil er von mir ist; er ist einfach kürzer, übersichtlicher und besser zu warten):
              PHP-Code:
              // Where-Definition zusammensetzen
              $fields = array('anz_plz''anz_ort''anz_preiskat',
                
              'anz_livemusik''anz_kueche''anz_freizeit''anz_rubrik'
              );
              $array_fields = array('anz_kategorie''anz_kategorie2');

              $where = array();
              foreach(
              $_POST as $name=>$wert)
                if (
              in_array($name$fields))
                  
              $where[] = "$name = '"
                    
              mysql_escape_string(stripslashes($wert)). "'";
                elseif (
              in_array($name$array_fields) && count($wert))
                  
              $where[] = "$name in ('"implode("', '"$wert). "')";
              $where_str = (count($where)
                ? 
              ' where 'implode(' and '$where)
                : 
              ''
              );

              $abfrage="SELECT * FROM anzeigen
                
              $where_str ORDER BY anz_name ASC"
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #22
                wenn ich das so mache kommt die fehlermeldung:


                Parse error: parse error in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 35

                (Zeile 35 ist:

                $where.="anz_kategorie in ('". implode("', '", $_POST['anz_kategorie'])."') AND";

                Kommentar


                • #23
                  Schau mal in Zeile 34 ... da wird ne Klammer zu wenig zu gemacht.
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #24
                    hab die Klammer reingemacht, aber keine Änderung im Ergebnis:

                    Bsp.:

                    ich geben in die Suchbegriffe plz: 77855 und Ort: Achern ein, dann funktioniert es

                    ich hab einmal ein echo aufs Ergebnis gemacht und es erscheint:

                    $abfrage hat den Wert: SELECT * FROM anzeigen WHERE anz_plz='77855' AND anz_ort='Achern' ORDER BY anz_name ASC
                    $where hat den Wert: anz_plz='77855' AND anz_ort='Achern'


                    gebe ich nun lediglich als Suchbegriff im Feld kategorie: Hotel-Restaurant ein, und lasse alle anderen Felder leer, dann erscheint (ACHTUNG: es gibt einen Datensatz in der Tabelle im Feld Kategorie, der diesen Wert enthält):

                    $abfrage hat den Wert: SELECT * FROM anzeigen WHERE ORDER BY anz_name ASC
                    $where hat den Wert: You have an error in your SQL syntax near 'ORDER BY anz_name ASC' at line 1

                    Woran kanns liegen??

                    Kommentar


                    • #25
                      @Titus


                      sorry, hatte Dein posting von 8:41 uhr total übersehen (war wohl wieder mal mit Blindheit geschlagen *g).

                      Habe nun den code wie unten aufgeführt geändert, aber jetzt liefert mir die Abfrage keine Ergebnisse. Liegt wohl daran, dass in der DB in den einzelnen Feldern etwas steht und die Abfrage so generiert ist, dass beim Abfragen die Felder leer waren.

                      Die gestellte Suchabfrage lautete. Suche nach dem Feld kategorie mit dem inhalt Hotel-Restaurant daraufhin enthält der $where-Wert folgendes:

                      $abfrage hat den Wert: SELECT * FROM anzeigen where anz_plz = '' and anz_ort = '' and anz_livemusik = '' and anz_kueche = '' and anz_freizeit = '' and anz_rubrik = '' ORDER BY anz_name ASC
                      $where hat den Wert: Array



                      code komplettes Script:

                      PHP-Code:

                      <?
                      // Copyright by M.Heizmann
                      // Hier keine Veränderungen vornehmen
                      // Datenbankverbindung

                      include("config.php");
                      include("db_connect.php");


                      // Datenbank auslesen


                      // Where-Definition zusammensetzen

                      $fields = array('anz_plz', 'anz_ort', 'anz_preiskat',

                        'anz_livemusik', 'anz_kueche', 'anz_freizeit', 'anz_rubrik'

                      );

                      $array_fields = array('anz_kategorie', 'anz_kategorie2');



                      $where = array();

                      foreach($_POST as $name=>$wert)

                        if (in_array($name, $fields))

                          $where[] = "$name = '"

                            . mysql_escape_string(stripslashes($wert)). "'";

                        elseif (in_array($name, $array_fields) && count($wert))

                          $where[] = "$name in ('". implode("', '", $wert). "')";

                      $where_str = (count($where)

                        ? ' where '. implode(' and ', $where)

                        : ''

                      );



                      $abfrage="SELECT * FROM anzeigen

                        $where_str ORDER BY anz_name ASC";



                      echo '<hr />$abfrage hat den Wert: '.$abfrage.'<br />';

                      echo '$where hat den Wert: '.$where.'<hr />';

                      $ergebnis=mysql_query($abfrage) or die(mysql_error());

                      // Ergebnisse ausgeben

                      echo "<html>";
                      echo "<head>";
                      echo "</head>";
                      echo "<body bgcolor=\"#EEECE4\" text=#000000>";
                      echo "<center>";
                      echo "<table border=0 cellspacing=1 width=800 bordercolor=#000000>";
                      echo "<tr><p><font size=-2 color=#000000 face=verdana><b>Nachfolgende Lokalitäten stimmen mit Ihrer Suchdefinition überein.<br>";
                      echo "Zur Detailansicht auf mehr... klicken !</font></p></tr>";
                      echo "<tr>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Bild</b></font></td>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Name</b></font></td>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Ort</b></font></td>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Kategorie</b></font></td>";        
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Kontakt</b></font></td>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Homepage</b></font></td>";
                              echo "<td align=center bgcolor=#C0C0C0><b><font color=#FFFFFF face=verdana size=+0>Details</b></font></td>";
                      echo "</tr>";


                      while(list($anz_id,$anz_datum,$anz_name,$anz_inhaber,$anz_strasse,$anz_plz,$anz_ort,$anz_land,$anz_staat,$anz_email,$anz_page,$anz_link,$anz_tel,$anz_fax,$anz_partner,$anz_kategorie,$anz_kategorie2,$anz_offen,$anz_preiskat,$anz_livemusik,$anz_stil,$anz_kredkarte,$anz_lieferservice,$anz_zimmerzahl,$anz_zimmerpreis,$anz_sitzplatz,$anz_nebenraum,$anz_ruhetag,$anz_seminar,$anz_biere,$anz_kueche,$anz_spezial,$anz_rubrik,$anz_freizeit,$anz_text,$anz_bild1,$anz_bild2,$anz_bild3,$anz_bild4,$anz_chiffre)=mysql_fetch_row($ergebnis)) { 
                      if ($anz_datum){
                                 ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $anz_datum, $dat);


                      }
                      echo "<tr align=center>";
                            echo "<td align=center><font color=#000000 face=verdana size=-2><img src='$anz_bild1' width=\"80\" height=\"60\"></font></td>";
                              echo "<td align=center><font color=#000000 face=verdana size=-2>$anz_name</font></td>";
                              echo "<td align=center><font color=#000000 face=verdana size=-2></font>$anz_ort</td>";
                              echo "<td align=center><font color=#000000 face=verdana size=-2></font>$anz_kategorie</td>";
                              echo "<td align=center><a href='../script/reply.php?anz_chiff=$anz_chiff&anz_name=$anz_name' target=details ONCLICK=window.open('','details','scrollbars=yes,width=600,height=480')><img src=../image/mail.gif width=17 height=14 border=0></a></td>";
                              echo "<td align=center><font color=#000000 face=verdana size=-2></font><a href='$anz_page' target='_blank'>$anz_page</a></td>";
                              echo "<td align=center><font color=#000000 face=verdana size=-2><a href='../script/detail.php?anz_name=$anz_name&anz_id=$anz_id' target=details ONCLICK=window.open('','details','scrollbars=yes,width=800,height=600')>mehr ...</a></font></td>";
                         echo "</tr>";
                               
                      }
                      echo "<tr><td><br><br><input type=button value=zurück onClick=history.back()></td></tr>";
                      echo "</table><br><br>";
                      echo "<td align=center><img src=\"../../images/teiler.jpg\" width=\"596\" height=\"25\"></td>";


                      echo "</center>";
                      echo "</body>";
                      echo "</html>";

                      // Datenbank schliessen

                      mysql_close( $link );

                      ?>
                      Was kann ich tun, damit ein Ergenis erscheint?
                      Zuletzt geändert von Martin5000; 25.02.2003, 18:55.

                      Kommentar


                      • #26
                        hab nochmal alles überprüft und festgestellt, dass ich in meiner Suchmaske einen Fehler hatte, wenn ich aber das obige Script ausführe erscheint die Fehlermeldung:

                        Warning: Bad arguments to implode() in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 36

                        Warning: Bad arguments to implode() in /mnt/ls1/12/696/00000010/htdocs/easy_classifieds/script/search.php on line 36
                        $abfrage hat den Wert: SELECT * FROM anzeigen where anz_plz = '77855' and anz_ort = '' and anz_kategorie in ('') and anz_kategorie2 in ('') and anz_preiskat = '' ORDER BY anz_name ASC
                        $where hat den Wert: Array

                        ----------------------------------------

                        line 36 ist die folgende:

                        $where[] = "$name in ('". implode("', '", $wert). "')";

                        Kommentar


                        • #27
                          PHP-Code:
                          print_r($wert); 
                          was bringt das?

                          bad arguments heißt imo dass mindestens einer der parameter falsch is und der erste sieht richtig aus *g*
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar

                          Lädt...
                          X