Je n'arrive pas à mettre à jour ma table MYSQ
beegees
Messages postés
102
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour tout le monde,
J'essaie de mettre une table MYSQL nommée "etudiants" à jour.
J'obtiens bien les valeurs de la table dans des zones de texte.
Je peux alors modifier les valeurs mais lorsque je clic sur le bouton, la table ne se met pas à jour.
Le nombre de ligne est bien envoyé à l'autre page (MettreAJour qui est l'action du formulaire).
Je vous laisse mon code, ça sera je pense, un peu plus parlant :
[code]<?php
$compteur = 0;
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
/*echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());*/
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" 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>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }
}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
echo '</table>';
?>
/code
et voic le code de "MettreAJour.php" qui contient le code SQL qui devrait mettre à jour la table :
[code]
<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["NbLignes"];
echo '&NbLignes vaut '.$NbLignes;
for ($i = 0; $i < $NbLignes;$i++)
{
$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."'" ;
}
?>
/code
Merci d'avance pour votre aide.
beegees
J'essaie de mettre une table MYSQL nommée "etudiants" à jour.
J'obtiens bien les valeurs de la table dans des zones de texte.
Je peux alors modifier les valeurs mais lorsque je clic sur le bouton, la table ne se met pas à jour.
Le nombre de ligne est bien envoyé à l'autre page (MettreAJour qui est l'action du formulaire).
Je vous laisse mon code, ça sera je pense, un peu plus parlant :
[code]<?php
$compteur = 0;
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
/*echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());*/
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" 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>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }
}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
echo '</table>';
?>
/code
et voic le code de "MettreAJour.php" qui contient le code SQL qui devrait mettre à jour la table :
[code]
<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["NbLignes"];
echo '&NbLignes vaut '.$NbLignes;
for ($i = 0; $i < $NbLignes;$i++)
{
$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."'" ;
}
?>
/code
Merci d'avance pour votre aide.
beegees
A voir également:
- Je n'arrive pas à mettre à jour ma table MYSQ
- Mettre a jour chrome - Accueil - Applications & Logiciels
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour windows 10 - Accueil - Mise à jour
- Table ascii - Guide
- Table des matières word - Guide
4 réponses
$txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;
déjà pourquoi tu as des [ ] au niveau des tes noms de table ?
ensuite je vois pas de :
mysql_query($txtSQL);donc il me semble que t'envoie pas la commande a mysql ;)
après je suis pas non plus un spécialiste :)
Bonsoir,
à la place de $_REQUEST mets $_POST
et $txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;
mysql_query($txtSQL);
car il faut qd même à un moment lancer la requette
à la place de $_REQUEST mets $_POST
et $txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;
$txtSQL = "UPDATE etudiants SET Nom_Et = '".$Nom ."' WHERE Matricule_Et = '".$Matricule."'" ;
mysql_query($txtSQL);
car il faut qd même à un moment lancer la requette
Bonjour Alain,
Merci pour ta réponse et désolé pour le retard de ma réaction mais j'étais occupé sur autre chose.
Malheureusement, ça ne fonctionne pas encore.
Voici le code de mon premier fichier :
[code]echo '<table border="1">';
$table = $_POST['select_Nom_Tables'];
$query = mysql_query("SELECT * FROM $table LIMIT 20");
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" 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>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
echo 'mysql_field_name vaut'.mysql_field_name($query,i);
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }
}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
echo '</table>';/code
et voici le code de mon second fichier :
[code]<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["NbLignes"];
echo '&NbLignes vaut '.$NbLignes;
for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_POST[mysql_field_name].[i];
$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];
$txtSQL = "" ;
$txtSQL = "UPDATE etudiants SET Nom_Et = '".$Nom ."' WHERE Matricule_Et = '".$Matricule."'" ;
mysql_query($txtSQL);
}
?>
/code
Merci d'avance pour l'aide.
beegees
Merci pour ta réponse et désolé pour le retard de ma réaction mais j'étais occupé sur autre chose.
Malheureusement, ça ne fonctionne pas encore.
Voici le code de mon premier fichier :
[code]echo '<table border="1">';
$table = $_POST['select_Nom_Tables'];
$query = mysql_query("SELECT * FROM $table LIMIT 20");
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" 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>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
echo 'mysql_field_name vaut'.mysql_field_name($query,i);
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }
}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
echo '</table>';/code
et voici le code de mon second fichier :
[code]<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["NbLignes"];
echo '&NbLignes vaut '.$NbLignes;
for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_POST[mysql_field_name].[i];
$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];
$txtSQL = "" ;
$txtSQL = "UPDATE etudiants SET Nom_Et = '".$Nom ."' WHERE Matricule_Et = '".$Matricule."'" ;
mysql_query($txtSQL);
}
?>
/code
Merci d'avance pour l'aide.
beegees
Bonsoir,
dans cette partie :
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea>
<input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
je vois deux erreurs:
tu fais $compteur+=1;
et ou initialises tu la variable $compteur ?
donc avant la boucle while mets:
ensuite mysql_field_name.$compteur mets
dans cette partie :
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea>
<input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
je vois deux erreurs:
tu fais $compteur+=1;
et ou initialises tu la variable $compteur ?
donc avant la boucle while mets:
$compteur=0;
ensuite mysql_field_name.$compteur mets
mysql_field_name($compteur)
Plus
erreur de principe, tu mets un textarea sans name= et dans lequel tu mets $value et tu mets un <input type =hidden avec un name mais sans valeur
ça ne peut pas poster qq chose
mets:
ensuite $Matricule = $_POST[mysql_field_name].[i];
$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];
et il te manque tous les $ devant i
erreur de principe, tu mets un textarea sans name= et dans lequel tu mets $value et tu mets un <input type =hidden avec un name mais sans valeur
ça ne peut pas poster qq chose
mets:
foreach($row as $value)
{
echo '<td> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule'.$compteur.'"value="'.$value.'"></td>';
</td>';
}
ensuite $Matricule = $_POST[mysql_field_name].[i];
$Matricule = $_POST['mysql_field_name'.$i];
$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];
et il te manque tous les $ devant i
$Nom = $_POST["txtNom".$i]; $Prenom = $_POST["txtPrenom".i]; $DateDeNaissance = $_POST["txtDateDeNaissance".$i]; $Email = $_POST["txtEmail".$i]; $Photo = $_POST["txtPhoto".$i];
Bonjour Alain,
Un super GRAND merci pour ta réponse.
Pour ce qui est du compteur, je le déclarais en début de code, code que je n'avais pas copié dans ce message.
Pour ce qui est du for each :
J'ai fait ceci :
le problème avec le mysql_field_name (enfin je pense, je peux me tromper) c'est qu'il n'affiche pas le nom des champs une fois la page générée :
Voici une partie de mon code HTML lorsque la page est générée :
On peut voir qu'il y'a bien indiqué :
Ce qui est pour moi (grand débutant) un peu déroutant car je ne sais pas quel nom il a donné à mon widget.
J'ai donc utilisé ceci :
Il m'indique le nom du champ dans le code HTML :
Ce qui est déjà un peu plus partlant.
Maintenant, il faut que je récupère ces valerus, ça c'est un autre problème.
Si tu as une idée, n'hésite pas.
Encore merci pour ton aide.
beegees
Un super GRAND merci pour ta réponse.
Pour ce qui est du compteur, je le déclarais en début de code, code que je n'avais pas copié dans ce message.
Pour ce qui est du for each :
J'ai fait ceci :
foreach($row as $value)
{
echo '<td> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule'.$compteur.'"value="'.$value.'" <input name="'.mysql_field_name.$compteur.'" type="hidden" id="'.mysql_field_name.$compteur.'" "value="'.$value.'"></td>';
}
le problème avec le mysql_field_name (enfin je pense, je peux me tromper) c'est qu'il n'affiche pas le nom des champs une fois la page générée :
Voici une partie de mon code HTML lorsque la page est générée :
<input name="mysql_field_name1" type="hidden" id="mysql_field_name1" "value="Ajourné"></td></tr><input type="submit" name="Submit" value="Mettre la table à jour" /></p></form></table>
On peut voir qu'il y'a bien indiqué :
name="mysql_field_name1"
Ce qui est pour moi (grand débutant) un peu déroutant car je ne sais pas quel nom il a donné à mon widget.
J'ai donc utilisé ceci :
foreach($row as $NomCol => $Valeur)
{
echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" "value="'.$Valeur.'"></td>';
}
Il m'indique le nom du champ dans le code HTML :
<input name="Code_Decision1" type="hidden" id="Code_Decision1" "value="1"></td><td> <textarea>Ajourné</textarea> <input name="Nom_Decision1" type="hidden" id="Nom_Decision1" "value="Ajourné"></td></tr><input type="submit" name="Submit" value="Mettre la table à jour" /></p></form></table>
Ce qui est déjà un peu plus partlant.
Maintenant, il faut que je récupère ces valerus, ça c'est un autre problème.
Si tu as une idée, n'hésite pas.
Encore merci pour ton aide.
beegees
Bonsoir,
effectivement ta partie de nouveau code semble mieux fonctionner pour generer ton HTML mais il y a une petite erreur
foreach($row as $NomCol => $Valeur)
{
echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" "value="'.$Valeur.'"></td>';
}
tu as une " en trop devant value
regarde bien le code HTML generé:
... id="Code_Decision1" "value="1" .....
donc il faut:
ensuite pourquoi mets tu un textarea ? en plus de l'input ?
effectivement ta partie de nouveau code semble mieux fonctionner pour generer ton HTML mais il y a une petite erreur
foreach($row as $NomCol => $Valeur)
{
echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" "value="'.$Valeur.'"></td>';
}
tu as une " en trop devant value
regarde bien le code HTML generé:
... id="Code_Decision1" "value="1" .....
donc il faut:
foreach($row as $NomCol => $Valeur)
{
echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" value="'.$Valeur.'"></td>';
}
ensuite pourquoi mets tu un textarea ? en plus de l'input ?