Salut tout le monde,

J'aimerais mettre à jour une table qui contient plusieurs lignes (+- 50).

Pour cela, j'ai essayé de bricoler un script en ajoutant des zones invisibles, en passant un compteur à une variable passée dans un formulaire pour dire combien il y'a de lignes...

Je vais commenter mon code :

Le formulaire appelé par le bouton est MettreAJour.php, je lui passe une variable nommée "$Compteur".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo '<form action="MettreAJour.php?NbLignes=$Compteur" method="post" name="frmSaisie" id="frmSaisie">';
Le premier problème, c'est qu'il ne passe pas un entier mais le mot $compteur.

http://localhost/MettreAJour.php?NbLignes=$Compteur
Je crée un tableau qui va être alimenté par les données de la table choisie dans une liste déroulante.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
Je compte le nombre d'élément dans la table

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
while($row = mysql_fetch_array($query,MYSQL_NUM))
    {
   		 $NbLignes +=1;
    }

Je mets dans le nom de chaque colonne les nom des fields

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
echo '<tr>';
for($i=0;$i<mysql_num_fields($query);$i++)
    {
    echo '<th>'.mysql_field_name($query,$i).'</th>';
    }
echo '</tr>';

J'affiche dans le tableau les données du tableau (ça ne fonctionne plus pour l'instant).

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
while($row = mysql_fetch_array($query,MYSQL_NUM))
    {
    echo '<tr>';
    foreach($row as $value)
        {
		//si la table sélectionnée est "etudiants" alors on ajoute un champs invisible sur le matricule afin de pouvoir le mettre à jour vers la bd MYSQL.
		switch ($_POST[select_Nom_Tables]) {
case "etudiants":
	echo '<td> <textarea>'.$value.'</textarea></td>';
    echo '<td> <textarea>'.$value.'</textarea><input name="txtMatricule".NbLignes type="hidden" id="txtMatricule".NbLignes  value=""</td>';
	echo '<td> <textarea>'.$value.'</textarea></td>';
	echo '<td> <textarea>'.$value.'</textarea><input name="txtNom".NbLignes type="hidden" id="txtNom".NbLignes  value=""</td>';
	echo '<td> <textarea>'.$value.'</textarea></td>';
	echo '<td> <textarea>'.$value.'</textarea><input name="txtPrenom".NbLignes type="hidden" id="txtPrenom".NbLignes  value=""</td>';
	echo '<td> <textarea>'.$value.'</textarea></td>';
	echo '<td> <textarea>'.$value.'</textarea><input name="txtDateDeNaissance".NbLignes type="hidden" id="txtDateDeNaissance".NbLignes  value=""</td>';
	echo '<td> <textarea>'.$value.'</textarea></td>';
	echo '<td> <textarea>'.$value.'</textarea><input name="txtEmail".NbLignes type="hidden" id="txtEmail".NbLignes  value=""</td>';
	echo '<td> <textarea>'.$value.'</textarea></td>';
	echo '<td> <textarea>'.$value.'</textarea><input name="txtPhoto".NbLignes type="hidden" id="txtPhoto".NbLignes  value=""</td>';
    break;
	default:
	echo '<td> <textarea>'.$value.'</textarea></td>';
        }
 
 
}

Si c'est la table "etudiants" qui est choisie, je crée des textarea de type invisible.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
echo '</tr>';
    }echo '</table>';
 
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ; 
echo '</p></form>';
Je ferme le tableau et le formulaire.

Voici le code de mon fichier "MettreAJour.php" :

Je récupère le compteur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Str_NbLignes=request.form("NbLignes");
Avec une boucle for, j'essaie de mettre à jour ma table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
For i = 1 to NbLignes; 
     $Matricule = $_REQUEST["txtMatricule" & i];
	 $Nom = $_REQUEST["txtNom" & i];
	 $Prenom = $_REQUEST["txtPrenom" & i];
	 $DateDeNaissance = $_REQUEST["txtDateDeNaissance" & i];
	 $Email = $_REQUEST["txtEmail" & i];
	 $Photo = $_REQUEST["txtPhoto" & i];
 
txtSQL = "" ;
txtSQL = "update [etudiants] set [Nom_Et] = '" & $Nom & "' where  [Matricule_Et] = '" & Matricule & "'" ;
response.Write txtSQL;
cnn.Execute (txtSQL) ;
 
Next
Bien sûr, cela ne fonctionne pas

Sauriez-vous un peu y regarder s'il vous plait ?

Il doit y avoir plusieurs erreurs.

Si vous avez un script plus facile, n'hésitez pas.

Je débute en PHP (à peine une semaine) et je trouve ce langage génial.

Un super grand pour votre aide très précieuse.

beegees