Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] While schleife in while schleife = nur ein datensatz?!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] While schleife in while schleife = nur ein datensatz?!

    Tach

    Hab nen Prob, und zwar hab ich ne schleife mit ner schleife drin. Irgendwie gibt die erste schleife aber nur einen datensatz aus (sind aber mehrere, wenn ich order by ASC mach ist ein anderer). Immer nur einen. Die zweite klappt ganz normal, also alle datensätze werden ausgegeben.

    Hier der Code:

    PHP-Code:
    <?php
                    $sql 
    'SELECT * FROM firma;';
                    
    $firmares mysql_query($sql) OR die(mysql_error());
                    while (
    $firma mysql_fetch_array($firmares)) {
                        echo 
    '<table width="590" border="0" cellpadding="0" cellspacing="0" align="center">'."\n";
                        echo 
    ' <tr>'."\n";
                        echo 
    '  <td colspan="5">[b]'$firma['firma'] .'[/b]</td>'."\n";
                        echo 
    ' </tr><tr>'."\n";
                        echo 
    '  <td colspan="5"></td>'."\n";
                        echo 
    ' </tr><tr>'."\n";
                        echo 
    '  <th width="30"  style="border: 1px solid #F3B35C">ANR</th>'."\n";
                        echo 
    '  <th width="200" style="border: 1px solid #F3B35C">Zeit</th>'."\n";
                        echo 
    ' </tr>'."\n";
                        
    $auftragres mysql_query('SELECT * FROM auftrag WHERE firma_id = '$firma['firma_id'] .' ORDER BY auftragsnr ASC;') OR die(mysql_error());
                        while (
    $auftrag mysql_fetch_array($auftragres)) {
                            echo 
    ' <tr bgcolor="#FFFFFF" onMouseOver="this.style.backgroundColor=\'#FFEFDA\'" onMouseOut="this.style.backgroundColor=\'#FFFFFF\'">'."\n";
                            echo 
    '  <td align="center" style="border: 1px solid #FFEFDA">'$auftrag['auftragsnr'] .'</td>'."\n";
                            echo 
    '  <td style="border: 1px solid #FFEFDA">'$auftrag['zeitdatum'] .'</td>'."\n";
                            echo 
    ' </tr>'."\n";
                        }
                        echo 
    '</table>'."\n";
    ?>
    Seht ihr da ein Fehler? (sorry wegen dem ganzen HTML geschnorchsel ...)

    mfg

  • #2
    Normalerweise treten so Fehler auf, wenn du in der inneren Schleife Variablen überschreibst, die als Bedingung für die äußere Schleife eingesetzt werden. Das scheint jetzt erst mal nicht der Fall zu sein. Was geben denn mysql_num_rows() aus? Sind vielleicht HTML Syntaxfehler drin, die dir Daten verschlucken? (dann mal im HTML-Quelltext schauen)

    Kommentar


    • #3
      Wo kommt plötzlich $row her?
      Außerdem sehe ich nichtmal, dass du die erste Schleife überhaupt schließt.
      Kann ja sein, dass du da was nicht mit kopiert hast.
      Jedenfalls hatte ich das Problem auch mal, das tritt auf, wenn du für $firmares und $auftragres die gleiche Variable nehmen würdest.
      Ist das wirklich das ganze Script? Wenn noch etwas anderes da ist, schicke das mal bitte.

      [edit]
      Sorry, ich hab geschrieben, als der andere Post kam.
      Schicke am besten mal einen Link.
      [/edit]

      Kommentar


      • #4
        habe das } nur vergessen mitzukopieren, sorry.

        Hab das ganze script mal raus aus der Seite und extra getestet (ohne Session im hintergrund). Da funktioniert es auch, muss also irgendwo direkt in der Seite evtl mit den Session ins Verbindung zu dem Fehler kommen.

        Variablen überschreiben tu ich ja nicht, hab ja extra 2 verschiedene Resultnamen. Kann mich auch irren, ich schau mir das nochmal genau an.

        Das $row hab ich raus, hab nen alten Eintrag ausversehen gepostet, aktuelle ist nun im Post.

        Sorry.

        --> ganze Script -->

        PHP-Code:
        <?php
            $rights 
        getRights();
            if(!
        in_array("aligo"$rights)) {
               
        no_rights();
            } else {
               switch(@
        $_GET['action']) {
                    case 
        "anzeige":
                        
        bestellungen_back();
                        break;
                    case 
        "status":
                        
        bestellungen_back();
                        break;
                    default:
                        
        //  ORDER BY firma ASC
                        
        $sql 'SELECT * FROM firma;';
                        
        $firmares mysql_query($sql) OR die(mysql_error());
                        while (
        $firma mysql_fetch_array($firmares)) {
                            echo 
        '<table width="590" border="0" cellpadding="0" cellspacing="0" align="center">'."\n";
                            echo 
        ' <tr>'."\n";
                            echo 
        '  <td colspan="5">[b]'$firma['firma'] .'[/b]</td>'."\n";
                            echo 
        ' </tr><tr>'."\n";
                            echo 
        '  <td colspan="5"></td>'."\n";
                            echo 
        ' </tr><tr>'."\n";
                            echo 
        '  <th width="30"  style="border: 1px solid #F3B35C">ANR</th>'."\n";
                            echo 
        '  <th width="200" style="border: 1px solid #F3B35C">Zeit</th>'."\n";
                            echo 
        '  <th colspan="2" style="border: 1px solid #F3B35C">Status</th>'."\n";
                            echo 
        '  <th width="20"  style="border: 1px solid #F3B35C"></th>'."\n";
                            echo 
        ' </tr>'."\n";
                            
        $auftragres mysql_query('SELECT * FROM auftrag WHERE firma_id = '$firma['firma_id'] .' ORDER BY auftragsnr ASC;') OR die(mysql_error());
                            while (
        $auftrag mysql_fetch_array($auftragres)) {
                                echo 
        ' <tr bgcolor="#FFFFFF" onMouseOver="this.style.backgroundColor=\'#FFEFDA\'" onMouseOut="this.style.backgroundColor=\'#FFFFFF\'">'."\n";
                                echo 
        '  <td align="center" style="border: 1px solid #FFEFDA">'$auftrag['auftragsnr'] .'</td>'."\n";
                                echo 
        '  <td style="border: 1px solid #FFEFDA">'$auftrag['zeitdatum'] .'</td>'."\n";
                                echo 
        '  <td style="border: 1px solid #FFEFDA">'$auftrag['status'] .'</td>'."\n";
                                echo 
        '  <td align="center" style="border: 1px solid #FFEFDA">[url="index.php?admin=bestellungen&amp;action=status&amp;id='$auftrag['auftragnr'] .'&amp'SID .'"]&auml;ndern[/url]</td>'."\n";
                                echo 
        '  <td align="center" style="border: 1px solid #F3E3E2">[url="index.php?admin=bestellungen&amp;action=anzeige&amp;id='$auftrag['auftragnr'] .'&amp'SID .'"][img]gfx/board.png[/img][/url]</td>'."\n";
                                echo 
        ' </tr>'."\n";
                            }
                            echo 
        '</table>'."\n";
                            
        main_back();
                            break;
                        }
                }
            }

        ?>

        Kommentar


        • #5
          Wo wird da jetzt bitte die Session gestartet?

          Kommentar


          • #6
            das wäre in der index.php, soll ich alle dateien posten? SInd recht viele :/

            index.php
            PHP-Code:
            <?php
                
            // error_reporting(E_ALL);
                
            session_start();
                if (isset(
            $_GET['action']) AND $_GET['action'] == "logout") { 
                    
            session_destroy(); 
                    
            header("Location: index.php");
                }

                require 
            'inc/config.php';
                require 
            '../phpmailer/class.phpmailer.php';

                @
            mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
                
            mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

                if(isset(
            $_POST['id'], $_POST['pw']) AND login_right(addslashes($_POST['id']), addslashes($_POST['pw']))) {
                    
            $_SESSION['ID'] = $_POST['id'];
                }

                
            $rights getRights();
            ?>

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

            <html>

            <head>
              <title><?php echo $title?></title>
              <link rel=stylesheet type="text/css" href="../css/admin.css">
              <script language="JavaScript" src="../js/all.js"></script>
              <script language="JavaScript">
                  <!--
                      function changecolor(theelement,color) {
                          theelement.style.backgroundColor = color;
                      }
                  //-->
              </script>
            </head>

            <body>



            <table width="729" height="500" border="0" cellpadding="0" cellspacing="0" align="center">
             <tr height="129">
              <td background="gfx/top.jpg"></td>
             </tr>
             <tr valign="top">
              <td background="gfx/main.jpg">
                   

                   <table border="0" width="729" cellpadding="0" cellspacing="0">
                    <tr>
                     <td width="10"></td>
                     <td width="90" valign="top"><?php include 'menu.php'?></td>
                     <td width="15"></td>
                     <td valign="top"><?php include 'main.php'?>
            </td>
                     <td width="15"></td>
                    </tr>
                   </table>
              </td>
             </tr>
             <tr height="9">
              <td background="gfx/bottom.jpg"></td>
             </tr>
            </table>

            </body>
            </html>

            login.php
            PHP-Code:
            <?php
                
            if (isset($_POST['submit'])) {
                    if(isset(
            $_POST['id']) AND $_POST['id'] == '0') {
                        echo 
            "<p class=\"error\">Keinen Benutzernamen ausgew&auml;hlt.</p>\n";
                    } elseif(!isset(
            $_SESSION['ID'])) {
                        echo 
            "<p class=\"error\">Ung&uuml;ltiges Password.</p>\n";
                    }
                }


                
            $sql "SELECT
                            ID,
                            name
                        FROM
                            admins
                        ORDER BY
                           name ASC;"
            ;
                
            $result mysql_query($sql) OR die(mysql_error());
                echo 
            "<form action=\""$_SERVER['PHP_SELF'] ."?"$_SERVER['QUERY_STRING'] ."\" method=\"post\">\n";
                echo 
            "  <select size=\"1\" name=\"id\" class=\"login\">\n";
                echo 
            "    <option value=\"0\" selected>-- Bitte w&auml;hlen --</option>\n";
                while(
            $row mysql_fetch_assoc($result)) {
                    echo 
            "    <option value=\""$row['ID'] ."\">".$row['name']."</option>\n";
                }
                echo 
            "  </select>\n";
                echo 
            "  <input type=\"password\" name=\"pw\" style=\"font-size:8pt\">\n";
                echo 
            "  <input type=\"submit\" name=\"submit\" value=\"Best&auml;tigen\" style=\"font-size:8pt\">\n";
                echo 
            "  <input type=\"reset\" name=\"reset\" value=\"Abbrechen\" style=\"font-size:8pt\">\n";
                echo 
            "</form>\n";


            ?>

            Kommentar


            • #7
              Und du sagst ohne Session funktioniert es?
              Aber du machst in deinem Script ja keinen Gebrauch von Sessions, nur für den Admin Link.

              Kommentar


              • #8
                habs sehr vereinfacht und mit

                PHP-Code:
                <?php
                    $firmares 
                mysql_query('SELECT * FROM firma;') OR die(mysql_error());
                    while (
                $firma mysql_fetch_array($firmares)) {
                        echo 
                '  <td colspan="5">[b]'$firma['firma'] .'[/b]</td>'."\n";
                    }
                ?>
                probiert. Geht auch nicht, muss irgendwo da drin stecken. Mit error_reporting(E_ALL) werden auch keine Fehler angezeigt. Find es komisch, dass es in nem eigenständigen Script (also nicht in der Seite) funktioniert. Benutz ja keine Variablen oder sonst was was ich schon mal definiert habe.

                Kommentar


                • #9
                  Schicke mir am besten mal einen Link, dann baust du oben folgendes rein:
                  PHP-Code:
                  <?php
                  if (isset($_GET["source"])) {
                  show_source("Dateiname");
                  }

                  ?>

                  Kommentar


                  • #10
                    omg habs raus, hatte nen break IN der while schleife anstatt nach der für des switch ... danke und sorry

                    Kommentar

                    Lädt...
                    X