PHPBoucle sur un update

artichaulo Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
artichaulo Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travail actuellement sur le formulaire de modification d'une base de données :
Voici l'idée :

L'utilisateur rentre les données à modifier dans un formulaire qui renvoie vers une page qui mettras les données à jour.

J'ai mis une condition à ces updates:
Si la valeur du champ est != "" alors je lance la requête, sinon la base sera mise à jour même avec des champs vides.

En voici un un extrait :

// se connecte à la base

include "connect.php";

// vient chercher le code dans une liste déroulante
$code=$_POST['row'];

if (($_POST[VALEUR1])!="")
{
mysql_query('UPDATE table SET VALEUR1 ="'.$_POST[VALEUR1].'" WHERE code= "'.$code.'" ');
}

if (($_POST[VALEUR2])!="")
{
mysql_query('UPDATE table SET VALEUR2 ="'.$_POST[VALEUR2].'" WHERE code= "'.$code.'" ');
}

if (($_POST[VALEUR3])!="")
{
mysql_query('UPDATE table SET VALEUR3 ="'.$_POST[VALEUR3].'" WHERE code= "'.$code.'" ');
}

[...]

Et il y a 132 valeurs à se suivre... Je précise qu'en réalité ces valeurs sont de la forme:
ad_oxy
ad_vent
s_min
s_hours

etc..

Pas de possibilité de faire une boucle for de 1 à 123

Y aurait il un moyen de rassembler tout ceci en une seule requête?
Avec un boucle peut être mais je ne vois pas du tout comment faire.

Merci d'avance

5 réponses

  1. Leviathan49 Messages postés 267 Statut Membre 70
     
    Tout simplement :
    if (($_POST[VALEUR1])!="" && $_POST[VALEUR2])!="" && $_POST[VALEUR3])!="")
    {
    mysql_query('UPDATE table SET VALEUR1 ="'.$_POST[VALEUR1].'",  VALEUR2 ="'.$_POST[VALEUR2].'", VALEUR3 ="'.$_POST[VALEUR3].'" WHERE code= "'.$code.'" ');
    }

    En séparant les différents champs avec des virgules donc.
    1
  2. artichaulo Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
     
    if (($_POST[VALEUR1])!="" && $_POST[VALEUR2])!="" && $_POST[VALEUR3])!="")

    les && sont des and ?

    Ca signifierait que pour faire un update il faudrait que VALEUR1 VALEUR2 et VALEUR3 soient != "" ?

    Si oui ce n'est pas ce que je recherche.
    0
  3. Leviathan49 Messages postés 267 Statut Membre 70
     
    Ah je vois ou tu veux en venir, je te propose alors :
    if ($_POST[VALEUR1]!="" && $_POST[VALEUR2]!="" && $_POST[VALEUR3]!="")   
    {  
       $query ="UPDATE table SET ";  
    
       if (($_POST[VALEUR1])!="")  
          $query .= 'VALEUR1 ="'.$_POST[VALEUR1].'",';  
       if (($_POST[VALEUR2])!="")  
          $query .= 'VALEUR2 ="'.$_POST[VALEUR2].'",';  
       if (($_POST[VALEUR3])!="")  
          $query .= 'VALEUR3 ="'.$_POST[VALEUR3].'",';     
       $query = substr($query,0,-1); // pour virer la derniere virgule  
       $query .= ' WHERE code= "'.$code.'" ';  
    
       mysql_query($query);
    }

    Comme ça, seuls les champs non vides sont mis à jour.
    0
  4. maka54 Messages postés 721 Statut Membre 80
     
    $query = '';  
    
    foreach( $_POST as $key => $value){  
        if($value != ''){  
            if($query != ''){$query .= ',';}  
            $query .= $key .' = "'.$value.'"';  
        }  
    }  
    
    if($query != ''){  
            $req = 'UPDATE table SET '.$query.' WHERE code= "'.$code.'" ';  
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. artichaulo Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Leviathan, je vais essayer ça :)
    0