array auslesen

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

  • array auslesen

    Hi liebe Leser und Poster,

    ich bin noch ziemlich neu in php und fest am lernen und kenn mich nicht mehr weiter aus. Ich habe schon das ganze forum durchsucht und finde leider keine passende antwort oder besser gesagt, nicht die richtige funktion. Es geht um folgendes und ich würd mich riesig über eine antwort von euch freuen.

    ich habe folgendes im formular:
    <input type=checkbox name='tag[]' value='1'>gestern
    <input type=checkbox name='tag[]' value='2'>heute
    <input type=checkbox name='tag[]' value='3'>morgen

    in der tabelle in der datenbank habe ich vier Felder:

    ID, tag, namen, date

    $query="select ID,tag,namen,date from table where tag='$tag' order by date DESC";
    $result=mysql_query($query) or die("internal Server error");
    while($row=mysql_fetch_array($result)){
    $ID=$row["ID"];
    $tag=$row["tag"];
    $namen=$row["namen"];
    $date=$row["date"];
    }
    mysql_close($link);
    ?>


    nun sollte es mir alle zeilen aus der tabelle schreiben die mit der angeklickten checkbox zusammenhängen. Ich schaff das leider nicht. Ich weiss nicht, wie ich die array schreiben soll.

    kann mir jemand helfen, bitte.

    Liebe Grüße
    Rikki

  • #2
    hi.

    das sollte die lösung sein.

    angenommen du hast mindestens einen wert in der übergabe, dann sie die query so aus.

    sql> select ID,tag,namen,date from table where tag in ('0','1','2') order by date DESC

    hast du keinen hacken drin, sollte das abgefangen werden und die query sieht dann so aus.

    sql> select ID,tag,namen,date from table order by date DESC

    hier nun noch das script. solltest du aber alles verstehen ...

    PHP-Code:
    <?php


    //    $tag = array (0,1,2,3,4);

        
    $temp "";
        
    $max_i count($tag);
        if (
    $max_i 0) {
          for (
    $i=0;$i<$max_i;$i++) {
            
    $temp.= ",'" $tag[$i] . "'";
          }
          
    $temp substr($temp1);
          
    $instring " where tag in (".$temp.") ";
        }
        else {
          
    $instring "";
        }


        
    // Zum anschauen... 
        
        //    echo "<pre>";
        //    echo $in_string . "\n";
        //    echo $temp. "\n";
        //    print_r($tag);
        //    echo "</pre>";


        // hier ist nun deine query...
        
    $query "select ID,tag,namen,date from table " $instring " order by date DESC"

    ?>
    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


    • #3
      hi

      Danke vielmals, ich werds gleich ausprobieren.

      Schöne Weihnachten :-)

      Liebe Grüße
      Rikki

      Kommentar


      • #4
        ich bekomme leider folgende fehlermeldung:

        Parse error: parse error, unexpected T_VARIABLE in /home//test/show.php on line 6

        Liebe Grüße
        Rikki

        Kommentar


        • #5
          PHP-Code:
          $instring count($tag)?(" where tag in (".implode(","$tag).")"):'';
          $query "select ID,tag,namen,date from table " $instring " order by date DESC"
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            @TBT
            braucht man die hochkommata nicht um jedes element von tag?
            ok. bei (int|float) kann ich das ja verstehen aber war ist mit strings?
            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
              leider habe ich die selbe Fehlermeldung immer noch.
              Abraxax, Dein Spruch passt ja genau zu mir :-)

              Kommentar


              • #8
                bei Zahlen brauch man keine Hochkommata, bei String natürlich.
                Dann müßte das so heißen

                PHP-Code:
                $instring count($tag)?(" where tag in ('".implode("','"$tag)."')"):''
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  @TBT
                  wusste ich's doch ...
                  hatte mich nur gewundert, warum du nur mit komma getrennt den evtl. string aber nicht verpackt hattest.

                  habe auch um das count noch ein >0 gemacht.....
                  und die klammern bei true weggenommen, braucht man ja nicht

                  @krikki
                  spruch.... tja, so kanns einem gehen....

                  ich habe den code-block noch einmal komplett geschrieben incl. der zeile von TBT . probier das mal aus.

                  PHP-Code:
                  <?php


                  //    $tag = array (0,1,2,3,4);

                      
                  $instring = (count($tag)>0) ? " where tag in ('".implode("','"$tag)."') " "";

                      
                  // Zum anschauen... 
                      
                      //    echo "<pre>";
                      //    echo $in_string . "\n";
                      //    print_r($tag);
                      //    echo "</pre>";


                      // hier ist nun deine query...
                      
                  $query "select ID,tag,namen,date from table " $instring " order by date DESC"

                  ?>
                  wenn das nicht klappen sollte, poste mal deinen code. aber bitte in PHP-tags verpasst,
                  damit man das besser lesen kann.

                  ich gehe aber davon aus, dass alles richtig ist. bzw. ich weiss das...
                  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


                  • #10
                    ich bin schon ganz konfus

                    bei mir klappt das nicht. was hab ich nur schon wieder falsch?

                    der string vom formular zur show.php lautet:
                    show.php?tag%5B%5D=1


                    <?php

                    include("main.php3");
                    $link=myconnect();

                    $instring = (count($tag)>0) ? (" where tag in ('".implode("','", $tag)."')") : "";

                    $query = "select ID,tag,namen,date from table " . $instring . " order by date DESC";

                    $result=mysql_query($query) or die("internal Server error");
                    while($row=mysql_fetch_array($result)){

                    $ID=$row["ID"];
                    $tag=$row["tag"];
                    $namen=$row["namen"];
                    $date=$row["date"];

                    }

                    mysql_close($link);

                    ?>


                    Vielen Dank für Deine Geduld :-)
                    Zuletzt geändert von krikki; 19.12.2002, 09:48.

                    Kommentar


                    • #11
                      was machen bei dir die ganzen _ da drin ?
                      Außerdem benutze bitte mal den Code Tag, wer soll denn das lesen?

                      Wieso heißt der Link show.php?tag%5B%5D=1 ???

                      sollte das nicht

                      show.php?tag=1 sein ?
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        Original geschrieben von TBT
                        was machen bei dir die ganzen _ da drin ?
                        Außerdem benutze bitte mal den Code Tag, wer soll denn das lesen?

                        Wieso heißt der Link show.php?tag%5B%5D=1 ???

                        sollte das nicht

                        show.php?tag=1 sein ?
                        @TBT
                        das %5B%5D ist nur das [] ....
                        er schreibt die daten ja in ein array. daher ja auch der post ...
                        das ist schon in ordnung so.

                        welche unterstriche meinst du?

                        @kirriki
                        ja. bitte auch jeden fall mal die code-tags verwenden.
                        [COLOR=red]da ist so ein button beim posten, da steht PHP drauf.[/COLOR]

                        schreibe auch mal ein
                        PHP-Code:
                        echo $query
                        mit in deinen code. nur um zu sehen, ob die query auch in ordnung ist.
                        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


                        • #13
                          die _ hats mir beim kopieren geschrieben - sorry - hab ich schon rausgenommen.

                          ich habe nach wie vor folgende fehlermeldung

                          Parse error: parse error, unexpected T_STRING in .... on line 5

                          und line 5 ist



                          PHP-Code:
                          $instring = (count($tag)>0) ? (" where tag in ('".implode("','"$tag)."')") : ""
                          danke für eure hilfe :-)
                          Zuletzt geändert von krikki; 19.12.2002, 10:48.

                          Kommentar


                          • #14
                            hast du auch mal das echo $query; gemacht?

                            schreibe auch diese zeile mal, statt der, die dir fehler bereitet hat.
                            PHP-Code:
                            $instring = (count($tag)>0) ? " where tag in ('".implode("','"$tag)."') " ""
                            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


                            • #15
                              ich habs

                              Nochmal hallo Ihr zwei!

                              Vielen , vielen Dank für Eure Hilfe,

                              ich habs inzwischen so gelöst - da fehlt jetzt nur noch wenn der user nichts auswählt,
                              aber das werd ich auch noch schaffen :-)

                              PHP-Code:
                               $i 0;
                              $str "(";
                              while (
                              $i < (count($tag)-1)) $str.=$tag[$i++].",";
                              $str.=$tag[$i].")";
                               
                              $query="select * from table where tag in $str order by date DESC"
                              so funktionierts einwandfrei.

                              Liebe Grüße und frohes Fest
                              Rikki

                              Kommentar

                              Lädt...
                              X