explode einzelne Daten aus DB

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

  • explode einzelne Daten aus DB

    hallo Leute,

    habe in DB mittels implode Daetn in einem Feld mit der Bezeichnung anz_kategorie stehen, und zwar in der Form Name1,Name2,Name3,....

    ich möchte nun dieses Feld über eine Suchfunktion abfragen, und zwar soll der User aus mehreren Möglichkeiten wählen (Name1 oder Name2 oder....)

    Kann man das mit explode lösen, und wenn ja wie?

    bisher habe ich folgenden code:

    while(list($anz_id,$an_kategorie)=mysql_fetch_row($ergebnis)) {


    $kat=explode(",",$anz_kategorie);

    .......


    echo "<td align=center><font color=#000000 face=verdana size=-2></font>$kat</td>";

    Gruss

    Martin

  • #2
    hilft dir in_array weiter?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      sorry, hilft mir momentan noch nicht entscheidend weiter

      Kommentar


      • #4
        der user gibt z.b. "hasu" und "auto" ein. diese usereingabe hast du in deinem skript im array $_POST['gesucht'] stehen.
        PHP-Code:
        while(list($anz_id,$an_kategorie)=mysql_fetch_row($ergebnis))
        {
          
        $kat=explode(",",$anz_kategorie);
          for (
        $i=0;$i<count($_POST['gesucht']);$i++)
            if (
        in_array($_POST['gesucht'][$i],$kat)
            {
              
        $gefunden=true;
              break;
            }

        so in etwa? oder willst du was anderes?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          habe den code lt. Angabe verändert in

          Usereingabe:


          PHP-Code:
          if (!empty($HTTP_POST_VARS['anz_kategorie']))

            
          $where.="anz_kategorie='".$HTTP_POST_VARS['anz_kategorie']."' AND "

          PHP-Code:

          while(list($anz_id,$anz_kategorie)=mysql_fetch_row($ergebnis)) { 
          if (
          $anz_datum){
                     
          ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$anz_datum$dat);

          {
          $kat=explode(",",$anz_kategorie);
          for (
          $i=0;$i<count ($HTTP_POST_VARS['anz_kategorie']);$i++)
               if (
          in_array($HTTP_POST_VARS['anz_kategorie'] [$i],$kat)
               {
                         
          $katgef=true;
                         break;
               }
          }




          Der echobefehl für diese Zeile lautet:

          echo "<td align=center><font color=#000000 face=verdana size=-2></font>$katgef</td>";




          Es ersccheint folgende Fehlermeldung:

          Fatal error: Call to unsupported or undefined function in_array() in /home/strato/www/ho/www.ho......................./search.php3 on line 99

          Zur Verdeutlichung nochmals:


          1. In der DB stehen im feld anz_kategorie mehrere Werte durch , getrennt.

          2. Im Suchscript kann der User aus der Vielzahl der Werte einen einzigen aussuchen.

          3. Daraufhins soll das Feld anz_kategorie nach dem gewählten Wert auf sein Vorkommen durchsucht werden , und wenn er gefunden wird mittels echo-Befehl ausgegeben werden.

          Ich hoffen, dass ich mich verständlich machen konnte und mir jemand weiterhelfen kann.

          Bis dann

          Martin

          Kommentar


          • #6
            was für ne php-version hast du?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              php3

              Kommentar


              • #8
                und da willst du nicht updaten?

                naja, probier's mal damit
                PHP-Code:
                function in_array($needle,$haystack)
                {
                  foreach (
                $haystack as $key => $value)
                           if (
                stristr($value$needle))
                              return 
                true;
                  return 
                false;

                PHP3 is übrigens uralt, sicher dass du nicht vielleicht doch 4.x hast?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  mein provider bietet auch php 4 an, aber die file, die ich als Grundlage für mein prog habe sind alle *.php3.

                  Frage kann ich die 3er und 4er Version mischen?

                  Versteh zwar im Moment nur Bahnhof, versuchs aber gleich einmal mit dem neuen code, vielleicht bekomm ichs ja hin.

                  Danke

                  Martin

                  Kommentar


                  • #10
                    benenne die um in *.php, dann sollte es gehen

                    Oder hast du nen speziellen grund dafür, php3 zu nutzen?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      habe die Dateien und die Verweise innerhalb der Dateien von *.php3 in *.php umbenannt und den erstgeposteten code eingefügt:

                      nachfolgend einmal der komplette code

                      PHP-Code:
                      <?
                      // 
                      // Hier keine Veränderungen vornehmen
                      // Datenbankverbindung

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

                      // Löschen von alten Anzeigen

                      // include("expire.php");

                      // Datenbank auslesen

                      // echo '$HTTP_POST_VARS:<br />';

                      // var_dump($HTTP_POST_VARS);

                      // echo '<hr />$HTTP_POST_VARS:<br />';

                      // var_dump($HTTP_POST_VARS);

                      $where='';

                      if (!empty($HTTP_POST_VARS['anz_plz']))

                        $where.="anz_plz='".$HTTP_POST_VARS['anz_plz']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_ort']))

                        $where.="anz_ort='".$HTTP_POST_VARS['anz_ort']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_kategorie']))

                        $where.="anz_kategorie='".$HTTP_POST_VARS['anz_kategorie']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_kategorie2']))

                        $where.="anz_kategorie2='".$HTTP_POST_VARS['anz_kategorie2']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_preiskat']))

                        $where.="anz_preiskat='".$HTTP_POST_VARS['anz_preiskat']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_livemusik']))

                        $where.="anz_livemusik='".$HTTP_POST_VARS['anz_livemusik']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_kueche']))

                        $where.="anz_kueche='".$HTTP_POST_VARS['anz_kueche']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_freizeit']))

                        $where.="anz_freizeit='".$HTTP_POST_VARS['anz_freizeit']."' AND ";

                      if (!empty($HTTP_POST_VARS['anz_rubrik']))

                        $where.="anz_rubrik='".$HTTP_POST_VARS['anz_rubrik']."' AND ";

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

                      $abfrage="SELECT * FROM anzeigen WHERE $where 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);

                      {
                      $kat=explode(",",$anz_kategorie); 
                      for ($i=0;$i<count ($HTTP_POST_VARS['anz_kategorie']);$i++) 
                      if (in_array($HTTP_POST_VARS['anz_kategorie'] [$i],$kat) 

                      $katgef=true; 
                      break; 
                           }
                      }

                      }
                      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>$katgef</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 );

                      ?>
                      es erscheint folgende Fehlermeldung:

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


                      Zeile 100 ist das

                      {

                      vor
                      $katgef=true;

                      Kommentar


                      • #12
                        hast eine schließende runde klammer vergessen (zeile 98)

                        if ( in_array( ) )

                        du hast: if (in_array()
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Danke war wohl mal wieder zu schnell, und hab noch einen Fehler gefunden

                          in der Zeile

                          echo "<td align=center><font color=#000000 face=verdana size=-2></font>$katgef</td>";

                          muss es heissen

                          echo "<td align=center><font color=#000000 face=verdana size=-2></font>$anz_kategorie</td>";


                          Wenn ich nun z.B. nach PLZ suche erscheint das Formular mit den richtigen Einträgen

                          suche ich aber z.B. exklusiv im Feld kategorie, dann kommt

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

                          Woran kann das liegen?

                          Kommentar


                          • #14
                            kommtm ir irgendwie bekannt vor *g*

                            beim ersten mal lags glaub ich dadran, dass ich dir gesagt hab: "verwende $_POST"
                            das ging nicht, da es als PHP3 interpretiert wurde

                            PHP4 wird wahrscheinlich nix mit $HTTP_POST_VARS anfangen können
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              versuchs mal mit:

                              PHP-Code:
                              $abfrage="SELECT * FROM anzeigen WHERE '$where' ORDER BY anz_name ASC"
                              vorausgesetzt in where steht drin was drin stehen soll

                              gruss wurzel
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X