Salut tout le monde,
J'ai un super code qui me permet de mettre à jour ma base de données MYSQL.
La chaine SQL est générée automatiquement, ce qui est une très bonne chose (merci à Sabotage et Celira).
Le seul "hic", c'est qu'il n'est capable que de mettre à jour une seule donnée à la fois.
Si je modifie le matricule, nom et prénom d'un enregistrement, il ne mettra à jour que le matricule.
Voici la chaine SQL générée :
Je pense que le problème vient du 'AND' car on cherche un enregistrement dont le Code_Decision= '1' et le Nom_Decision= 'Ajourné' et le Code_Decision= '2' et le Nom_Decision= 'Satisfaction'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE decisions SET Code_Decision= '1' ,Nom_Decision= 'Ajourné' ,Code_Decision= '2' ,Nom_Decision= 'Satisfaction' WHERE Code_Decision= '1' AND Nom_Decision= 'Ajourné' AND Code_Decision= '2' AND Nom_Decision= 'Satisfaction'
Je peux bien sûr me tromper.
Je pense que deux update seraient plus adaptés ?
Voici le code PHP :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $nligne = 0; while($row = mysql_fetch_array($query,MYSQL_ASSOC)) { echo '<tr>'; foreach($row as $NomCol => $Valeur) { echo '<td> <textarea name="new[' . $ligne . '][' . $NomCol . ']" . $>'.$Valeur.'</textarea> <input name="old[' . $ligne . '][' . $NomCol . ']" type="hidden" value="'.$Valeur.'"/></td>'; } $nligne++; echo '</tr>'; }
Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 foreach ($_POST['new'] as $key=>$NomCol) { foreach ($_POST['new'][$key] AS $NomCol=>$value) { $sqlset[] = $NomCol . "= '" . $value ."' "; $sqlwhere[] = $NomCol . "= '" . $_POST['old'][$key][$NomCol] . "' "; } $sql = 'UPDATE ' . $_SESSION['LaTable'] . ' SET ' . implode(",", $sqlset) . ' WHERE ' . implode(" AND ", $sqlwhere); $execution=mysql_query($sql, $link)or die($query . " - " . mysql_error()); }
Merci d'avance pour l'aide.
beegees








Répondre avec citation




Partager