php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.10.2005, 12:11  
Gast
 
Beiträge: n/a
Standard [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
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.10.2005, 12:22  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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)
Zergling-new ist offline  
Alt 28.10.2005, 12:24  
Gast
 
Beiträge: n/a
Standard

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]
 
Alt 28.10.2005, 12:27  
Gast
 
Beiträge: n/a
Standard

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;
                }
        }
    }

?>
 
Alt 28.10.2005, 12:29  
Gast
 
Beiträge: n/a
Standard

Wo wird da jetzt bitte die Session gestartet?
 
Alt 28.10.2005, 12:32  
Gast
 
Beiträge: n/a
Standard

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";


?>
 
Alt 28.10.2005, 12:44  
Gast
 
Beiträge: n/a
Standard

Und du sagst ohne Session funktioniert es?
Aber du machst in deinem Script ja keinen Gebrauch von Sessions, nur für den Admin Link.
 
Alt 28.10.2005, 12:47  
Gast
 
Beiträge: n/a
Standard

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.

 
Alt 28.10.2005, 12:48  
Gast
 
Beiträge: n/a
Standard

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

?>
 
Alt 28.10.2005, 12:48  
Gast
 
Beiträge: n/a
Standard

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


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
While schleife -> letzter durchgang Skazi PHP Tipps 2006 7 16.09.2006 00:11
Problem mit while schleife obi PHP Tipps 2006 6 31.08.2006 13:40
mysql_query verschmelzen zweier abfragen (while schleife) Buschdieb PHP Tipps 2006 10 15.07.2006 17:11
while schleife - spezial datensatz einblenden Buschdieb PHP Tipps 2006 2 09.04.2006 13:05
einen Datensatz in einer Schleife überspringen... madSoul PHP Tipps 2006 15 16.03.2006 14:32
while Schleife gibt nicht alle Daten aus PHP Tipps 2006 2 12.01.2006 19:24
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
resultausgabe mit while schleife in pdf dokument PHP Tipps 2004 2 23.09.2004 14:56
Nach while Schleife funzt nix mehr?! PHP Tipps 2004 15 25.08.2004 00:25
[Erledigt] probleme mit ner while schleife PHP Tipps 2004 5 23.07.2004 17:28
Prob mit While schleife JEGO PHP Tipps 2004 2 04.06.2004 12:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php while nur der erste datensatz, fetch_array nur ein datensatz, while schleife datensatz überspringen, php while schleife überspringen, nach while schleife order by

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.