Ankündigung

Einklappen
Keine Ankündigung bisher.

Array nach Aufruf verschwindet

Einklappen

Neue Werbung 2019

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

  • Lucifer
    hat ein Thema erstellt Array nach Aufruf verschwindet.

    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

  • Lucifer
    antwortet
    Eine kurze Frage noch dieses Script sollte so wie es oben steht eigentlich ohne Probleme funktionieren oder?

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    Zitat:
    Zitat von Lucifer Beitrag anzeigen
    Ablauf:

    Menu aufruf "Bestellungen Drucken"
    Anzeige der nicht gedruckten Bestellungen
    Und direkt danach das Update, so wie in deinem gezeigten Code zu sehen, ja?
    Erst mit Aufruf von diesen gezeigten Skript wird dieses Update durchgeführt nicht vorher

    Zitat:
    Link mit weiterleitung an dieses Skript wo dann eine PDF erzeugt werden soll
    Mit welchen Daten arbeitet dieses Script?
    Bekommt es welche übergeben, liest es selber aus der Datenbank, ...?
    Heute 21:39
    Die PDF wird oder soll im gleichen Zuge wie dieses Update gemacht/erstellt werden.

    das Einzige wo ich wirklich Probleme habe ist das mit diesem Update

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von Lucifer Beitrag anzeigen
    Ablauf:

    Menu aufruf "Bestellungen Drucken"
    Anzeige der nicht gedruckten Bestellungen
    Und direkt danach das Update, so wie in deinem gezeigten Code zu sehen, ja?

    Link mit weiterleitung an dieses Skript wo dann eine PDF erzeugt werden soll
    Mit welchen Daten arbeitet dieses Script?
    Bekommt es welche übergeben, liest es selber aus der Datenbank, ...?

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    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
    Ich nehm an du meinst diesen hier

    ja geprüft das Script wird direkt aufgerufen und wird demnach nicht
    mehrmals aufgerufen

    Ablauf:

    Menu aufruf "Bestellungen Drucken"
    Anzeige der nicht gedruckten Bestellungen
    Link mit weiterleitung an dieses Skript wo dann eine PDF erzeugt werden soll

    und alles was für dieses Skript benötigt wird das steht auch in diesen Skript.

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Hast du den Gedanken von ChrisB mal überprüft?

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    Zitat von Asipak Beitrag anzeigen
    Ganz ehrlich, das wird hier nichts. Das Update hat keine Auswirkung auf dein Array, das ja bereits einige Zeilen zuvor erzeugt wird.
    Wieso Funkioniert es dann wenn eben dies Auskommentiert wird?

    Die Zuweisung weglassen habe ich schon probiert

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    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

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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“.

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    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

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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!

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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 ...

    Einen Kommentar schreiben:


  • Lucifer
    antwortet
    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

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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 ...

    Einen Kommentar schreiben:

Lädt...
X