Mehrere IF-Abfragen inkl. Mysql_query

alessandro_91

Grünschnabel
Ich bin dran ein Formular zu erstellen, welches die Daten von Bestehenden Kunden ausgibt(nach Auswahl).
Die Bestehenden Kundendaten werden korrekt ausgegeben.

Neben der Ausgabe der Bestehenden Daten, sind leere Felder (input type: 'text') in denen man bei Bedarf einen Wert eingeben kann.

Wenn ich ein Wert in dem Feld eingebe, wirds übernommen.
Wenn ich aber zwei werte (in zwei versch. Felder) eingebe, nimmt er mir nur eines(Weil ich mit IF-Anweisung arbeite).

Hier mal den Code (Sry für die Formatierung.. kanns nicht einstellen, dass der PHP code als PHP-code angezeigt wird... finde die Buttons nicht..) :

PHP:
//Hier gibt man die Kundennummer ein
<FORM name="input" method="GET" action="kundenbearbeiten.php" >
        <?php
             $total = 1;   // Diese zwei Variabeln sind für die 2. While-Shleife
             $anf = 4;
             echo "Kundennummer:";
             echo "<input type='text' name='kdnr'>"; //Hier kommt der Kunde welcher man Bearbeiten möchte.
             $temp = $_GET['kdnr'];        
             echo "</br>";
             echo "Kundendaten - Um ein Datensatz zu aendern, Wert in Rechtes Feld einfuegen";
             echo "</br>";
    
             $result = send_sql($globalDbName, "Select * from kundentbl where debitor =".$_GET['kdnr']."");
             while ($zeile=mysql_fetch_array($result)){
               echo "Debitor:";
               echo "</br>";
               echo "<td>".$zeile['debitor']." </td><input type='text' name='debitor'>";
               echo "</br>";
               echo "Firma:";
               echo "</br>";
               echo "<td>".$zeile['firma']." </td><input type='text' name='firma'>";
               echo "</br>";
               echo "Waren Nummer:";
               echo "</br>";
               echo "<td>".$zeile['wnr']." </td><input type='text' name='wnr'>";
               echo "</br>";
            }
           ?>
        
         <input type='submit' value='Aenderung speichern'>
         </FORM>  
         </br>
         <tr> 
        
           <?php
             While ($total < $anf){
               if(isset($_GET['debitor'])){
                 send_sql($globalDbName, "Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
                 $total = $total + 1;
               }
                        
               else if(isset($_GET['firma'])){
                 send_sql($globalDbName, "Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
                 $total = $total + 1;
               }
            
               else if(isset($_GET['wnr'])){
                 send_sql($globalDbName, "Update kundentbl set wnr=".$_GET['wnr']." where debitor=".$temp."");
                 $total = $total + 1;
               }
             }

Ich möchte, dass wenn alle drei Felder mit Werte ausgefüllt sind, diese auch in der Datenbank übernommen werden.. (Nach treffender If-Anweisung macht es nichts mehr..)

Ich würd mich über ein Tipp freuen.. :)
+ wie kann ich den Text so formatieren, dass der Code korrekt angezeigt wird.. ist mühsam so zum lesen..

Gruss
Alessandro
 
Zuletzt bearbeitet von einem Moderator:
Hallo Alessandro,

ganz einfache (aber auch durchaus ganz schlechte) Lösung: Entferne das "else" vor den IFs.

Der schlechte Aspekt ist jener, dass du 3 Queries abschickst, obwohl du nur eins brauchst.
Allerdings enthält dein Code nur schlechte Aspekte (das ist leider nun mal Tatsache, tut mir leid):

- Die veraltete MySQL-Erweiterung.
- Keine Trennung von Businesslogik und Ausgabe. Siehe MVC-Prinzip o. Ä.
- SQL Injections = Sicherheitslöcher!!

Wie du Code formatieren kannst, erfährst du in meiner Signatur: Code richtig einfügen
 
Hi ComFreek

Vielen Dank für deine Antwort.

Hatte es versucht mit und ohne dem else hat auch nicht geklappt..
Es nimmt mir den ersten Wert (Die erst zutreffende If-Anweisung) danach ist fertig.

Wenn das Feld 'debitor', 'firma' und 'wnr' mit Werten gesetzt ist, sollen es 3 queries sein (später sollens mehr werden).
Ich komme mit der neuen Mysql-Erweiterung nicht so recht klar..
ich schau mir mal das MVC-Prinzip an! :))
Die Sicherheitslöcher sind halb so wild ;P

