Daten aus DB über Array in phpscript einlesen

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

  • Daten aus DB über Array in phpscript einlesen

    Hallo Leute, (habe zwar eine ähnliche Frage schon mal gestellt, aber damals noch überhaupt nichts geblickt)

    ich übergebe aus einem html-Formular Daten in eine MySql Datenbank, und zwar aus einem Feld, das mehrere Einträge (multiple) zulässt.

    code des html-Formulars:

    <tr>
    <td> <p>Sonstiges</p>
    <p align="center"><font size="2">Mehrfachangaben m&ouml;glich</font></p></td>
    <td> <select name="sonst[]" size="3" multiple>
    <option value="Bar">Bar</option>
    <option value="SAT-TV">SAT-TV</option>
    <option value="Spielplatz">Spielplatz</option>
    <option value="Parkplatz">Parkplatz</option>
    <option value="Garage">Garage</option>
    <option value="Haustiere">Haustiere</option>

    </select> </td>
    </tr>


    nach Übergabe über das php-Script steht dann z.B. folgendes in der DB im Feld anz_sonst

    SAT-TV,Spielplatz,Parkplatz

    Ich möchte dem User nun die Möglichkeit geben in einem Suchformular auch in einem Feld, in dem er mehrfach auswählen kann, die Db zu durchsuchen (Bsp. er wählt Spielplatz und Parkplatz aus).

    Frage nun:

    1. wie muss das ganze im HTML-Code des Suchformulars aussehen (im Anschluss an das Suchformular wird ein php-script ausgeführt)

    2. und wie im php script

    bisher siehts im script so aus:

    PHP-Code:

    $abfrage
    ="SELECT * FROM anzeigen WHERE $where ORDER BY anz_bild1 DESC";
    $ergebnis=mysql_query($abfrage) or die(mysql_error());


    ......


    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_wasliefer,$anz_zimmerzahl,$anz_zimmerpreis,$anz_zimmerpreis2,$anz_zimmerpreis3,$anz_zimmerpreis4,$anz_sitzplatz,$anz_nebenraum,$anz_nebensitz,$anz_nebensitz2,$anz_ruhetag,$anz_seminar,$anz_biere,$anz_kueche,$anz_spezial,$anz_rubrik,$anz_freizeit,$anz_sonst,$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></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>";
             
             

    Wie Ihr seht muss im ersten Ergebnisscript (erst nach Klicken auf "mehr" im 2. script "details") noch nichts bezüglich anz_sonst angezeigt werden, aber bei der Ausgabe soll natürlich die vorgegebenen Angabe berücksichtigt sein (Eingrenzung der Suchergebnisse.

    Ich hoffe es ist noch einigermassen übersichtlich erklärt und ihr könnt damit was anfangen. Für Tipps wäre ich Euch sehr dankbar.

    Gruss

    Martin

  • #2
    ersetz mal das hier:

    PHP-Code:
     while(list($anz_id,$anz_datum,$anz_name,$anz_inhaber,$anz_strasse,$anz_plz,$anz_ort,$anz_land,$anz_s taat,$anz_email,$anz_page,$anz_link,$anz_tel,$anz_fax,$anz_partner,$anz_kategorie,$anz_kategorie2,$a nz_offen,$anz_preiskat,$anz_livemusik,$anz_stil,$anz_kredkarte,$anz_lieferservice,$anz_wasliefer,$an z_zimmerzahl,$anz_zimmerpreis,$anz_zimmerpreis2,$anz_zimmerpreis3,$anz_zimmerpreis4,$anz_sitzplatz,$ anz_nebenraum,$anz_nebensitz,$anz_nebensitz2,$anz_ruhetag,$anz_seminar,$anz_biere,$anz_kueche,$anz_s pezial,$anz_rubrik,$anz_freizeit,$anz_sonst,$anz_text,$anz_bild1,$anz_bild2,$anz_bild3,$anz_bild4,$anz_chiffre)=mysql_fetch_row($ergebnis)) { 
    durch ein array. das brauchst du doch nicht im ernst, oder?

    Kommentar


    • #3
      wieso soll ich das ersetzen? so wies ist funktioniert meine bisher generierte Abfrage fehlerfrei

      Kommentar


      • #4
        vielleicht solltest du deine abfrage bzw. deine datenbankstruktur neu überdenken.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Die Abfrage als solches, so wie sie jetzt ist funktioniert tadellos. Ich möchte lediglich noch zusätzlich dem User die Möglichkeit geben seine Suche noch mehr einzugrenzen. Das Problem ist nur, dass in der DB das feld anz_sonst als array mit z.B. 3 Werten steht, und ich nicht weiss wie man es macht, wenn der User nur 2 Werte bei der Suche angeklickt hat, dieses Feld in der Abfrage berücksichtigt wird.

          Kommentar


          • #6
            ein array in'ner DB? wie speicherst du das?
            was steht in der spalte drin?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              in der Spalte anz_sonst in der DB steht z.B. (da im Formular diese 3 Werte angeklickt waren)

              SAT-TV,Spielplatz,Parkplatz

              jetzt klickt der User im Suchformular aber nur Parkplatz an, dann soll der Datensatz im Ergebnis auch angezeigt werden, da ja dieses Kriterium im Feld steht.

              Kommentar


              • #8
                jetzt gibt es zwei möglichkeiten

                m1:
                via LIKE auf das feld bei WHERE gehen.

                oder

                m2:
                eine neue tabelle anlegen mit den referenzen und nur die id der referenz in dem feld ablegen. diese möglichkeit ist sauber.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Bin ich dann auf der richtigen Spur bei Möglichkeit M1 mit (funktioniert dies auch dann wenn die erste und dritte Möglichkeit angeklickt wurde?)


                  if (!empty($_POST['anz_sonst']))

                  $where.="anz_sonst LIKE'".$_POST['anz_sonst']."%' AND ";

                  Kommentar


                  • #10
                    jupp!

                    @abraxax erläutere mal M2

                    Kommentar


                    • #11
                      das % muss davon UND dahinter

                      PHP-Code:
                      where.="anz_sonst LIKE '%".$_POST['anz_sonst']."%' AND "
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Vielen Dank,

                        werds morgen gleich mal ausprobieren

                        Kommentar


                        • #13
                          Kleinigkeit übersehn


                          Aber dennoch:
                          Original geschrieben von TobiaZ
                          @abraxax erläutere mal M2

                          Kommentar

                          Lädt...
                          X