Array´s machen was sie wollen.

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

  • Array´s machen was sie wollen.

    Hej,

    ich komme mit meinen Array´s nicht wieter, die machen was sie wollen.

    Hier mal die Datensätze:
    Code:
    id          title                                                          species   region
    1   Otter Habitat Network Europe (OHNE)                3            4
    16 Testprojekt mit Leerzeichen in den Textfelder  1,2,3         1
    Das auslesen mach ich so:
    PHP-Code:
    $res =mysql_query("SELECT * FROM osg_projekt");
    $num = mysql_num_rows($res);
    if($num==0)
        echo "<font face='$ff' size='2'>No Result found.</font>\n";

    while($row = mysql_fetch_array($res))
        {
    ?>
    ... HTML-Kram
    <?php
        $species
    [] = $row[species];
        
    $te count($species);
        for (
    $i=0$i<$te$i++)
            {
            
    $res1 mysql_query("select * from osg_species where id='$species[$i]'");
            while(
    $row1 mysql_fetch_array($res1))
                {
                echo 
    "$row1[species1] <i>($row1[species2])<br></i>";
                }
            }
    ?>
    ... HTML-Kram
    <?php
        $region
    [] = $row[region];
        
    $tf count($region);
        for (
    $j=0$j<$tf$j++)
            {
            
    $res2 mysql_query("SELECT * FROM osg_region WHERE id='$region[$j]'");
            while(
    $row2 mysql_fetch_array($res2))
                {
                echo
    "$row2[region1]<br>";
                }
            }
    ?>
    ... HTML-Kram
    Auswerfen tut er mir aber das:
    Code:
    id          title                                                          species   region
    1   Otter Habitat Network Europe (OHNE)                3            4
    16 Testprojekt mit Leerzeichen in den Textfelder   3,1         4,1
    Ich verstehe die Weld nicht mehr.
    Zuletzt geändert von Wotan; 12.08.2002, 19:46.
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    Post bitte mal das ganze hübscher -> ([code] [php])

    Und dann würde ich noch gerne wissen was Dir am ergebnis nicht gefällt, welches Ergebnis Du gerne hättest.
    Was schreibt denn das die Zahlen? Ist das $row2[region1]?

    Die erste while Schleife schließt Du die irgendwo im HTML-Kram?

    Kommentar


    • #3
      @hand

      Hier mal die Ausgabe als Bild.

      Inhalt von Spalte ist das was in der Datenbank steht
      Menge Array, sollte eigentlich die Menge sein die im Array steht.
      ID ist das was eigentlich aus der Spalte kommt.

      Nur genau das macht es nicht. Ich bekomme immer die Arrays aus dem vorhergehenden Datensatz mit in den nächsten Datensatz.

      Aufbau der wihle-Schleifen
      Code:
      while holen mir alle Datensätze aus der Tabelle1
          {
          Ausgabeanfang
          while hole mir den Inhalt der Array($species) aus der Tabelle2
              {
               Ausgabe
              }
          while hole mir den Inhalt der Array($region) aus der Tabelle3
              {
              Ausgabe
              }
          Ausgabeende
          }
      Angehängte Dateien
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        Code:
        :
        while holen mir alle Datensätze aus der Tabelle1
            {
            Ausgabeanfang
            DA WIRD ABER GLEICHZEITIG DER ARRAY ERST AUFGEBAUT
            while hole mir den Inhalt der Array($species) aus der Tabelle2
                {
                 Ausgabe
                }
            UND DA AUCH ....
            while hole mir den Inhalt der Array($region) aus der Tabelle3
                {
                Ausgabe
                }
            Ausgabeende
            }
        PHP-Code:
        // so isses jetzt    
            while($row = mysql_fetch_array($res)) {
                ?>
                ... HTML-Kram
                <?php
                $species
        [] = $row[species]; // Im 1. Durchlauf legst Du zbsp. 1 rein, im 2. zbsp 2, im 3. zbsp 3
                
        $te count($species);
                for (
        $i=0$i<$te$i++) { 
                                            
        // Im 1. Durchlauf liest Du die Spezies von 1
                                            // Im 2. Durchlauf liest Du die Spezies von 1 und 2 (1 hast ja schon)
                                            // Im 3. Durchlauf liest Du die Spezies von 1 und 2 und 3 (1 und 1 und 2 hast ja schon)
                                            // Willst Du durch den Array nicht ganz zum Schluß nur 1x durchschleifen?
                    
        $res1 mysql_query("select * from osg_species where id='$species[$i]'");
                    while(
        $row1 mysql_fetch_array($res1)) {
                        echo 
        "$row1[species1] <i>($row1[species2])<br></i>";
                    }
                }

        // oder vielleicht so ...
            
        while($row mysql_fetch_array($res)) {
                
        ?>
                ... HTML-Kram
                <?php
                
        // $species[] = $row[species]; // Nix in Array
                // $te = count($species);      // deshalb kannst das auch vergessen
                // for ($i=0; $i<$te; $i++) {  // und das auch *g*
                    
        $res1 mysql_query("select * from osg_species where id='$row[species]'");
                    while(
        $row1 mysql_fetch_array($res1)) {
                        echo 
        "$row1[species1] <i>($row1[species2])<br></i>";
                    }
                
        // } // das dann sowieso
        Zuletzt geändert von hand; 12.08.2002, 20:57.

        Kommentar


        • #5
          Original geschrieben von hand
          PHP-Code:
          // oder vielleicht so ...
              while($row = mysql_fetch_array($res)) {
                  ?>
                  ... HTML-Kram
                  <?php
                  
          // $species[] = $row[species]; // Nix in Array
                  // $te = count($species);      // deshalb kannst das auch vergessen
                  // for ($i=0; $i<$te; $i++) {  // und das auch *g*
                      
          $res1 mysql_query("select * from osg_species where id='$row[species]'");
                      while(
          $row1 mysql_fetch_array($res1)) {
                          echo 
          "$row1[species1] <i>($row1[species2])<br></i>";
                      }
                  
          // } // das dann sowieso
          Und damit bekomme ich nur jeweils die erste Stelle in Array als Datensatz ausgegeben. Aber ich brauch ja noch die anderen Stellen die durch ein Komma von einander getrennt sind.

          Habe mir mal mein Blödes Buch zur Hand genommen und folgenden Code ausprobiert:
          PHP-Code:
          <?php
          $tp 
          =array(10,20,30,40,50);
          for (
          $i=0;$i<=count($tp);$i++)
          {
          echo 
          "$tp[$i]<br>";
          }
          ?>
          Ergibt bei mir folgende Ausgabe:
          10
          20
          30
          40
          50
          Soweit ist das ja richtig, oder?
          Jetzt setze ich das ganze auf die Datenbankversion un:
          PHP-Code:
          <?php
          $species 
          = array($row[species]); // Inhalt von Species = 8,9
          for ($i=0;$i<=count($species);$i++)
          {
          echo
          "$species[$i]<br>";
          }
          ?>
          Jetzt denkst du er wird es so ausgeben:
          8
          9
          Denkste er gibt es so aus
          8,9
          Und damit kommt die Datenabnk nicht klar.
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            Aber es ist nunmal so, daß Du während des Array-Aufbaus bereits den Array abarbeitest. Magst nit mit dem Abarbeiten warten bis der array fertig aufgebaut ist? Du bist mitten in der Aufbauschleife.
            Im 1. Durchlauf "otto"
            Dann arbeitest Du den Array ab kommt "otto" raus

            2. Durchlauf "quaxi"
            Dann arbeitest Du den Array ab kommt "otto" "quaxi" raus

            3. Durchlauf "gummi"
            Dann arbeitest Du den Array ab kommt "otto" "quaxi" "gummi" raus

            Am Ende hast Du "otto" "otto" "quaxi" "otto" "quaxi" "gummi" ausgegeben anstatt vermutlich "otto" "quaxi" "gummi"
            PHP-Code:
            // so isses jetzt    
                while($row = mysql_fetch_array($res)) {
                    ?>
                    ... HTML-Kram
                    <?php
                    $species
            [] = $row[species]; // Im 1. Durchlauf legst Du zbsp. 1 rein, im 2. zbsp 2, im 3. zbsp 3
                    
            $te count($species);
                    for (
            $i=0$i<$te$i++) { 
                                                
            // Im 1. Durchlauf liest Du die Spezies von 1
                                                // Im 2. Durchlauf liest Du die Spezies von 1 und 2 (1 hast ja schon)
                                                // Im 3. Durchlauf liest Du die Spezies von 1 und 2 und 3 (1 und 1 und 2 hast ja schon)
                                                // Willst Du durch den Array nicht ganz zum Schluß nur 1x durchschleifen?
                        
            $res1 mysql_query("select * from osg_species where id='$species[$i]'");
                        while(
            $row1 mysql_fetch_array($res1)) {
                            echo 
            "$row1[species1] <i>($row1[species2])<br></i>";
                        }
                    }
            PHP-Code:
            <?php
            $species 
            = array($row[species]); // Inhalt von Species = "8,9"
            for ($i=0;$i<=count($species);$i++)
            {
            echo
            "$species[$i]<br>"// Wieso soll da nicht "8,9" rauskommen -> Array hat EIN Element und nicht 2 Elemente oder ?
            }
            ?>
            // ....
            <?php
            $species 
            = array($row[species]); // Inhalt von Species = "GUMMI"
            for ($i=0;$i<=count($species);$i++)
            {
            echo
            "$species[$i]<br>"// kommt ja auch "GUMMI" raus
            }
            ?>

            Kommentar


            • #7
              In meiner Datenbank steht in der Spalte species zu diesem Datensatz 8,9. Also zwei Elemte erstes 8 zweites 9.
              Jetzt will ich mir die ID aus der Tabelle osg_species mit der ID 8 und 9 holen und sie ausgeben lassen.

              Das Array ist doch schon fertig wird doch fertig aus der Dtaenbank geholt. Es brauch doch nicht noch aufgebaut werden, oder habe ich jetzt einen Denkfehler?

              Ist doch ähnlich diesem Script
              PHP-Code:
              <?php
              $tp 
              =array(10,20,30,40,50); // Fertig bestückt, aus der Tabelle würde jetzt kommen 8,9
              for ($i=0;$i<=count($tp);$i++)
              {
              echo 
              "$tp[$i]<br>";// hier erfolgt doch nur die Ausgabe aus dem Array, spricht meine ID´s 8 und 9.
              }
              ?>
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #8
                STOP Jetzt verstehe ich was Du meinst. Ich muß überlegen ....

                Kommentar


                • #9
                  *quiiiiiiiiiiiiitsch*
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php
                    $var 
                    "8,9";
                    $tp =array($var); // Das kommt rüber wie array("8,9") SHIT

                    $tp =array(8,9); // und so willst es haben
                    for ($i=0;$i<=count($tp);$i++)
                    {
                    echo 
                    "$tp[$i]<br>";// hier erfolgt doch nur die Ausgabe aus dem Array, spricht meine ID´s 8 und 9.
                    }
                    ?>
                    Ich denke ....

                    Kommentar


                    • #11
                      PHP-Code:
                      <?php
                      $var 
                      "8,9";
                      $species explode(",",$var); // Inhalt von Species = 8,9
                      for ($i=0;$i<=count($species);$i++) {
                          echo
                      "$species[$i]<br>";
                      }
                      ?>
                      PHP-Code:
                          while($row = mysql_fetch_array($res)) {
                              ?>
                              ... HTML-Kram
                              <?php
                              $species 
                      explode(",",$row[species]);
                              
                      $te count($species);
                              for (
                      $i=0$i<$te$i++) { 
                                  
                      $res1 mysql_query("select * from osg_species where id='$species[$i]'");
                                  while(
                      $row1 mysql_fetch_array($res1)) {
                                      echo 
                      "$row1[species1] <i>($row1[species2])<br></i>";
                                  }
                              }
                      ...

                      Kommentar


                      • #12
                        doppel Post * lösch *
                        *winks*
                        Gilbert
                        ------------------------------------------------
                        Hilfe für eine Vielzahl von Problemen!!!
                        http://www.1st-rootserver.de/

                        Kommentar


                        • #13
                          ich füll erstaml den Magen, damit vielleicht die Kopfschmerzen weg gehen, während du denkst. Das hört man übrigs bis nach Berlin, das Denken.
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #14
                            Bin schon fertig mit denken ....

                            Kommentar


                            • #15
                              *klatschvorKopf* *Auer*

                              Mit implode habe ich vorhin schon gearbeitet. Ging aber nicht richtig. ich probiers mal asu und melde mich gleich wieder.
                              *mampf schmatz*
                              *winks*
                              Gilbert
                              ------------------------------------------------
                              Hilfe für eine Vielzahl von Problemen!!!
                              http://www.1st-rootserver.de/

                              Kommentar

                              Lädt...
                              X