Nochmals danke

werd euch auf dem laufenden halten^^
 
bin am verzweifeln..

Was mache ich falsch..??
Die For-Schleife wird 3x ausgeführt..($anzahl=2)
Damit nicht 3x das erste if zutrifft, habe ich nach Ausführung ein unset auf die jeweilige Variable gesetzt, damit die if-anweisung false ergibt und auf die nächste springt..(so hab ich es mir auf jedenfall vorgestellt.../ mit else if gehts auch nicht..)
er übernimmt mir nur 1x die erste if-anweisung und fertig is..

Ich möchte, dass php abtcheckt wo Werte in den Felder(3) drin sind und danach die Sql-Befehle sendet(für die Felder mit den Werten..)
PHP:
<FORM name="input" method="GET" action="kundenbearbeiten.php" >
         <?php
             for ($i=0;$i<$anzahl;$i++){
          
               if(isset($_GET['debitor'])){
                 send_sql($globalDbName, "Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
                 unset($_GET['debitor']);
               }    
      
               if(isset($_GET['firma'])){
                 send_sql($globalDbName, "Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
                 unset($_GET['firma']);
               }
              
               if(isset($_GET['wnr'])){
                 send_sql($globalDbName, "Update kundentbl set wnr=".$_GET['wnr']." where debitor=".$temp."");
                 unset($_GET['wnr']);
               }
           }
              
        ?>
<input type='submit' value='Werte speichern' action="kundenbearbeiten.php">
</FORM>
 
Zuletzt bearbeitet von einem Moderator:
Wieso benutzt du überhaupt eine for-Schleife? Das ist in deinem Fall sinnfrei!

PHP:
if(isset($_GET['debitor'])){
  send_sql($globalDbName, "Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
  $total = $total + 1;
}
                     
if(isset($_GET['firma'])){
  send_sql($globalDbName, "Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
  $total = $total + 1;
}

if(isset($_GET['debitor'])){
  send_sql($globalDbName, "Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
  $total = $total + 1;
}

Übrigens: Wozu benutzt du $total = $total + 1, wenn es auch $total++ tut?

Wenn das Feld 'debitor', 'firma' und 'wnr' mit Werten gesetzt ist, sollen es 3 queries sein (später sollens mehr werden).
Wozu drei Queries, wenn auch eins geht? Die Performance wird wahrscheinlich nur marginal beeinflusst sein, trotzdem ist dies nicht gerade sehr elegant gelöst. (Wenn ich eine Excel-Tabelle mit drei Spalten habe, die auch auslesen möchte, lese ich die ganze Datei auch nicht dreimal, sondern nur einmal!)

Die Sicherheitslöcher sind halb so wild ;P
Halb so wild? Nicht nur, dass das riesen Sicherheitslöcher sind, sondern auch noch Nutzern es nicht mehr erlauben, bspw. einfache Anführungszeichen in ihren Texten zu verwenden. (Ich lasse meine Haustür auch nicht offen stehen.)
 
Das $total = $total +1 hatte ich für die While-Schleife benutzt(solange $total grösser ist als $anz mach mir die schleife)

Wenn ich nur eine Query ausführe (mit mehreren Werten) besteht dann die Problematik, dass wenn ein Feld leer bleiben bzw. nicht ausgefüllt werden, der Wert(Leer) eingetragen wird und somit dann den Ehemaligen Wert überschreibt..

Noch dazu:

Habe jetzt mehrere sql-queries in einem if eingebaut... hier der Code..

PHP:
if(isset($_GET['debitor'])){
                  "Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."
                  Update kundentbl set firma=".$_GET['firma']." where debitor=".$temp."
                 Update kundentbl set wnr=".$_GET['wnr']." where debitor=".$temp."";

Wenn ich den Feld der Firma nicht ausfülle, steht in der DB kein Wert drin..

Hast du ein Tipp?
 
Zuletzt bearbeitet von einem Moderator:
So habe nun den Code neu aufgebaut:
HTML:
<!DOCTYPE html>
<html>
<FORM name="input" method="GET" action="kundenbearbeiten.php" >
PHP:
<?php
echo "Kundennummer:";        
?>
HTML:
<input type='text' name='kdnr' required='required'>  
<input type='submit' value='Werte Aktualisieren'>   //Hier gibt man die Kundennummer ein
PHP:
<?php
  //dieses if(isset($_GET-... ... ist um die Fehlermeldung zu unterdrücken(wenn kein Wert in der Variable ist) 
if (isset($_GET['kdnr']) AND $_GET['kdnr']){                                             
$temp = $_GET['kdnr'];  
}      
            
if (isset($temp) AND $temp){
echo ($temp);              
}
                                          
echo "</br>";
echo "Kundendaten - Um ein Datensatz zu aendern, Wert in Feld einfuegen";
echo "</br>";                  
echo "</br>";
echo "</br>";
//Hier werden nun alle Daten vom Kunden ausgelesen und in dem Feld eingefügt (damit man Sie direkt im Feld bearbeiten kann)
             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_dat' value='".$zeile['start_dat']."'>";
                 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>";                
               }              
             }
?>
HTML:
</FORM  // <--- Hier schliesse ich das obere Formular (welches mir die Daten ausliest)

  // Hier erstelle ich noch ein Formular um die Werte, welche ich ausgelesen und ggf. bearbeitet habe in die Datenbank zu schreiben/überschreiben
<FORM name="input" method="GET" action="kundenbearbeiten.php" >
PHP:
<?php
                
if(isset($_GET['kdnr'])){
               send_sql($globalDbName,"Update kundentbl set debitor=".$_GET['debitor'].",
                              firma='".$_GET['firma']."',                                
                              wnr='".$_GET['wnr']."',
                              start_dat=".$_GET['start_dat'].",
                              end_date=".$_GET['end_date'].",
                              ort='".$_GET['ort']."' 
                              where debitor=".$temp."");
}
?>
HTML:
               <input type='submit' value='Werte speichern'>
               </FORM> 
</html>

Mein Problem:

Die Daten werden Korrekt ausgelesen und ins input-field eingefügt.
Ich kann die Daten bearbeiten aber wenn ich auf dem 2. Formular den Button klicke(WERTE SPEICHERN) dann passiert garnix ausser die Seite wird aktualisiert..
wenn ich aber auf den Button des Ersten Formular klicke(WERTE AKTUALISIEREN), dann übernimmt es mir die änderungen (Problematik: es werden erneut die Anfangswerte in den inputbox geschrieben(auf die Datenbank sind die neuen Werte geschreiben worden)

Wie kann ich bewerkstelligen, dass ich mit dem Werte Aktualisieren mir nur die Werte eintragen lasse und mit Werte Speichern dann die Werte in die Datenbank schreibe..?

Vielen Dank für die Hilfe ( auch für die Hilfe bis anhin :))
 
Leute ich komme nicht weiter.. Finde nirgends brauchbare Informationen zu meinem Problem..
Ich habe zwei Formulare mit verschiedenen namen (write- und readvalues) beide werden mit </form> abgeschlossen, bei beiden Formulare ist als Action die selbe Seite angegeben(die Seite mit den beiden Formularen)
Ich kann die Formulare einfach nicht trennen!? es führt mir den unteren Formular aus obwohl ich nur den Submitbutton werte aktualisieren betätige.. was ist hier falsch??

Hier nochmals der überarbeitete Codeabschnitt..:

PHP:
<?php
                    echo "Kundennummer:";               
                    ?>
                   
                    <input type='text' name='kdnr' maxlength='6'  required='required'>   
                    <input type='submit' name='readvalues' value='Werte Aktualisieren'>
                   
                                   
                    <?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 "Nach bearbeitung der Daten, mit 'Werte Aktualisieren' oder 'Enter' in Datenbank schreiben. ";
                        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>";
                                                           
                            }                           
                        }
                ?>
                </FORM>
               
                <FORM name="write" method="GET" action="kundenbearbeiten.php" >
                <?php
                        //Hier werden die Werte in der Datenbank mit den Werten von den Oben eingesetzten Felder aktualisiert
                   
                        $x=0;
                        while($x < 3){
                            if($x == 0){                                                           
                                if(isset($_GET['debitor']) && $_GET['debitor']){   
                                    send_sql($globalDbName,"Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
                                    $x++;
                                }
                                   
                            }
                           
                            if($x == 1){
                                if(isset($_GET['firma']) && $_GET['firma']){
                                    send_sql($globalDbName,"Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
                                    $x++;       
                                }
                               
                            }
                           
                            if($x == 2){
                                if(isset($_GET['wnr']) && $_GET['wnr']){
                                    send_sql($globalDbName,"Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
                                    $x++;       
                                }
                            }
                        }

     
                    ?>   
                    <input type='submit' name='writevalues' value='Werte in Datenbank schreiben'>
            </FORM>
 

Neue Beiträge

Zurück