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".
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.
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
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
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).
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.
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 :
Str_NbLignes=request.form("NbLignes");
Avec une boucle for, j'essaie de mettre à jour ma table :
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
Partager