Bonjour tout le monde,
J'ai une fonction qui permet de créer une chaine sql update génériquement :
J'utilise le formulaire ci-dessous pour appeler la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php function updateSql($table, $colonnes, $conditions){ $col =''; $cond =''; $sql = 'UPDATE `'.$table.'` SET'; while (list($key, $val) = each($colonnes)) { $col .= " `$key`='$val',"; } $col = substr($col, 0, -1); while (list($key, $val) = each($conditions)) { $cond .= " `$key`='$val',"; } $cond = substr($cond, 0, -1); return ($sql.' '.$col.' WHERE '.$cond); }
C'est ce code qui doit être envoyé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 echo '<form action="UpdateSQL.php" method="post" name="frmSaisie" id="frmSaisie">'; echo '<tr>'; for($i=0;$i<mysql_num_fields($query);$i++) { echo '<th>'.mysql_field_name($query,$i).'</th>'; } echo '</tr>'; //code de Sabotage $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>'; } echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ; echo '</p> $table = $_SESSION['LaTable']; $colonnes = array('col1'=>test, 'col2'=>test2); $conditions = array('col1'=>xyz, 'col2'=>zuy); </form>';
Déjà, ça, ça ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $table = $_SESSION['LaTable']; $colonnes = array('col1'=>test, 'col2'=>test2); $conditions = array('col1'=>xyz, 'col2'=>zuy);
Ensuite, je me demandais comment je pouvais faire pour remplir génériquement ces deux variables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $table = $_SESSION['LaTable'];
J'aimerais donc que $colonnes = array(...) contienne le nom des colonnes de ma table et $conditions = array(...) les valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $colonnes = array('col1'=>test, 'col2'=>test2); $conditions = array('col1'=>xyz, 'col2'=>zuy);
Le but est bien sûr de ne plus devoir modifier le code par après.
Merci d'avance pour l'aide.
beegees
Partager