Mehrere IF-Abfragen inkl. Mysql_query

Wo ist denn dein erster <form>-open Tag? Ich sehe keinen...

Wie dem auch sei, kannst du nochmal beschreiben, was du nun eigentlich machen willst? Der Code ist immer noch relativ unübersichtlich (wenn auch schon besser als am Anfang) und extrem anfällig(!) für jegliche Art von Angriffen. Was du ändern müsstest, steht auch schon weiter oben.

Damit man dir besser helfen kann, soltest du vielleicht auch mal den generierten Quellcode (Strg + U) posten. Da kannst du dannn auch sehen, was dein PHP Skript eigentlich erzeugt...
 
Der erste <Form>-open Tag habe ich vergessen einzufügen..

<FORM name="readvalues" method="GET" action="kundenbearbeiten.php" >

Ich habe zusätzlich gemerkt, dass schon beim aufrufen der seite 'kundenbearbeiten.php' die seite ewigs ladet und nach 30 Sekunden kommt die folgende Meldung:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\xampp\Kundenliste\kundenbearbeiten.php on line 203

auf der Zeile 203 ist dieser Code:
if($x == 2){

Hier bleibt er scheinbar hängen.. (ohne dass ich den Submit-Button gedrückt habe, habe nur die Seite aufgerufen)
Wenn ich den Inhalt des zweiten Formular (Writevalues) auskommentiere, dann ladet es mir die Seite sauber.

Was ich genau machen will:
Ich möchte mir die Werte aus der Datenbank (Kundendaten) herausholen und in die Input-Fields (Diese input-Fields werden durch den ersten Formular generiert) einfügen.
Das Klappt auch soweit.

Die Werte(ob geändert oder nicht) in den Input-Fields sollen nach betätigen des Zweiten Submit-Buttons des zweiten Forumlars(Writevalues - Werte in Datenbank schreiben) mittels den SQL-Injections
erneut in der Datenbank geschrieben werden.

Ich muss mit der Seite bewerkstelligen, dass man bestehende Kundendaten ändern kann..

Hier der Quellcode(inkl. der While Shleife welche die Max. execution time von 30 Sek überschreiten lässt:

HTML:
<!DOCTYPE html>
<html>
     <head>
         <title>Bardusch AG - Kundenliste</title>
     </head>
             <body>
           
          
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Bardusch AG - Kundenliste</title>
</head>
    <body>
        <img src="img/bardusch.jpg" width="450" height="100">
    </body>
</html>
</br>              
                <h1>Kunde bearbeiten</h1>
                <FORM name="input" method="GET" action="index.php">
                <input type='submit' value='Hauptmenu' >
                </FORM>  
                      
                <FORM name="input" method="GET" action="kundenbearbeiten.php">
                <input type='submit' value='Zuruecksetzen / Seite neu laden' >
                </FORM>  
                <hr />
              
                </br>Suche KundenNummer:          
                            <FORM name="input" method="GET" action="kundenbearbeiten.php">
                                <input type='text' name='suchenkdnr'>  
                                <input type='submit' value='Suchen'>
                            </FORM>  
                            </br>
                                              
                </br>Suche KundenName:                    <FORM name="input" method="GET" action="kundenbearbeiten.php">
                        <input type='text' name='suchenkdname'>  
                        <input type='submit' value='Suchen'>
                    </FORM>   
                    </br>
                    <hr />
                  
                </br>                  
                      
                  
              
                <FORM name="readvalues" method="GET" action="kundenbearbeiten.php" >
                  
                    Kundennummer:                  
                    <input type='text' name='kdnr' maxlength='6'  required='required'>  
                    <input type='submit' name='readvalues' value='Werte Aktualisieren'>
                  
                                  
                    </br>Nach bearbeitung der Daten, mit 'Werte Aktualisieren' oder 'Enter' in Datenbank schreiben. </br></br></br>                </FORM>
              
                <FORM name="writevalues" method="GET" action="kundenbearbeiten.php" >
                <br />
<b>Fatal error</b>:  Maximum execution time of 30 seconds exceeded in <b>C:\xampp\htdocs\xampp\Kundenliste\kundenbearbeiten.php</b> on line <b>203</b><br />

Der zweite </Form>-close Tag wird nicht geschrieben.. Wenn ich die While Schleife aber auskommentiere schreibt er mir den zweiten </Form>-close Tag..
Weshalb führt er mir den Code innerhalb dieses Formulars aus.. ich rufe ja nur die Seite auf..
 
Du hast eine Endlosschleife geschrieben. Anscheinend wird $x nie größergleich 3 ( while($x<3){ )
Du kannst das verifizieren, indem du mal var_dump($x) in die Schleife schreibst. Ich vermute, dass die entsprechenden GET-Werte einfach fehlen.
 
Hallo Alxy danke für deinen Hinweis habe es anderst versucht.
Die Get-Wertte haben Tatsächlich gefehlt, weil ich ja aus dem zweiten Formular keine Werte übermittelte(nur aus dem ersten - dort waren ja die Input-Fields.. xD)

Bin nun zu einer Lösung gekommen.. :)

Habe mich entschieden nur ein Formular zu benutzen mit zwei Submitbuttons.
Der Einte Button(Werte Auslesen) liest mir die Kundendaten des gewählten Kunden aus.
Mit dem Zweiten Button(Werte in Datenbank schreiben) werden die Daten in die Datenbank gespeichert (Habe zusätzlich eine Funktion eingebaut, welches mir nach den SQL-Injections die Seite aktualisiert -> Damit nach dem einschreiben der Daten die Input-Fields verschwinden, sieht sauberer aus finde ich..).

Bevor man die Daten in der Datenbank schreibt muss man die KDNR(welche auch zum auslesen der Daten benutzt wird) erneut eingeben(somit fange ich ausversehene Enter eingaben ab)
P.S. Die Enter-Eingabe würde das erneute Auslesen der Daten bewirken(werte Auslesen)

Hier der Code falls es jemand interessiert:

PHP:
<FORM name="readvalues" method="GET" action="kundenbearbeiten.php" >
                    <?php
                        echo "Die Enter-Taste bewirkt NUR das Auslesen der Werte";
                        echo "</br>";  
                        echo "Kundennummer:";              
                    ?>
                  
                    <input type='text' name='kdnr' maxlength='6'  required='required'>  
                    <input type='submit' name='readvalues' value='Werte Auslesen'>
                    <input type='submit' name='writevalues' value='Werte in Datenbank schreiben'">
                  
                                  
                    <?php        //Um die Fehlermeldung der Initial-Variable(welche Leer ist) zu unterdrücken setzen wir diese If-Schleife hinten dran.                  
                        if (isset($_GET['kdnr']) AND $_GET['kdnr']){  
                        $temp = $_GET['kdnr'];  
                        }          
                      
                        if (isset($temp) AND $temp){
                            echo ($temp);                          
                        }
                                                                                  
                        echo "</br>";                  
                        echo "</br>";                                  
                        echo "</br>";
                        echo "</br>";  
                        //Hier werden die Werte von der Datenbank in die Formularfelder eingefügt                      
                        if (isset($_GET['kdnr']) AND $_GET['kdnr']){                  
                            $result = send_sql($globalDbName, "Select * from kundentbl where debitor =".$_GET['kdnr']."");
                            while ($zeile=mysql_fetch_array($result)){
                                echo "Debitor:";
                                echo "</br>";
                                echo "<input type='text' name='debitor' value=".$zeile['debitor'].">";
                                echo "</br>";
                                echo "Firma:";
                                echo "</br>";
                                echo "<input type='text' name='firma' value='".$zeile['firma']."'>";
                                echo "</br>";
                                echo "Waren Nummer:";
                                echo "</br>";
                                echo "<input type='text' name='wnr' value='".$zeile['wnr']."'>";
                                echo "</br>";
                                echo "Start Vertrags-Datum:";
                                echo "</br>";
                                echo "<input type='text' name='start_date' value='".$zeile['start_date']."'>";
                                echo "</br>";
                                echo "Ende Vertrags-Datum:";
                                echo "</br>";
                                echo "<input type='text' name='end_date' value='".$zeile['end_date']."'>";
                                echo "</br>";  
                                echo "Ort:";
                                echo "</br>";
                                echo "<input type='text' name='ort' value='".$zeile['ort']."'>";
                                echo "</br>";
                                echo "Bodenmatten Abrechnungs Zeitraum:";
                                echo "</br>";  
                                echo "<input type='text' name='bm_abr_zeitr' value='".$zeile['bm_abr_zeitr']."'>";
                                echo "</br>";
                                echo "Flachwaesche:";
                                echo "</br>";  
                                echo "<input type='text' name='fw' value='".$zeile['fw']."'>";
                                echo "</br>";
                                echo "Boden Matten:";
                                echo "</br>";  
                                echo "<input type='text' name='bm' value='".$zeile['bm']."'>";
                                echo "</br>";
                                echo "Miet und Berufskleidung:";
                                echo "</br>";
                                echo "<input type='text' name='mbk' value='".$zeile['mbk']."'>";
                                echo "</br>";
                                echo "WP:";
                                echo "</br>";
                                echo "<input type='text' name='wp' value='".$zeile['wp']."'>";
                                echo "</br>";
                                echo "Kundeneigentum:";
                                echo "</br>";
                                echo "<input type='text' name='ke' value='".$zeile['ke']."'>";
                                echo "</br>";
                                echo "Splitting:";
                                echo "</br>";
                                echo "<input type='text' name='splitting' value='".$zeile['splitting']."'>";
                                echo "</br>";
                                echo "Miete:";
                                echo "</br>";
                                echo "<input type='text' name='miete' value='".$zeile['miete']."'>";
                                echo "</br>";
                                echo "Webservice:";
                                echo "</br>";
                                echo "<input type='text' name='webservice' value='".$zeile['webservice']."'>";
                                echo "</br>";
                                echo "Schrankfach Service:";
                                echo "</br>";
                                echo "<input type='text' name='schrankfservice' value='".$zeile['schrankfservice']."'>";
                                echo "</br>";
                                echo "Lieferpreis:";
                                echo "</br>";
                                echo "<input type='text' name='lp' value='".$zeile['lp']."'>";
                                echo "</br>";
                                                          
                            }                          
                        }
                      
                        if(isset($_GET['writevalues']) AND $_GET['writevalues']){
                                        send_sql($globalDbName,"Update kundentbl set debitor=".$_GET['debitor'].",
                                                                            firma='".$_GET['firma']."',                                                                  
                                                                            wnr='".$_GET['wnr']."',
                                                                             start_date='".$_GET['start_date']."',
                                                                             end_date='".$_GET['end_date']."',
                                                                             ort='".$_GET['ort']."',
                                                                             bm_abr_zeitr='".$_GET['bm_abr_zeitr']."',
                                                                             fw='".$_GET['fw']."',
                                                                             bm='".$_GET['bm']."',
                                                                             mbk='".$_GET['mbk']."',
                                                                             wp='".$_GET['wp']."',
                                                                             ke='".$_GET['ke']."',
                                                                             splitting='".$_GET['splitting']."',
                                                                             miete='".$_GET['miete']."',
                                                                             webservice='".$_GET['webservice']."',
                                                                             schrankfservice='".$_GET['schrankfservice']."',                      
                                                                             lp='".$_GET['lp']."'                                                                                                                               
                                                                              where debitor=".$temp."");
                                        echo "<meta http-equiv=\"refresh\" content=\"0; URL=kundenbearbeiten.php\">";
                                          
                                }
                      
                      
                ?>
              
                </FORM>
 
Statt diesem Code

PHP:
echo "<meta http-equiv=\"refresh\" content=\"0; URL=kundenbearbeiten.php\">";

könnte man auch

PHP:
header('Location: kundenbearbeiten.php');

schreiben. Hat mehrere Vorteile:
1. Sieht übersichtlicher aus
2. Client ist nicht an der Weiterleitung involviert, soll heißen, der Browser kann die Weiterleitung nicht einfach umgehen.
3. HTML-Metas außerhalb des HTML-Heads ist unprofessionell, da eigentlich nicht so definiert. Metas gehören in die HTML-Kopf-Daten. Es könnte Browser geben, die Metas innerhalb vom Body ignorieren und demzufolge deine Weiterleitung nicht greift.


Dann möchte ich noch was zu der unsäglichen Marotte loswerden, HTML immer mittels echo auszugeben. Das ist hässlich, inperformant und stört den Lese-Fluss im Code. Mache dir Gedanken, wie das anders zu lösen ist. Kommt beim Runtertippen dieses Wulsts denn nicht automatisch der Gedanke: "Mensch, dass muss doch auch schöner und einfacher gehen". Schau, wie du die PHP-Tags richtig setzen kannst, um weniger "echo '<html-code>'" verwenden zu müssen oder seh dich nach einer einfach zu adaptierenden Template-Engine um. In deinem eigenen Interesse und vor allem für die, die dir helfen sollen :-)
 
könnte man auch [header] schreiben

Ja, das wäre die „korrekte“ Variante. Das würde allerdings noch den Umbau des Skripts in eine sinnvollere Form (EVA-Prinzip und so, wurde schon angesprochen) voraussetzen. Eine einfache Ersetzung klappt an der Stelle nicht, weil schon Ausgabe (HTTP-Response-Body) erfolgt ist.

2. Client ist nicht an der Weiterleitung involviert, soll heißen, der Browser kann die Weiterleitung nicht einfach umgehen.

header() setzt einen Eintrag im Header der HTTP-Response, die vom PHP-Skript generiert wird. Wie die ausgewertet wird, entscheidet aber immer der Client, also etwa der Browser.

Ansonsten volle Zustimmung.
 
Ja, das wäre die „korrekte“ Variante. Das würde allerdings noch den Umbau des Skripts in eine sinnvollere Form (EVA-Prinzip und so, wurde schon angesprochen) voraussetzen. Eine einfache Ersetzung klappt an der Stelle nicht, weil schon Ausgabe (HTTP-Response-Body) erfolgt ist.

Für den Fall, dass schon Ausgaben gemacht wurden, gibt es eine relativ einfache Möglichkeit: Output Buffering.

header() setzt einen Eintrag im Header der HTTP-Response, die vom PHP-Skript generiert wird. Wie die ausgewertet wird, entscheidet aber immer der Client, also etwa der Browser.

Wie soll der Client (Browser) das umgehen, wenn der Server ihm permanent sendet, dass er doch gefälligst die URL xyz.php aufzurufen hat? Würde mich wirklich interessieren. Also wenn der Client die Umleitung ablehnt, kann der Server die Entscheidung treffen, gar nichts mehr auszuliefern und bspw. mit 204 (No Content) oder aus dem 300er bzw. 400er Bereich quittieren.
 
Output Buffering ist allerdings auch nur eine schlechte Zwischenlösung meiner Ansicht nach.

Der Client kann theoretisch alles blockieren, der Computer kann auch die Netzwerkkarte deaktivieren, ...
Wann sollte ein Browser eine <meta>-Weiterleitung umgehen? Wieso? Wenn er dies tut, dann ist es sein Problem und nicht jenes des Servers.
 
Output Buffering ist allerdings auch nur eine schlechte Zwischenlösung meiner Ansicht nach.

Aus welchem Grund? Was hat das Puffern der Ausgabe deiner Meinung für Nachteile? Meiner Meinung nach hat es einige Vorteile bspw. den, dass man die Länge des Contents berechnen kann, bevor man ihn an den Client sendet, was die Verbindung beschleunigt (Browser muss nicht auf EOF warten), sondern liest X Bytes. Desweiteren kann man den Output dadurch auch mittels gzip komprimieren. Nachteile sehe ich keine. Der Speicher, der vorgehalten werden muss, wird dynamisch alloziert und danach freigeben (IMHO).

Der Client kann theoretisch alles blockieren, der Computer kann auch die Netzwerkkarte deaktivieren, ...
Wann sollte ein Browser eine <meta>-Weiterleitung umgehen? Wieso? Wenn er dies tut, dann ist es sein Problem und nicht jenes des Servers.

Klar kann er das, aber der Server sendet so keine ungewollte Daten an den Client - spart Bandbreite und ist ggf. eine zusätzliche Sicherheitsbarriere. Ein Browser, der nur HTML akzeptiert, das wohl geformt und semantisch korrekt ist, würde das in dem Falle tun, denn Meta-Angaben sind Kopf-Daten und haben im Body nichts verloren - IMHO. :-) In diesem speziellen Falle kommt laut Code zwar "nur" noch das FORM-Abschlusstag, aber wir kennen den Rest des Codes nicht. Dann wird an den Client gesendet, "leite mal nach xyz.php weiter, und ach übrigens hier kommen noch weitere 140kb Code" ;-)
 
Zurück