[MySQL 4.0] Result Array Problem

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

  • [MySQL 4.0] Result Array Problem

    Hallo Leute,

    ich habe mich in der letzten Zeit mehr mit Flash beschäftigt und heute ist mal wieder mein erster php Tag und schon ist das Brett wieder da.

    Ich hole die Produktvorteile eines Produktes aus einer mysql DB:

    PHP-Code:
    // Vorteile
    $sql =     "SELECT advantage FROM products_advantages
    WHERE lang = '"
    .$language."' AND pid = '".$pid."'";

    echo 
    $sql// sieht ok aus

    $result1 mysql_query($sql);
       
    while(
    $advantage mysql_fetch_assoc($result1) ) {
        
    $advantages[] = $advantage;
    }; 
    Dann lasse ich mir die Vorteile ausgeben, und das sieht auch OK aus:

    PHP-Code:
    echo "<pre>";
    print_r($advantages);
    echo 
    "</pre>"
    Und bekomme:

    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    advantage] => blah0
            
    )

        [
    1] => Array
            (
                [
    advantage] => blah1
            
    )

        [
    2] => Array
            (
                [
    advantage] => blah2
            
    )


    Sieht auch richtig aus:

    Nur wie komme ich an die Vorteile in einer Schleife ran? Bin am verzweifeln. ich benötige die für eine XML Datei:
    Folgendes klappt nicht:

    PHP-Code:
    echo "<advantages>\n";
    // Hier kommen die Schleife für die Vorteile rein:
    for($i=0$i count($advantages); $i++) {
        echo 
    "<advantage>".$advantages[$i]."</adavntage>\n";

    Da bekome ich im html Quelltext nur:
    <advantage>array</advantage>
    <advantage>array</advantage>
    <advantage>array</advantage>
    Pickel ? Übergewicht ? Depressionen ?
    Brot, Kartoffeln und Milch sind Gift!
    http://www.paleofood.de

  • #2
    Machen wir's mal schrittweise

    PHP-Code:
    for($i=0$i count($advantages); $i++) {
        echo 
    "<advantage>".$advantages[$i]."</adavntage>\n";
        echo 
    '<pre>';print_r($advantages[$i]);echo '</pre>';

    das sollte dir helfen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Du weisst, was ein mehrdimensionaler Array ist ???
      PHP-Code:
      while($advantage mysql_fetch_assoc($result1) ) {
          
      $advantages[] = $advantage;
      }; 
      $advantage ist ein Array. $advantages aus --> du fügst einem Array ein weiters hinzu --> Zugriff: $advantage['$i'][0]

      Das mit der eins inst jetzt nur ein Beispiel. Du musst natürlich den entsprechenden Index reinknallen. In deinem Beispiel wohl so:
      PHP-Code:
      $ausgabe $advantage["$i"]["advantage"]; 
      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        So was einfaches. Das Brett ist nzun weg. Danke.
        Pickel ? Übergewicht ? Depressionen ?
        Brot, Kartoffeln und Milch sind Gift!
        http://www.paleofood.de

        Kommentar


        • #5
          Hi,
          ich wollte keinen neuen Thread aufmachen da dies hier eigentlich schon der Richtige ist ...
          Ich bastle ebenfalls an einer MySQL-PHP to XML rum.
          Nur happerts hier einfach am 2 dimensionalen Array...
          Ich versuche aus 2 Tabellen (link_kat(id,katname) link_bild(id,katid,file,bildtext) per php eine XML-Struktur zu generieren..

          Die XML sollte dann so aussehen:
          PHP-Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <gallery>
              <kategorie id="1" name="Die erste Kategorie">
              <bild katid="1" file="bild1.jpg"><![CDATA[Das ist ein schoenes Bild]]></bild>
              <bild katid="1" file="bild2.jpg"><![CDATA[Das Bild ist schoener]]></bild>
              <bild katid="1" file="bild3.jpg"><![CDATA[Das Bild 03]]></bild>
              <bild katid="1" file="bild4.jpg"><![CDATA[Das Bild 04]]></bild>
              <bild katid="1" file="bild5.jpg"><![CDATA[Das Bild 05]]></bild>
              </kategorie>
              <kategorie id="2" name="Hier steht die zweite Kategorie">
                  <bild katid="2" file="bild6.jpg"/>
                  <bild katid="2" file="bild7.jpg"><![CDATA[Das Bild davor hat keinen Untertitel]]></bild>
              </kategorie>
              <kategorie id="3" name="Alle guten Dinge sind 3">
                  <bild katid="3" file="bild8.jpg"><![CDATA[Das ist das einzige Bild]]></bild>
              </kategorie>
          </gallery>
          mein Ansatz in PHP (Anfänger ):


          PHP-Code:
          <?php

          // connection

          $query  "SELECT * FROM link_kat t1 INNER JOIN link_bild t2 WHERE t1.id = t2.katid";
          $result mysql_query($query);

          $nl "\r\n";

          echo 
          '<?xml version=\'1.0\' encoding=\'UTF-8\'?>'$nl;
          echo 
          '<gallery>' $nl;
          while (
          $ary mysql_fetch_assoc($result)) {
                      
          $arys[] = $ary;
                      for(
          $i=0$i count($ary); $i++) {
                      echo 
          "<bild>".$arys[$i]['file']."</bild>\n";
                      }
                }

          mysql_close($conn);
          ?>
          Als Ergebnis bekomm ich die "file"-Bilder alle doppelt und dreifach???
          Kann mir da bitte einer helfen ... Danke

          gruß.chris

          Kommentar

          Lädt...
          X