PHPBoucle sur un update

Fermé
artichaulo Messages postés 8 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 décembre 2010 - Modifié par artichaulo le 28/06/2010 à 16:59
artichaulo Messages postés 8 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 décembre 2010 - 28 juin 2010 à 18:01
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



A voir également:

5 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
28 juin 2010 à 16:55
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
artichaulo Messages postés 8 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 décembre 2010
Modifié par artichaulo le 28/06/2010 à 17:07
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
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 28/06/2010 à 17:37
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
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 28/06/2010 à 18:01
$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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
artichaulo Messages postés 8 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 décembre 2010
28 juin 2010 à 18:01
Merci Leviathan, je vais essayer ça :)
0