Schleifenfehler bei MySQL Abfrage

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

  • Schleifenfehler bei MySQL Abfrage

    Ich bin mir nicht sicher, ob das hier das richtige Forum ist.
    Ich möchte mit dem unteren Script eine dynamisch erzeugte Tabelle erstellen. In der verschiedene Berichte dargestellt werden. Jeder Bericht hat eine Nummer, einen Namen und eine Beschreibung. Zusätzlich gibt es den Bericht alle paar Monate oder jeden Monat neu. Die Daten für die Tabelle kommen aus einer MySql Datenbank.
    Wenn der Bericht für den jeweiligen Monat verfügbar ist, soll ein Excelsymbol erscheinen und ein entsprechender Downloadlink zusammengefasst werden, wenn der Bericht für den jeweiligen Monat nicht verfügbar ist soll ein graues Kästchen erscheinen.
    Das Script läuft teilweise schon aber noch nicht so richtig.
    Es sieht im Moment so aus wie auf dem beigefügtem Bild.
    Wie man sieht passen die Kästchen noch nicht so richtig zu den Berichten,
    eigentlich müßten sie nur oben bei Staff numbers stehen.
    Wenn kein Kästchen vorhanden ist soll ein graues gesetzt werden auch das funktioniert noch nicht richtig.
    Die MySql querys müßten so eingentlich stimmen, kann ich das überhaupt so machen wie ich mir das gedacht habe?
    Ich arbeite mit einem Counter um zu schauen ob der Bericht für den jeweiligen Monat auch vorhanden ist. In der Datenbank steht dann z.B. für März eine 2 oder April eine 4.

    Danke schonmal im voraus,

    Gruss
    timsen

    PHP-Code:
        <table cellspacing = "0" cellpadding = "2" border = "1">
          <tr>             
            <td width = "8%" bgcolor="#e0e0e0"><center><b>Nr.</b></center></td>
            <td bgcolor="#e0e0e0"><center><b>Berichtsname</b></center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Jan</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Feb</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>M&auml;r</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Apr</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Mai</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Jun</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Jul</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Aug</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Sep</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Okt</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Nov</center></td>
            <td width = "4%" bgcolor="#e0e0e0"><center>Dez</center></td>
          </tr>
          <tr>
              
              <? 
                     while ($daten = mysql_fetch_array($berichte, MYSQL_ASSOC)) {
                ?>                         
                        <tr>
                        <td><center><? echo $daten['Nr'] ?></center></td>
                        <td><b><? echo $daten['Name'] ?></b>
                            <br><font size = 2><? echo $daten['Beschreibung'] ?></font></td>
           
                     <?         
                         $nr = $daten['Nr'];
                         $query = "select Pfad, d.Name, Monat from Dateien d, Berechtigungen b where '$loginname' = b.Login and b.Nr = d.Nr and d.Nr = '$nr' group by Monat" ;
                              $result = mysql_query($query)
                              OR die(mysql_error());     
              
                          while ($daten = mysql_fetch_array($result, MYSQL_ASSOC)) {
                                $link = $daten['Pfad'].'|'.$daten['Name'];                                    
                            if ($counter == $daten['Monat']) {
                    ?>                                      
                                <td rowspan=5 align = "center" valign = "middle"><a href="download.php?link=<? echo $link ?>"><img src="btnexcel.gif" border=0></a></td>                                                    
                    <?                
                        } else {
                    ?>
                                <td rowspan=5 align = "center" valign = "middle"><img src="btngrau.gif" border=0></a></td>                    
                                
                    <?        
                            }
                        }        
                    ?>                   
                    </tr>
            <? 
                                              
                 }    
            ?>        
            
          </tr>

  • #2
    Sorry Bild hat gefehlt.
    Angehängte Dateien
    Zuletzt geändert von timsen; 09.04.2003, 13:02.

    Kommentar


    • #3
      Ich bin mir nicht sicher, ob das hier das richtige Forum ist.
      ne. gehört nach sql...

      *VERSCHIEB*
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Hi,

        also wenn ich den code lese, stelle ich in rage, ob der überhaupt funktioniert, da ich gravierende Fehler sehe, die normalerweise das Script abbrechen und dann eine Errormeldung rausgeben. Beispiel (den Quellcode formatiere ich nicht!):

        PHP-Code:
                             $nr $daten['Nr'];
                             
        $query "select Pfad, d.Name, Monat from Dateien d, Berechtigungen b where '$loginname' = b.Login and b.Nr = d.Nr and d.Nr = '$nr' group by Monat" ;
                                  
        $result mysql_query($query)
                                  OR die(
        mysql_error()); 
        Da steht mitten in dem Code ein OR die(mysql_error()) ??!!

        Das kann so garnicht gehen, das Skript ist garnicht funktionsfähig!
        Aber nun mal zu deinem Problem.
        Du machst das zwar nichtig, du verschachtelst 2 Schleifen, dass muss man da machen, da du für jeden Bericht einen Monatsbericht hast.
        ABER was du nicht machen kannst, in der äusseren Schleife $daten einen Wert zuweisen und in der inneren Schleife tust du das auch nochmal, dass muss zwangsläufig in die Hose gehen.

        Das sind so 2 gravierende Sachen die ich so auf anhieb sehe. Ich würde sagen und besserst das mal aus und danach p'ostest du mal das ganze Skript, denn wo wird z. B. bei Dir der Variable $counter ein Wert zugewiesen?

        PHP-Code:
        if ($counter == $daten['Monat']) { 
        Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

        Kommentar


        • #5
          Ich glaube nicht das es in SQL gehört, denn das Statement scheint ja zu stimmen, bei ihm haperts ja an der Ausgabe der Daten.
          Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

          Kommentar


          • #6
            Original geschrieben von Pascal P.
            Hi,

            also wenn ich den code lese, stelle ich in rage, ob der überhaupt funktioniert, da ich gravierende Fehler sehe, die normalerweise das Script abbrechen und dann eine Errormeldung rausgeben. Beispiel (den Quellcode formatiere ich nicht!):

            PHP-Code:
                                 $nr $daten['Nr'];
                                 
            $query "select Pfad, d.Name, Monat from Dateien d, Berechtigungen b where '$loginname' = b.Login and b.Nr = d.Nr and d.Nr = '$nr' group by Monat" ;
                                      
            $result mysql_query($query)
                                      OR die(
            mysql_error()); 
            Da steht mitten in dem Code ein OR die(mysql_error()) ??!!

            Das kann so garnicht gehen, das Skript ist garnicht funktionsfähig!
            Mal wieder einer der bisher überhaupt nichts dazu gelernt hat ...
            [color=red]Warum bitte soll das nicht gehen???[/color]
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Original geschrieben von Pascal P.
              PHP-Code:
              $result mysql_query($query)
              OR die(
              mysql_error()); 
              Da steht mitten in dem Code ein OR die(mysql_error()) ??!!

              Das kann so garnicht gehen, das Skript ist garnicht funktionsfähig!
              ist doch unfug.

              wenn hinter dem mysql_query() ein semikolon stehen würde, dann stände das or die() sicher ein wenig blöd da rum.

              tut's aber nicht.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Du machst das zwar nichtig, du verschachtelst 2 Schleifen, dass muss man da machen, da du für jeden Bericht einen Monatsbericht hast.
                ABER was du nicht machen kannst, in der äusseren Schleife $daten einen Wert zuweisen und in der inneren Schleife tust du das auch nochmal, dass muss zwangsläufig in die Hose gehen.
                Aber $daten wird doch in dem Moment nicht gebraucht das müsste doch funktionieren.
                Ich habe die Variable auch mal testweise umbenannt, keine Veränderung.
                Die Variable $counter setze ich am anfang des Scripts auf den Wert "1".

                Kommentar


                • #9
                  Original geschrieben von timsen
                  Aber $daten wird doch in dem Moment nicht gebraucht das müsste doch funktionieren.
                  das ist nicht dein ernst, oder?

                  eine variable, die woanders einen wert zugewiesen bekommt, ist in gebrauch.


                  ich tue mein kaninchen in einen schuhkarton.
                  jetzt glaube ich aber, den schuhkarton im moment gar nicht zu gebrauchen, also tue ich mal eben eine schlange rein.
                  und dann mache ich eine viertelstunde später den deckel wieder auf, und wundere mich, dass die schlange mein kaninchen gefressen hat...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Okay ich habs einfach in daten2 geändert, allerdings bekomme ich wie oben schon beschrieben immer noch das gleiche Ergebniss.

                    Kommentar


                    • #11
                      @Goth, kann doch mal passieren das man etwas übersieht du kleiner Brüllaffe! Nobody is perfect!
                      Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

                      Kommentar


                      • #12
                        Hat vielleicht noch jemand eine Idee? Ich bekomme das alleine irgendwie nicht gebacken.

                        Kommentar

                        Lädt...
                        X