Kleines Problem mit foreach

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

  • Kleines Problem mit foreach

    Hallo,
    ich habe ein paar Seiten auf denen ich die Anzahl der Reihen und
    Spalten die nach einer DB Abfrage auf einer Seite ausgegeben
    werden sollen definiert werden.

    Das gleiche möchte ich jetzt mit einer foreach Schleife machen
    bekomme es nicht ganz hin.

    Ich übergebe über eine Seite Nummern mit Kommas getrennt über
    ein Formularfeld.

    Auf der nächsten Seite steht dieses Script:

    <table><tr><td>
    PHP-Code:

    // zerlegen der Nummern
    $string "$nummer";
    $array explode(",",$string);

    // mache für jede Nummer die Abfrage
    foreach($array as $nummer) {

    $result mysql_query("SELECT ..... where $nummer)

    // Anzahlen der gewünschten Reihen auf Seite    
    $reihen = 5;
    $ds = 1;


    while(
    $cat = mysql_fetch_array($result)) {

    echo "
    <tr .......>";

    if(
    $ds % $reihen == 0) 

    echo "
    </table><div style='page-break-before:always'>";
    echo "
    <table border='1' align='center'>";
    echo "
    <..........>";
    } // Ende if

    $i++;
    $ds++;
    } // Ende der while

    } // Ende foreach 
    Wie gesagt auf den Seiten ohne foreach funktioniert das so.

    Zweck der if ($ds ....) ist das nach 5 Reihen die Tabellenüberschriften
    neu plaziert werden und beim Druck die Ausgabe so erfolgt
    das eine vernünftige Seitendarstellung erfolgt.
    Vielen Dank

  • #2
    Fehlermeldungen?
    Wenn nein.. Was funktioniert nicht? Ist die Ausgabe nicht korrekt? Hast du dir den HTML Quellcode angesehen um ggf. fehlende Tags zu finden.

    Auf den ersten Blick würde diese Seite so anfangen

    <table><tr><td><tr ......><table border='1' align='center'>

    Ich würde als Browser nur schrott anzeigen.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Die Ausgabe im Browser finktioniert einwandfrei(bis auf den
      gewünschten Umbruch), ich wollte hier nur nicht das komplette Script schreiben.

      Das was nicht klappt das nach 5 Tabellenreihen die Überschriften neu
      plaziert werden sollen, und beim Druck nach 5 Reihen auf alle Fälle
      eine neue Seite angefangen wird.

      Bei meinen Seiten ohne foreach klappt alles einwandfrei.

      Hier dann das komplette Teil
      PHP-Code:

      if (isset($angebot) AND $angebot == "weiter")


      {
      echo 
      "<table border='1' align='center'>";
      echo 
      "<tr class='head'>
                  <td>Art.Nr.</td>
                  <td>&nbsp;</td>
                  <td width='250'>Artikelbezeichnung</a></td>
                  <td>VE</td>
                  <td width='100'>VK/Stk.</td>
                  <td width='100'>Bestand</td></tr>"
      ;

      $string "$artikelnummer";
      $array explode(",",$string);

      foreach(
      $array as $nummer) { 
          


      $result mysql_query("SELECT `ARTIKEL`.`ARTNR` as nummer, 
      `ARTIKEL`.`VEINHEIT`, `ARTIKEL`.`MATCH` as bezeichnung, 
      `ARTIKEL`.`WG`, `VKPREIS`.`PR01`, `ARTIKEL`.`BESTAND`, 
      `ARTIKEL`.`FLD02`
      FROM ARTIKEL, VKPREIS
      WHERE ARTIKEL.NUMMER = VKPREIS.ARTINR
      and ARTIKEL.ARTNR like '
      $nummer' and ARTIKEL.BESTAND > 0");


      $zahl=mysql_num_rows($result);
      //echo "$zahl<br>";
      //$Anzahl = count($array);
      //echo "$Anzahl";


      while($cat mysql_fetch_array($result)) {
          
      $reihen 5;
      $ds 1;


      // Nullen löschen bei VE
      $cat[1]=sprintf('%0.0f',$cat[1]);
      // Nullen löschen bei Preis
      $VK=sprintf('%0.2f',$cat[4]);
      // Nullen löschen bei Bestand
      $cat[5]=sprintf('%0.0f',$cat[5]);

      if (
      $i 2) { $row_color "#CCCCCC"; }
      else { 
      $row_color "#ffffff"; }

      echo 
      "<tr class='bestell' bgcolor=".$row_color.">
      <td align='center'>
      $cat[0]</td><td><img src='bilder/$cat[0].jpg' 
      width='120'></td><td>
      $cat[2]<br>$cat[6]</td><td 
      align='right'>
      $cat[1]</td><td align='center'>$VK &euro;</td><td 
      width='100' class='fett'>
      $cat[5]</td></tr>";

      if(
      $ds $reihen == 0) { 
      echo 
      "</table>
      <div style='page-break-before:always'>"
      ;
      echo 
      "<table border='1' align='center'>";
      echo 
      "<table border='1' align='center'>";
      echo 
      "<tr class='head'>
                  <td>Art.Nr.</td>
                  <td>&nbsp;</td>
                  <td width='250'>Artikelbezeichnung</td>
                  <td>VE</td>
                  <td width='100'>VK/Stk.</td>
                  <td width='100'>Bestand</td></tr>"
      ;
              }

      $ds++;
      $i++;
      }

      }

      echo 
      "</table>";

      Zuletzt geändert von netleader; 12.12.2005, 11:46.
      Vielen Dank

      Kommentar


      • #4
        Na wenn ein Query zu einer nummer nur 4 Datensätze hat wird deine Überschrift nicht neu gesetzt. Du solltest ggf. die wirklich relevanten Codeausschnitte mal mitliefern.
        Ich sehe hier nichts von überschriften. So kann man da nichts sagen weil der halbe code nicht wirklich falsch aus sieht :P
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          foreach zum 2ten - zählen

          Moin, ich hatte schon vor 2 Tagen eine kleine Frage bezugnehmend
          auf das mitzählen bei DB Abfragen gestellt. Habe mich dort vielleicht
          nicht richtig ausgedrückt und versuche es auf diesem Wege
          noch einmal.

          Ich übergebe aus einer Seite einen durch Kommas getrennten String
          von Nummern.

          Auf der Übernahmeseite zerlege ich den Sting folgendermaßen
          PHP-Code:
          $string "$artikelnummer";
          $array explode(",",$string); 
          danach frage ich die DB so ab
          PHP-Code:
          foreach($array as $nummer

          {
          $result mysql_query("SELECT ........)

          while(
          $cat = mysql_fetch_array($result)) 

          {
          echo "
          Ausgabe der Ergebnisse";
          }

          Die Abfrage an sich funktioniert, was ich jetzt möchte das ich die
          Datensätze mitzähle und nach DS 10 z.B ein Bild einfüge.

          Wenn ich nicht mit foreach arbeite bekomme ich das hin mit:

          PHP-Code:
          $reihen 5;
          $ds 1;

          // und dann in der Ausgabeschleife

          if($ds $reihen == 0)

          {
          mache das
          }
          $ds++; 
          Aber bei foreach steht der Zähler ja immer auf 1 -

          kurz gesagt ich bekomme das zählen nicht hin.


          Hat jemand einen Tipp für mich.
          Vielen Dank

          Kommentar


          • #6
            Modulo dürfte dein Freund sein...
            PHP-Code:
            $i 1;
            foreach(
            $array as $wert){
                if(
            $i%10 === 0){
                    echo 
            '<img src="mein_bild.jpg" />';
                }
                 
            //der Rest deines Codes
                
            [...]
                
            $i += 1;

            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


            • #7
              Besten Dank,

              mit Modulo hatte ich vorher auch schon experimentiert, aber wohl
              nicht die richtige Position gefunden - jetzt klappt es aber.


              Vielen DANK
              Vielen Dank

              Kommentar

              Lädt...
              X