Ankündigung

Einklappen
Keine Ankündigung bisher.

Array nach Aufruf verschwindet

Einklappen

Unconfigured Ad Widget

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

  • Array nach Aufruf verschwindet

    Habe ein Problem mit einen Array dies Funktioniert bis zu einer Abfrage die
    an die Datenbank gesendet wird

    PHP-Code:
    <?PHP
        session_start
    ();
        require_once (
    '../../bibliotheken/funktion.export.php');
        
    $Connect=mysql_connect($Connector['Host'],$Connector['Benutzer'],$Connector['Passwort']);
        
    # Abfrage Erstellen Tabelle Suche nach Daten ie nicht gedruckt
        
    $SQL="SELECT * FROM bestellung_bestellung WHERE Druck='N'";
        
    # Abfrage an Datenbank schicken
        
    $Result=mysql_db_query($Connector['Base'],$SQL,$Connect);
        
    # die Zeilen der Abfrage Speichern
        
    $Zeilen=mysql_num_rows($Result);
        
    # Daten der Abfrage Auslesen
        
    WHILE ($ROW=MYSQL_FETCH_ARRAY($Result))
        {
            
    # Die ID auslesen
            
    $Bestell_ID    =$ROW['ID'];
            
    # Das Bestell_Array auf Einträge Prüfen
            
    $Z=count($Bestell_Array);
            
    # Wenn Bestell Array mehr als Null Einträge hat
            # einen Eintrag hinzufügen
            
    if ($Z>0)
            {
                
    array_push($Bestell_Array,$Bestell_ID);
            }
            
    # Wenn das Bestell Array noch Lee ist
            # dann das Array Erstellen
            
    else
            {
                
    $Bestell_Array=array($Bestell_ID);
            }
            
    # Abfrage Den Tabellen Eintrag als gedruckt updaten
            
    $SQL="UPDATE bestellung_bestellung SET Druck='J' WHERE ID='$Bestell_ID'";
            
    # Abfrage an die Datenbank schicken
            
    $Result_Update=mysql_db_query($Connector['Base'],$SQL,$Connect);
        }
        
    # Prüfen ob das Bestell Array richtig ist
        
    foreach ($Bestell_Array as $E)
        {
            echo 
    "Erstellen:$E<br>";
        }
        
    # weiter mit dem Script
    ?>
    Das Problem beginnt dann in der Zeile:

    $Result_Update=mysql_db_query($Connector['Base'],$SQL,$Connect);

    sobald ich diese Auskommentiere funktioniert es ohne Probleme

    weiß im Moment leider nicht weiter.

    Hoffe auf Hilfe.

    lg Peter
    Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr


  • #2
    sobald ich diese Auskommentiere funktioniert es ohne Probleme
    Schön, dann lass' sie einfach auskommentiert


    (Oder beschreibe mal, was eigentlich dein Problem ist - das hast du nämlich offenbar vergessen.)

    Kommentar


    • #3
      Und schreib' bitte
      Code:
      error_reporting(E_ALL);
      an den Anfang deiner Datei.

      Die Funktion mysql_db_query() ist im Übrigen veraltet und sollte nicht mehr verwendet werden. Alternative:
      Verwende PHP: mysql_select_db - Manual und PHP: mysql_query - Manual .
      http://hallophp.de

      Kommentar


      • #4
        Offenbar ja Danke

        Die Array Variable $Bestell_Array ist nicht mehr vorhanden

        bzw wenn die Zeile

        $Result_Update=mysql_db_query($Connector['Base'],$SQL_Update,$Connect);

        nicht auskommentiert ist

        Habe ich nach der Select Abfrage auch die Zeilen anzahl.
        und auch in der While Schleife eingebaute echos nach Variablen Zuweisungen
        Funktionieren auch

        erst wenn diese Zeile wieder Aktiv

        keine Anzeige der Echos in der While Schleife
        keine Zeilen Anzahl nach der Ersten Abfrage

        Das Update wird allerdings richtig ausgeführt

        Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr

        Kommentar


        • #5
          Das macht auf mich wenig Sinn, da dein Array nichts mit der Abfrage zu tun hat. Bitte error_reporting hochschrauben.

          keine Anzeige der Echos in der While Schleife
          keine Zeilen Anzahl nach der Ersten Abfrage
          Alle diese Ausgaben sind in deinem Code nicht vorhanden. Bitte immer vollständigen Code posten (per copy&paste), sonst können wir deinen Ausführungen nicht im Detail folgen.
          http://hallophp.de

          Kommentar


          • #6
            hier noch mal der wie ich ihn gerade verwende das Skript ist noch nicht
            Fertig die Array Variable wird dann entweder an ein anderes Skript übergeben
            oder noch im selben skript weiterverarbeitet je nachdem

            PHP-Code:
            <?PHP
                session_start
            ();
                
            error_reporting(E_ALL);
                require_once (
            '../../bibliotheken/funktion.export.php');
                
            $Connect=mysql_connect($Connector['Host'],$Connector['Benutzer'],$Connector['Passwort']);
                
                
            $SQL="SELECT * FROM bestellung_bestellung WHERE Druck='N'";
                echo 
            "SQL:$SQL<br>";
                
            $Result=mysql_db_query($Connector['Base'],$SQL,$Connect);
                echo 
            "Result:$Result<br>";
                
            $Zeilen=mysql_num_rows($Result);
                echo 
            "Zeilen:$Zeilen<br>";
                WHILE (
            $ROW=MYSQL_FETCH_ARRAY($Result))
                {
                    echo 
            "Schleife<br>";
                    
            # Die ID auslesen
                    
            $Bestell_ID    =$ROW['ID'];
                    
            # Das Bestell_Array auf Einträge Prüfen
                    
            $Z=count($Bestell_Array);
                    echo 
            "Z:$Z<br>";
                    
            # Wenn Bestell Array mehr als Null Einträge hat
                    # einen Eintrag hinzufügen
                    
            if ($Z>0)
                    {
                        
            array_push($Bestell_Array,$Bestell_ID);
                    }
                    
            # Wenn das Bestell Array noch Lee ist
                    # dann das Array Erstellen
                    
            else
                    {
                        
            $Bestell_Array=array($Bestell_ID);
                    }
                    
            # Abfrage Den Tabellen Eintrag als gedruckt updaten
                
                
            }
                
            # Prüfen ob das Bestell Array richtig ist
                
            foreach ($Bestell_Array as $E)
                {
                    echo 
            "Erstellen:$E<br>";
                }
                
                    
            $SQL_Update="UPDATE bestellung_bestellung SET Druck='J' WHERE Druck='N'";
                    
            # Abfrage an die Datenbank schicken
                    
            $Result_Update=mysql_db_query($Connector['Base'],$SQL_Update,$Connect);
                
            # weiter mit dem Script
            ?>
            Ausgabe:
            mit Auskommentierten Reporting All
            nicht Auskommentierten $Result_Update

            SQL:SELECT * FROM bestellung_bestellung WHERE Druck='N'
            Result:Resource id #10
            Zeilen:0

            Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\bestellung\export\drucken_vor.php on line 37
            nicht Auskommentierten Reporting All
            nicht Auskommentierten $Result_Update

            SQL:SELECT * FROM bestellung_bestellung WHERE Druck='N'
            Result:Resource id #10
            Zeilen:0

            Notice: Undefined variable: Bestell_Array in C:\xampp\htdocs\bestellung\export\drucken_vor.php on line 37

            Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\bestellung\export\drucken_vor.php on line 37

            nicht Auskommentierten Reporting All
            mit Auskommentierten $Result_Update

            SQL:SELECT * FROM bestellung_bestellung WHERE Druck='N'
            Result:Resource id #10
            Zeilen:5
            Schleife

            Notice: Undefined variable: Bestell_Array in C:\xampp\htdocs\bestellung\export\drucken_vor.php on line 19
            Z:0
            Schleife
            Z:1
            Schleife
            Z:2
            Schleife
            Z:3
            Schleife
            Z:4
            Erstellen:2
            Erstellen:3
            Erstellen:6
            Erstellen:7
            Erstellen:8
            Die echos sind jetzt nur mal da um zu prüfen
            Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr

            Kommentar


            • #7
              Vereinfache doch erst mal das hier, das ist nämlich unnötig kompiliziert:
              PHP-Code:
                      # Das Bestell_Array auf Einträge Prüfen
                      
              $Z=count($Bestell_Array);
                      
              # Wenn Bestell Array mehr als Null Einträge hat
                      # einen Eintrag hinzufügen
                      
              if ($Z>0)
                      {
                          
              array_push($Bestell_Array,$Bestell_ID);
                      }
                      
              # Wenn das Bestell Array noch Lee ist
                      # dann das Array Erstellen
                      
              else
                      {
                          
              $Bestell_Array=array($Bestell_ID);
                      } 
              Den ganzen Kram kannst du durch zwei Zeilen ersetzen -
              1. Initialisierung von $Bestell_Array als Array vor der while-Schleife,
              PHP-Code:
              $Bestell_Array = array(); 
              2. Anfügen eines neuen Elements an dieses Array in der Schleife mit der Syntax mit geschweiften Klammern,
              PHP-Code:
              $Bestell_Array[] = $Bestell_ID
              Damit wäre der Code schon mal um einiges übersichtlicher.

              Kommentar


              • #8
                Zitat von Lucifer Beitrag anzeigen
                Ausgabe:
                mit Auskommentierten Reporting All
                Nicht sinnvoll.

                error_reporting E_ALL ist dazu da, dass PHP dich auf Fehler in deinem Code hinweisen kann.
                Während der Entwicklung lass es als bitte immer auf E_ALL stehen!


                Und Scriptausgabe in [quote]-Tags zu posten ist auch nicht gut, weil dass das Zitieren erschwert, da beim Antworten diese Inhalte bereits herausgefiltert werden.


                Und jetzt mach bitte mal direkt nach der While-Schleife ein
                PHP-Code:
                var_dump($Bestell_Array); 
                damit man mal sehen kann, was in dieser Variablen zu dem Zeitpunkt wirklich vorliegt.


                Und dann erkläre uns bitte noch, wie die Zeile mit dem
                $Result_Update=mysql_db_query(...)
                aus der While-Schleife, in der sie vorher stand, ans Ende des Scriptes, noch hinter die foreach-Schleife, gerutscht ist.

                Wie das, wenn es noch hinter dem foreach steht, nämlich den davor stehenden Code beeinflussen soll, egal ob es nun auskommentiert ist oder nicht, ist vollkommen schleierhaft, das kann eigentlich gar nicht sein ...

                Kommentar


                • #9
                  Error Reporting ist jetzt drinnen

                  Das Array hab ich jetzt schon Umgebaut

                  var_dump ausgeführt

                  $Result_Update Auskommentiert

                  array(5) { [0]=> string(1) "2" [1]=> string(1) "3" [2]=> string(1) "6" [3]=> string(1) "7" [4]=> string(1) "8" } Erstellen:2

                  $Result_Update Nicht Auskommentiert

                  array(0) { }

                  Und dann erkläre uns bitte noch, wie die Zeile mit dem
                  $Result_Update=mysql_db_query(...)
                  aus der While-Schleife, in der sie vorher stand, ans Ende des Scriptes, noch hinter die foreach-Schleife, gerutscht ist.

                  Wie das, wenn es noch hinter dem foreach steht, nämlich den davor stehenden Code beeinflussen soll, egal ob es nun auskommentiert ist oder nicht, ist vollkommen schleierhaft, das kann eigentlich gar nicht sein ...
                  Dies habe ich nach hinten verlegt eben um zusehen ob es sich Auswirkt

                  Leider brachte dies keinen Erfolg.

                  denn nach meinen verständnis wird jede Zeile abgearbeitet
                  und das was abgeabeitet wurde kann auch nicht mehr beeinflusst werden
                  Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr

                  Kommentar


                  • #10
                    Zitat von Lucifer Beitrag anzeigen
                    denn nach meinen verständnis wird jede Zeile abgearbeitet und das was abgeabeitet wurde kann auch nicht mehr beeinflusst werden
                    Eben, deshalb ist das Problem auch nicht wirklich nachvollziehbar.

                    Tausche doch mal bitte mysql_db_query überall gegen mysql_query aus (beachte, dass du die verwendete Datenbank dabei dann vorher auswählen musst) - ich kann mir zwar eigentlich nicht vorstellen, dass das irgendeinen Einfluss hat, möchte es aber gerne ausschliessen können. (Und wie schon gesagt wurde, soll mysql_db_query ja schon seit langem nicht mehr verwendet werden.)


                    Davon abgesehen ist das Script, was du uns hier zeigst, aber auch wirklich 1:1 das, was du testest?
                    Nicht das da irgendwelche Variablen anders benannt sind, und sich dadurch gegenseitig überschreiben oder sowas ...

                    Kommentar


                    • #11
                      Wieso befindet sich in die Abfrage denn jetzt außerhalb der while- und auch noch nach der foreach-Schleife? Bitte realen Code posten! So wird das hier nichts!
                      http://hallophp.de

                      Kommentar


                      • #12
                        Es ist das Script was ich zurzeit Teste und das Eins zu Eins

                        PHP-Code:
                        <?PHP
                            session_start
                        ();
                            
                        error_reporting(E_ALL);
                            require_once (
                        '../../bibliotheken/funktion.export.php');
                            
                        $Connect=mysql_connect($Connector['Host'],$Connector['Benutzer'],$Connector['Passwort']);
                            
                        mysql_select_db($Connector['Base']);
                            
                        $SQL="SELECT * FROM bestellung_bestellung WHERE Druck='N'";
                            echo 
                        "SQL:$SQL<br>";
                            
                        $Result=mysql_query($SQL,$Connect);
                            echo 
                        "Result:$Result<br>";
                            
                        $Zeilen=mysql_num_rows($Result);
                            echo 
                        "Zeilen:$Zeilen<br>";
                            
                        $Bestell_Array=array();
                            WHILE (
                        $ROW=MYSQL_FETCH_ARRAY($Result))
                            {
                                echo 
                        "Schleife<br>";
                                
                        # Die ID auslesen
                                
                        $Bestell_ID    =$ROW['ID'];
                                
                        $Bestell_Array[]=$Bestell_ID;    
                            }
                            
                        var_dump($Bestell_Array);
                            
                        # Prüfen ob das Bestell Array richtig ist
                            
                        foreach ($Bestell_Array as $E)
                            {
                                echo 
                        "Erstellen:$E<br>";
                            }
                            
                        $SQL_Update="UPDATE bestellung_bestellung SET Druck='J' WHERE Druck='N'";
                            
                        # Abfrage an die Datenbank schicken
                            
                        $Result_Update=mysql_query($SQL_Update,$Connect);
                            
                            
                            
                        # weiter mit dem Script
                        ?>
                        Das Ändern der mysql_db_query in mysql_query brachte Leider keinen Erfolg
                        Es wird auch gleich am Anfang die DB Ausgewählt

                        Später soll dann noch eine PDF Erstellung in die Schleife kommen

                        Allerdings wenn ich jetzt die Probleme mit diesen UPDATE habe brauche ich diesen Teil auch nicht zu Integrieren
                        Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr

                        Kommentar


                        • #13
                          Zitat von Lucifer Beitrag anzeigen
                          Es ist das Script was ich zurzeit Teste und das Eins zu Eins
                          Dann ist das Problem so wirklich nicht nachvollziehbar.


                          Einzige noch mögliche Erklärung, die meine Phantasie hergibt, wäre, dass du die gezeigte Funktionalität mehrmals hintereinander aufrufst - und dann aber nach dem Update aus dem ersten Durchlauf die Query
                          PHP-Code:
                          $SQL="SELECT * FROM bestellung_bestellung WHERE Druck='N'"
                          im zweiten Durchlauf natürlich gar keine Daten mehr liefert, weil ja die Spalte Druck jetzt in allen Datensätzen 'J' enthält ...

                          Allerdings würde dann gar nicht wirklich ein Problem vorliegen, sondern es wäre einfach nur wieder mal ein Fall von „works as designed“.

                          Kommentar


                          • #14
                            Die Array Variable $Bestell_Array ist nicht mehr vorhanden

                            bzw wenn die Zeile

                            $Result_Update=mysql_db_query($Connector['Base'],$SQL_Update,$Connect);

                            nicht auskommentiert ist
                            Die Variable $Result_Update kannst du dir auch sparen. Das Update funktioniert auch ohne eine darauffolgende Zuweisung und eine Weiterverwendung ist aus deinem Codeschnipsel auch nicht ersichtlich. Vielleicht funktioniert es ja dann.

                            Ganz ehrlich, das wird hier nichts. Das Update hat keine Auswirkung auf dein Array, das ja bereits einige Zeilen zuvor erzeugt wird.
                            http://hallophp.de

                            Kommentar


                            • #15
                              Soll Heissen dieses Script sollte so wie es jetzt ist Funkttionieren

                              im letzten Beitrag gepostet

                              mal im Gedanken durchgehen

                              Zeile 5 $Connect=mysql_connect
                              Verbindung zum SQL Server herstellen

                              Zeile 6 mysql_select_db
                              Datenbank Auswählen

                              Zeile 7 $SQL="Select
                              Abfrage Erstellen die nachfragt welche nicht gedruckt wurden

                              Zeile 9 $Result=mysql_query
                              Abgfrage an die DB senden

                              Zeile 11 $Zeilen=mysql_num_rows
                              Feststellen wieviel Zeilen es gibt

                              Zeile 13 $Bestell_Array
                              Array erstellen

                              Zeile 14 While ($ROW
                              eine Schleife erstellen wo jede Zeile durchgelaufen wird

                              Zeile 18 $Bestell_ID
                              den Wert aus der Tabelle lesen

                              Zeile 19 $Bestell_Array[]=$Bestell_ID
                              Den ausgelesenen Wert in einem Array Speichern

                              Zeile 23 foreach
                              Schleife wo das Array Ausgegeben wird

                              Zeile 27 $SQL_Update
                              Update Abfrage wo alle nicht gedruckte den Status gedruckt erhalten

                              Zeile 29 $Result_Update
                              Die Update Abfrage an die DB senden


                              Nach Experten Meinung dieses Script sollte ohne Probleme Funktionieren
                              Manchmal aber nur Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr

                              Kommentar

                              Lädt...
                              X