Arraydurchlauf mit Gliederung

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

  • Arraydurchlauf mit Gliederung

    Eine Abfrage von Arraywerten soll bei bestimmten Positionen (4. u. 5.) jeweils eine entsprechende Überschrift ausgeben. Unter dieser sollen alle zutreffenden Positionen ausgegeben werden. Das klappt wenn nur eine Position abgefragt wird. Sobald, wie in diesem script, zwei Positionen abgefragt werden stimmt die Positionen nicht mehr. Was mache ich falsch?
    o|b|c|07.08.08|1|1
    tx|wx|cx|13.05.08|0|1
    u|b|z|10.06.08|0|
    pp|bz|cu|02.04.08|1|
    ooo|dd|cx|17.05.08|0|
    o|b2|c|07.08.08|1|1
    PHP-Code:
     $fp fopen($path.$file'w');
        foreach( 
    $result as $i=>$value )
        
    #    for ($i = 0; $i < $size; $i++)
        
    {

                
    $zeilen =  "<a href=\"".$result[$i][0]."\">".$result[$i][1]."</a>
                 <b>"
    .$result[$i][4]."</b> [".$result[$i][3]."] ".$result[$i][2]."<br>";

                 
    $titel "";
                 
    $h3a "<h3>";
                 
    $h3b "</h3>";
                 
    $z "$zeilen \n";
    // Frage 1
                    
    if(($result[$i][5] == 1))
                        {
                        if(!isset(
    $t1)  ){
                                        
    $titel $h3a."5. Position".$h3b;
                                        
    $t10;
                                        }
                        
    fputs($fp,$titel.$z);
                        }
    // Frage 2
                    
    if(($result[$i][4] == 1))
                        {
                        if(!isset(
    $t2)  ){
                                        
    $titel $h3a."4. Position".$h3b;
                                        
    $t2 0;
                                        }
                        
    fputs($fp,$titel.$z);
                        }
                    
        }
    fclose($fp); 
    Zuletzt geändert von janein; 07.04.2008, 00:47.

  • #2
    Wenn du die Einträge unter dem entsprechenden Titel haben willst, musst du entweder zweimal durch den Array gehen
    PHP-Code:
    $fp fopen($path $file'w');
    $format "<h3>%s</h3>";
    foreach (
    $result as $value ){
        if (isset(
    $value[5]) && $value[5] == 1){
            if (!isset(
    $t1)  ){
                
    fprintf($fp$format"5. Position");
                
    $t1 true;
            }
            
    fputs($fp"<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n");
    }
    foreach (
    $result as $value ){
        if (
    $value[4] == 1){
            if (!isset(
    $t1)  ){
                
    fprintf($fp$format"4. Position");
                
    $t1 true;
            }
            
    fputs($fp"<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n");

    oder speicherst die Einträge in zwei separten Strings und gibst sie erst am Schluss aus:
    PHP-Code:
    $pos4 $pos5 '';
    foreach (
    $result as $value ){
        if (isset(
    $value[5]) && $value[5] == 1){
            
    $pos5 .= "<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n";
        }
        if (
    $value[4] == 1){
            
    $pos4 .= "<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n";
        }
    }
    $fp fopen($path $file'w');
    if (
    strlen($pos5) > 0){
        
    fprintf($fp$format"5. Position");
        
    fputs($fp$pos5);
    }
    if (
    strlen($pos4) > 0){
        
    fprintf($fp$format"4. Position");
        
    fputs($fp$pos4);
    }
    fclose($fp); 
    Zuletzt geändert von H2O; 07.04.2008, 12:14.
    Gruss
    H2O

    Kommentar


    • #3
      An der fehlenden Klammer, jeweils am Ende liegt es wohl nicht, dass das Ergebniss Deines 1. Vorschlages auch nicht zum gewünschen Ergebnis führt. Es gibt doppelte und falsche Ergebnisse unter der ersten Position und die zweite Überschrift erscheint nicht.
      PHP-Code:
        $format "<h3>%s</h3>";

      foreach (
      $result as $value )
          {
          if ( 
      $value[5] == 1)
              {
              if (!isset(
      $t1)  )
                  {
                  
      fprintf($fp$format"5. Position");
                  
      $t1 true;
                  }
              
      fputs($fp"<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n");
              }
          }
      reset($result);

      foreach (
      $result as $value )
          {
          if (
      $value[4] == 1)
              {
              if (!isset(
      $t1)  )
                  {
                  
      fprintf($fp$format"4. Position");
                  
      $t1 true;
                  }
              
      fputs($fp"<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n");
              }
          } 
      Fragt sich nur warum das so ist ...

      Kommentar


      • #4
        Bitte für PHP Code die entsprechenden Code Tags des Forums benutzen. Würde ausserdem nicht schaden wenn du deinen Code ein bisschen einrücken würdest
        EDIT:

        Sorry für den Post, hast du ja gerade gemacht

        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


        • #5
          Es lag an der doppelt vergebenen var:
          PHP-Code:
          $t1 true
          Herzlichen Dank für die Ratschläge!

          Kommentar

          Lädt...
          X