Bonjour à tous,
Je développe un script d'administration de base de données, qui permette de mettre à jour cette dernière, quelle que soit la base et les tables qu'elle contient.
Le script se charge de récupérer chaque table avec ses champs et ses valeurs.
C'est pour la partie modification d'un enregistrement que j'ai du mal... Comme je ne connais pas à l'avance le nombre de champs, les champs eux-mêmes et les valeurs stockées, je ne peux pas mettre une requête MySQL de mise à jour "en dur" (style UPDATE nomDeLaTable SET nom="toto" WHERE prenom="titi").
Récupérer le nom de la table et ce qu'il faut mettre dans la clause WHERE, ça va... mais pour ce qui suit SET en revanche...
Déjà, je mets le code qui me permet de reconstituer chaque table :
Dans la fonction de modification d'une ligne de la table, c'est la variable $ligne que j'aimerais récupérer et parser pour obtenir chaque valeur à modifier... j'ai essayé une boucle for, mais elle me retourne le dernier enregistrement de chaque ligne ou affiche 'Array' !
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 //récupération des noms des tables à mettre à jour $query = mysql_list_tables(MYDB); //ensuite, un formulaire où on choisit la table à mettre à jour //puis on arrive sur la page d'administration de la table $table = $_GET['table']; //on liste tout ce qu'il y a dans la table sélectionnée précédemment $req = mysql_query("SELECT * FROM $table") or die(mysql_error()); $nbcol = mysql_num_fields($req); $nbligne = mysql_num_rows($req); echo '<table border="1">'; for($i=0;$i<$nbcol;$i++) { echo '<th>'.mysql_field_name($req,$i).'</th>'; } echo '</tr>'; for($i=0;$i<$nbligne;$i++) { $ligne = mysql_fetch_row($req); echo '<tr><form method="GET" action="maj.php">'; for($j=0;$j<$nbcol;$j++) { echo '<td><input type="text" name="ligne" value="'.$ligne[$j].'" />'; } //on récupère le nom de la table //et des champs cachés pour traiter les données ensuite //on a besoin du nom de la table echo '<input type="hidden" value="'.$table.'" name="table" />'; //il faut aussi l'ID de la ligne à changer echo '<input type="hidden" value="'.$ligne[0].'" name="id" />'; echo '<input type="hidden" value="'.$ligne.'" name="ligne" />''; echo '<td><input type="submit" name="modifier" value="Modifier" /></td>'; echo '<td><input type="submit" name="supprimer" value="Supprimer" /></td>'; echo '</form></tr>'; }
Je ne comprends pas pourquoi ça met ça, étant donné que dans la boucle :
ça fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for($j=0;$j<$nbcol;$j++) { echo '<td><input type="text" name="ligne" value="'.$ligne[$j].'" />'; }
Donc étant totalement paumée, je me tourne vers vos conseils... Comment récupérer la ligne où est apportée une modification et ensuite envoyer une requête MySQL permettant d'enregistrer cette modif' ?
Merci d'avance !!!
(J'ai mis un schéma en pièce jointe pour que vous puissiez comprendre mon charabia).
Partager