??? ARRAY ???

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

  • ??? ARRAY ???

    Hi!
    Ich habe folgendes Problem:

    Ich will auf meiner Hp eine Link_Seite erstellen. Dazu habe ich folgendes array erstellt:

    ++++++++++++++++++++++++++
    $ar_lk = array(
    "news" => array(
    "prop" => array(
    "name" => "News",
    "url" => "#",
    "desc" => "",
    ),
    "cnn" => array(
    "name" => "CNN",
    "url" => "www.cnn.com",
    "desc" => "",
    ),
    "faz" => array(
    "name" => "FAZ",
    "url" => "www.faz.net",
    "desc" => "",
    ),
    ),

    "computer" => array(
    "prop" => array(
    "name" => "Computer-Links",
    "url" => "#",
    "desc" => "",
    ),
    "zdnet.de" => array(
    "name" => "ZD-Net Deutschland",
    "url" => "www.zd-net.de",
    "desc" => "",
    ),
    "zdnet.com" => array(
    "name" => "ZD-Net USA",
    "url" => "www.zd-net.com",
    "desc" => "",
    ),
    "chip" => array(
    "name" => "Chip.de",
    "url" => "www.chip.de",
    "desc" => "",
    ),
    ),
    "Shopping" => array(
    "prop" => array(
    "name" => "Shopping-Seiten",
    "url" => "#",
    "desc" => "",
    ),
    "amazon.de" => array(
    "name" => "Amazon.de",
    "url" => "www.amazon.de",
    "desc" => "",
    ),
    "amazon.com" => array(
    "name" => "Amazon.com",
    "url" => "www.amazon.com",
    "desc" => "",
    ),
    )
    );

    ++++++++++++++++++++++++


    Das klappt ja auch soweit. nun kommt die abfrage:

    ++++++++++++++++++++++++
    $anz_ges = count($ar_lk);
    $i=0;
    while ($i>$anz_ges) {

    echo ("<table><tr><td>$ar_lk[$i][prop][name]</td></tr></table>");

    $anz_lk = count($ar_lk[$i][0][0]);
    $j=0;
    while ($j>$anz_lk) {
    echo ("<table><tr><td><a href=$ar_lk[$i][$j][url] target=_self> $ar_lk[$i][$j][name] </a></td><td> $ar_lk[$i][$j][desc] </td></tr></table>");
    $j++;
    }
    $i++;
    };


    ++++++++++++++++++++++++

    das ganze funktioniert aber leider kein bisschen...

    Kann mir da vielleicht jemand weiterhelfen oder vielleicht sogar ne bessere loesung fuer meine Link-Seite geben?

    Danke schon mal!

    *tim*

  • #2
    Original geschrieben von Nubi
    das ganze funktioniert aber leider kein bisschen...
    Inwiefern?

    CAT Music Files

    Kommentar


    • #3
      kein bisschen eben... ;-)

      kein bisschen soll heissen, dass keine einzige tabelle geschrieben wird. es gibt aber auch keine fehlermeldung. im quelltext hinterher (von der fertig aufgebauten website kopiert) ist dann nur ne luecke, wo eigentlich die link-tabellen sein sollten... :-(

      Kommentar


      • #4
        $anz_ges = count($ar_lk);
        $i=0;
        while ($i>$anz_ges) {
        Man möge mich korrigieren falls ich falsch liege, aber initialisierst du deine Schleife nicht richtig? Ich meine, $ar_lk hat bestimmt eine Länge die größer als 0 ist (z.B. 3).
        Dann vergleichst du aber im while($i > $anz_ges) - was soviel heißt wie 0 > 3. Das kann ja dann nicht starten, dreh den Vergleichs-Operator mal probeweise auf < um.

        Kommentar


        • #5
          Mehreres:
          1.) wie smeagol bereits bemerkte muss es natürlich
          while($i<$array) heissen - in beiden schleifen

          2.) du vergibst strings als indizes versuchst dann aber
          numerische indizes zu verwenden
          z.b.: $ar_lk[$i][prop][name] --> kann natürlich nicht
          funktionieren.

          3.) wenn du auf strings als indizes verweist musst du diese
          auch als string kenntlichmachen, also nicht:
          $ar_lk[$i][prop][name] sondern $ar_lk[$i]["prop"]["name"]
          -->sonst sind das nominell konstanten, php geht zwar
          korrekterweise von strings aus, wenn keine
          konstanten definiert sind, gibt aber unter umständen
          eine fehlermeldung mit aus.

          4.) würd ich an deiner stelle den source etwas
          übersichtlicher formatieren - dann ist das ganze auch
          nicht so fehleranfällig ;-)

          5.) und letztens siehts korrigiert und funktionierend dann
          so aus:

          Code:
          <?
          $ar_lk = 
          array(
          	  array(
                         array("name" => "News","url" => "#","desc" => "",), 
          	 		   array( "name" => "CNN", "url" => "www.cnn.com", "desc" => "",), 
          	 		   array("name" => "FAZ","url" => "www.faz.net","desc" => "",) 
          	 		   ), 
          
          	 array( 
          		   	  		array("name" => "Computer-Links","url" => "#","desc" => "",), 
          					array("name" => "ZD-Net Deutschland","url" => "www.zd-net.de","desc" => "",), 
          					array("name" => "ZD-Net USA","url" => "www.zd-net.com","desc" => "",), 
          					array("name" => "Chip.de","url" => "www.chip.de","desc" => "",) 
          					), 
          	array(
          		   	  		array("name" => "Shopping-Seiten","url" => "#","desc" => "",), 
          					array("name" => "Amazon.de","url" => "www.amazon.de","desc" => "",), 
          					array("name" => "Amazon.com","url" => "www.amazon.com","desc" => "",) 
          					) 
          ); 
          
          
          $anz_ges = count($ar_lk);
          $i=0; 
          while ($i<$anz_ges)
            { 
              echo "<table><tr><td>".$ar_lk[$i][0]["name"]."</td></tr></table>"; 
          	$anz_lk = count($ar_lk[$i]); 
          	$j=1; // 1 deshalb weil dir sonst die erste zeile mit den gruppenüberschriften nochmals ausgegeben wird
          	while ($j<$anz_lk)
          	  { 
          	    echo "<table><tr><td><a href=".$ar_lk[$i][$j]["url"]." target=_self> ".$ar_lk[$i][$j]["name"]."</a></td><td> ".$ar_lk[$i][$j]["desc"]." </td></tr></table>"; 
          		$j++; 
          	  } 
          	$i++; 
            } 
          
          ?>

          Kommentar


          • #6
            Super! endlich lauft's!
            D A N K E an alle !!!

            aber ich habe jetzt schon wieder ein neues problem:
            meine link-liste sieht jetzt so aus:

            News
            CNN
            FAZ

            Computer-Links
            ZD-Net Deutschland
            ZD-Net USA
            Chip.de

            Shopping-Seiten
            Amazon.de
            Amazon.com

            Wie kann ich es denn hinbekommen, dass er die links in eine reihe schreibt und nach je 3 links in eine neue zeile geht?
            ich bekomme das naemlich 'nicht so wirklich' hin. nach zwei links wuerde das ja sicherlich mit dem gerade-ungerade prinzip funktionieren, aber bei dreien in einer zeile?

            thnx a lot...


            *tim*

            Kommentar


            • #7
              ob die division durch eine zahl einen rest ergibt kannst du mit % abfragen.
              geht die division glatt auf, kommt "0" als ergebnis zurück,
              wenn nicht kommt "1".
              Bsp:
              $a=15%3;
              echo $a;
              Ausgabe: 0

              $b=16%3;
              echo $b;
              Ausgabe: 1

              aber sowas findet man ganz leicht im php-manual unter dem stichwort "mathematische funktionen"

              grüsse,
              sonja

              Kommentar

              Lädt...
              X