| 12 Alain42, le 7 aoû 2007 à 10:52:27J'ai compris !
Tu affiches un tableau avec plusieurs lignes, représentant les champs des lignes de ta base.
Mais tu mets ça dans une seule form avec autant de boutons submit.
Premiere ligne:
tes champs se moment nom, prenom, etc...
deuxième ligne:
tes champs se moment nom, prenom, etc...
etc..
lorsque tu cliques sur un des boutons submit il poste tous les champs de ton formulaire, mais comme dans chaque ligne ils ont le même nom, ce sont les valeurs des champs de la dernière ligne qui sont envoyés dans les varaibles $_POST['nom'] etc...
donc il faut que tu fasses autant de <form que de lignes avec chaqun leur bouton Submit.
mets donc la ligne <form.... dans ta boucle while (et </form aussi bien sûr)
Et aussi mets l'input de l'user_id en champ caché type="hidden", car si l'utilisateur le modifie le script ne s'y retrouvera plus.
Essayes ça:
<?php
$connexion = mysql_connect("localhost", "root", "")
or die ("connexion au serveur impossible.");
$db = mysql_select_db('gestion_stock', $connexion);
// selectionner toutes les USERS présentés dans la tbluser
$query = "SELECT nom, prenom, adresse, temps_de_travail, fonction, role_utilisateur, user_ID FROM tbluser ORDER BY nom";
$result = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée.
L\'erreur retournée est : '.mysql_error());
?>
<TABLE BORDER='1'>
<TR><TH>Nom</TH><TH>Prénom</TH><TH>Adresse</TH><TH>Temps de travail</TH><TH>Fonction</TH><TH>Rôle_utilisateur</TH><TH>Sélection</TH><TH>Enregistrer modifs</TH></TR>
<?php
while ($ligne = mysql_fetch_row($result))
{
$nom = $ligne[0];
$prenom = $ligne[1];
$adresse = $ligne[2];
$temps_de_travail = $ligne[3];
$fonction = $ligne[4];
$role_utilisateur = $ligne[5];
$user_id = $ligne[6];
?>
<form name="modification_utilisateur" method="post" action="modif_user.php">
<TR><TD><input type="text" name="nom" size="15"value="<?php echo $nom; ?>"></TD>
<TD><input type="text" name="prenom" size="15" value="<?php echo $prenom; ?>"></TD>
<TD><input type="text" name="adresse" size="15" value="<?php echo $adresse; ?>"></TD>
<TD><input type="text" name="temps" size="15" value="<?php echo $temps_de_travail; ?>"></TD>
<TD><input type="text" name="fonction" size="15" value="<?php echo $fonction; ?>"></TD>
<TD><input type="text" name="role_utilisateur" size="15" value="<?php echo $role_utilisateur; ?>"></TD>
<TD align="center"><input type="hidden" name="user_id" value="<?php echo $user_id; ?>"></TD>
<TD align="center"><input type="submit" name="Enregistrer" value="OK"></TD></TR>
</form>
<?php
} ?>
</TABLE>
Répondre à Alain42 | Salut Alain,
merci beaucoup vraiment:-) Je suis désolé de n'avoir pas dit clairement auparavant , C'est bien cela oui.
bon, j'ai testé et il modifie maintant dans le just champ. Encore un souci qu'il ne l'ordonne pas le nom par contre si j'entre les nouvelles données il les insert dans l'ordre alphabetique . j'avais mis ORDER BY nom et même avec ORDER BY nom ASC comme :
<p>Voici, la table de tous les utilisateurs!</p>
<?php
$connexion = mysql_connect("localhost", "root", "")
or die ("connexion au serveur impossible.");
$db = mysql_select_db('gestion_stock', $connexion);
// selectionner toutes les users présentés dans la tbluser
$query = "SELECT nom, prenom, username FROM tbluser ORDER BY nom ASC";
$result = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée.
L\'erreur retournée est : '.mysql_error());
print("\n<TABLE BORDER='1'>\n");
print("<TR><TH>Nom</TH><TH>Prénom</TH><TH>Username</TH></TR>\n");
while ($ligne = mysql_fetch_row($result))
{
$nom = $ligne[0];
$prenom = $ligne[1];
$username = $ligne[2];
print("\n<TR>\n");
print("\t<TD>$nom</TD>\n");
print("\t<TD>$prenom</TD>\n");
print("\t<TD>$username</TD>\n");
print("\n</TR>\n");
}
print("\n</TABLE>");
?> Répondre à cinderela |
| 14 Alain42, le 7 aoû 2007 à 11:43:28Quand tu dis que tu ne les a pas pas ordre alpha suivant le nom, c'est dans ta liste affichée dans les formulaire ou dans ta base ? Répondre à Alain42 | Salut,
c'est dans la formulaire. C'est que quand j'exécute la formulaire"modif" les infos devraient être envoyé à la base de données et puis il mis à jour la page users.php qu'il s'affiche une table avec tous les utilisateurs en ordre de A-Z (c'est croissant, n'est pas?, désolée Français c'est pas ma langue maternelle je viens de l'apprendre il y a quelques années) Répondre à cinderela |
| 16 Alain42, le 7 aoû 2007 à 12:02:42Ok,
C'est parce que tu utilises le refresh pour charger ta page user.php je pense.
Pourquoi ne pas mettre en fin de ton script modif.php la partie de ton script user.php (pas par un include !), cela t'affichera le tableau modifié après interrogation de la base.
Tu mets juste par un echo que la modif a été prise en compte et le client verra la modif dans le tableau en plus. Répondre à Alain42 | Salut,
quand j'ai mis include('users.php'); dans le modif_user.php il dit que
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\1erpage\modif_user.php:11) in c:\program files\easyphp1-8\www\1erpage\session.php on line 3
Ligne 11 de modif_user.php c'est ça : echo "bien joué! ";
et il donne la page users.php sans avoir l'ordonnencement de nom
voila les codes concernés:
session.php
<?php
session_name();
session_start();
?>
mod_user.php
<?php
// vérifier les données dans la formulaire
foreach ($_POST as $data) {
if (empty($data))
{
print('<center>Un (ou plusieurs) champs est vide! Veuillez tous les remplir.</center>');
exit();
}
else
{
echo "bien joué! ";
}
}
//vérifie le nom, prénom etc...
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$temps = $_POST['temps'];
$fonction = $_POST['fonction'];
$role_utilisateur = $_POST['role_utilisateur'];
$user_id = $_POST['user_id'];
//connecter à la bd
$connexion = mysql_connect("localhost", "root", "")
or die ("connexion au serveur impossible.");
mysql_select_db('gestion_stock', $connexion);
//vérifier les données dans la base de données
$query = "UPDATE tbluser SET
nom='".$nom."', prenom='".$prenom."', adresse='".$adresse."', temps_de_travail='".$temps."',
fonction='".$fonction."', role_utilisateur='".$role_utilisateur."' WHERE user_ID='".$user_id."' ";
echo $query;
$result = mysql_query($query);
if ($result) {include('users.php');}
print_r($_POST);
?>
user_mod.php
<?php
$connexion = mysql_connect("localhost", "root", "")
or die ("connexion au serveur impossible.");
$db = mysql_select_db('gestion_stock', $connexion);
// selectionner toutes les USERS présentés dans la tbluser
$query = "SELECT nom, prenom, adresse, temps_de_travail, fonction, role_utilisateur, user_ID FROM tbluser ORDER BY nom";
$result = mysql_query($query) or die ('Erreur. La requête ne peut pas être effectuée.
L\'erreur retournée est : '.mysql_error());
?>
<TABLE BORDER='1'>
<TR><TH>Nom</TH><TH>Prénom</TH><TH>Adresse</TH><TH>Temps de travail</TH><TH>Fonction</TH><TH>Rôle_utilisateur</TH><TH>Sélection</TH><TH>Enregistrer modifs</TH></TR>
<?php
while ($ligne = mysql_fetch_row($result))
{
$nom = $ligne[0];
$prenom = $ligne[1];
$adresse = $ligne[2];
$temps_de_travail = $ligne[3];
$fonction = $ligne[4];
$role_utilisateur = $ligne[5];
$user_id = $ligne[6];
?>
<form name="modification_utilisateur" method="post" action="modif_user.php">
<TR><TD><input type="text" name="nom" size="15"value="<?php echo $nom; ?>"></TD>
<TD><input type="text" name="prenom" size="15" value="<?php echo $prenom; ?>"></TD>
<TD><input type="text" name="adresse" size="15" value="<?php echo $adresse; ?>"></TD>
<TD><input type="text" name="temps" size="15" value="<?php echo $temps_de_travail; ?>"></TD>
<TD><input type="text" name="fonction" size="15" value="<?php echo $fonction; ?>"></TD>
<TD><input type="text" name="role_utilisateur" size="15" value="<?php echo $role_utilisateur; ?>"></TD>
<TD align="center"><input type="hidden" name="user_id" value="<?php echo $user_id; ?>"></TD>
<TD align="center"><input type="submit" name="Enregistrer" value="OK"></TD></TR>
</form>
<?php
} ?>
</TABLE> Répondre à cinderela |
| 18 Alain42, le 7 aoû 2007 à 13:09:24Je t'ai dit pas par un include !
Tu fais un copier / coller seulement la partie de code qui concerne l'affichage depuis user.php vers modif.php Répondre à Alain42 | Salut,
les infos ont été bien modifiées. la seule chose qu'il ne fait pas c'est que :
si je modifie le nom qui s'appelle Dupond à Poulitin, alors ce Poulitin prend la même ordre comme quand il étais Dupond. Qu'est -ce que dois-je faire encore puisque j'ai déjà mis ORDER BY nom .
merci Répondre à cinderela |
| 21 Alain42, le 7 aoû 2007 à 15:14:36Est ce que Poulitin prend la place de Dupond dans la base ou dans la liste affichée dans le formulaire ?
Si c'est dans la base c'est normal, les enregistrements sont faits dans l'ordre chronologique et les UPDATE se font sur la ligne à l'index ou elle est. Répondre à Alain42 |
|
|
|
|