UPDATE von Tabelle

EddieG

Erfahrenes Mitglied
Hi,
ich habe ein Formular welches zum Aktualisieren von Daten dient.
Es sind 7 felder, es sollen aber nur die Felder welche auch gesetzt sind akutalisiert werden. muss ich nun 49 if varianten bzw. Case schreiben oder gibt es da auch einen verkürzten weg?
 
Hi,

dafür gibt es sicherlich eine Abkürzung.

Wie sieht dein bisheriges Script konkret aus?

mfg Maik
 
Der code schaut so aus:
PHP:
  <?php
    if(isset($_POST["suchen"]))
    {
      if(empty(htmlspecialchars(trim($_POST["name"]))) && empty($_POST["letter"]) && empty($_POST["la"]) 
         && empty($_POST["Fs"]) && empty($_POST["gr"]))
         {
          die();//Min. ein Feld ausfuellen
         }else {
          //Ein feld ist mindestens gefuellt
           if(!empty(htmlspecialchars(trim($_POST["name"])))
           
                    
         }
    
    
    }else{
    
    }
  
  
  
  
  
  ?>
  
  
  
  
  //Filter-/-formular
  
  <form action="<?php $_SERVER["PHPSELF"]; ?>" method="POST">
  <input name="name" type="text" />
  <select name="letter" >
  <?php
  //Abfrage
  ?>
  </select>
  <select name="gr" >
  <?php
  //Abfrage
  ?>
  </select>
  <select name="la" >
  <?php
  //Abfrage
  ?>
  </select>
  <select name="Fs" >
  <?php
  //Abfrage
  ?>
  </select>
  <input type="submit" name="suchen" value="Suchen" />
  </form>
 
Zuletzt bearbeitet:
Hi,
ich stehe leider immer noch vor dem selben Problem.
Es gibt einige inputfelder als auch Checkboxen, wenn ich das Forumlar absende und bloß herausfinden möchte welches der Felder eigentlich bearbeitet wurde Ohne 1000 If's oder Case machen zu müssen wäre der Code um einiges Besser im Obengenannten code sind es nicht all zu viele Felder jedoch wäre es interessant zu lernen wie so etwas geht und man damit den 1000 if abfragen aus dem weg geht.
 
Massenverarbeitungen gehen gut über Arrays, vor allem wenn man die Werte schon in einem Array kreigt ($_POST). Am besten leist du in der PHP-Doku noch genauer nach, was die von mir verwendeten Arrayfunktionen bewirken.

Hier hab ich mal ein kleines Beispiel zusammengestiefelt, das du natürlich noch anpassen musst.
PHP:
<?php 
    //Zu testzwecken fülle ich die $_POST hier ab. Dieser Teil muss gelöscht werden!
    $_POST = array(
        "submit" => "submit", 
        "name" => "test", 
        "letter" => null, 
        "gr" => 42);

    //Die zu prüfenden Feldnamen
    $fieldNames = array("name", "letter", "la");
    
    //die Feldnamen zu Key machen
    $fieldNames = array_fill_keys($fieldNames, null);
    
    //überprüfen ob alle erwarteten Felder in $Post vorhanden waren
    $missingFields = array_diff_key($fieldNames, $_POST);
    if (count($missingFields) > 0){
        echo "<b>Es fehlen Felder: </b><br />";
        foreach ($missingFields as $key => $value){
            echo "<b>Feld {$key} wurde nicht übergeben</b><br />";
        }
    }
        
    //Ein Key-Vergelich mit $_POST um die zu prüfenden Variablen zu kriegen
    $fields = array_intersect_key($_POST, $fieldNames);
    
    //Die Variablen prüfen
    foreach($fields as $key => $value){
        //in Meinem Fall prüf ich auf null
        if(is_null($value)){
            //Meldung ausgeben und die Schleife abbrechen
            echo "<b>kein Wert im Feld {$key}</b><br />";
            echo "<b>Verarbeitung abgebrochen</b><br />";
            break;
        } else {
            echo "{$key}: {$value}<br />";
        }
    }
?>
 
Zuletzt bearbeitet:
Zurück