Tableau modifiable

Résolu/Fermé
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 - 31 juil. 2007 à 15:33
 hrsg - 17 sept. 2008 à 08:01
Bonjour tout le monde,
j'ai voulu faire une page en phpmysql qui retourne une table contient les données et on peut modifier directement les données au-dessus. J'arrive seulement à le faire afficher les données mais pas cliquable. Je ne sais pas avec quel méthode peut-on faire. quelqu'un peut m'aider? svp
A voir également:

4 réponses

Il faut que tu mettes tes données extraites de la table Mysql dans les input d'un formulaire

ex:
<form name="...."     method="post" action="ton_script.php>
<input type="text" name="champ1" value="<?php echo $valeur_champ1_extraite_de_BD; ?>">
<input type="text" name="champ2" value="<?php echo $valeur_champ2_extraite_de_BD; ?>">
etc.....
<input type="submit" name="Enregistrer" value="Enregistrer modifs">

</form>


ton_script.php est le script qui traitera ensuite les données après modif par utilisateur
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
31 juil. 2007 à 16:08
merci bcp :-) , je vais essayer de le faire
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
3 août 2007 à 11:46
Bonjour tout le monde,
j'ai réussi à faire la table et puis quand j'ai fait la modification envoyé par la requette sql, la modification n'est pas complet comme je voulais.Il modifie par exemple seulement le prénom pas le nom...

quelqu'un peut m'aider?

Voilà, le code pour l'enregistrement de la mise à jour:


$query1 = "SELECT * FROM tbluser WHERE user_ID = '".$user_id."'";
$result1 = mysql_query($query1) or die ('erreur:');
$a = 0;
while ($liste = mysql_fetch_row($result1)){
if ($user_id == $liste[0]){
echo 'Les infos sont enregistrées. Vous serez redirigé dans 2 secondes.';
$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." ' AND nom = ' ".$nom." ' ";
echo $query;
$result = mysql_query($query);
}
}


Merci,
cinderela
0
Est ce que tu récupères correctement les valeurs "postées" modifiées.

$nom=$_POST['nom'];
etc..

pour visualiser tout tu peux faire

print_r($_POST);

tu verras tout ce qui est posté: le nom des champs et leur valeur.

D'autre part, as tu dans ta table plusieurs noms avec un même user_id ?

Sinon ça sert à rien de faire un SELECT avec le while sur l'user_id et de faire ton update dans cette boucle.

Il suffit de faire l' UPDATE ' avec WHERE user_ID = ' ".$user_id." ' seulement. et de plus ton formulaire ne te renveras les valeurs que pour un seul uitlisateur à la fois.

$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) {echo "Les donnees ont ete enregistrees ";}
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 > Alain42
6 août 2007 à 11:59
salut,
Merci pour ton aide.
j'ai vérifie minutieusement toutes les variables. c'est bien correct.
Dans la table user, un user a un seul id et vice-versa.
J'avais aussi essayer de faire qu'une seul instruction mais c'est comme j'ai dit il fait Update seulement une partie c-a-d la dernière rentrée (ajouter)

Alors pour en être sûre. je le refais mnt.
0
Alain42 > Alain42
6 août 2007 à 14:10
J'avais aussi essayer de faire qu'une seul instruction mais c'est comme j'ai dit il fait Update seulement une partie c-a-d la dernière rentrée (ajouter)

Que veux tu dire par là ?

Peux tu nous donner le code de ton formulaire ?
0
J'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>
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
7 août 2007 à 11:21
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>");
?>
0
Quand 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 ?
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 > Alain42
7 août 2007 à 11:51
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)
0
Alain42 > Alain42
7 août 2007 à 12:02
Ok,

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.
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008 > Alain42
7 août 2007 à 12:41
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>
0
cinderela Messages postés 52 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 20 février 2008
7 août 2007 à 15:26
Merci beaucoup Alain, c'est résoulu!

En fait, le problème ordonnancement est dü "peut-être" le fonctionnement du système de mon ordi ou bien phpmyadmin, je sais pas. Maintenant l'important c'est que la formulaire marche et l'ordonnancement est aussi marché. sauf il y a encore une chose que je voulais esseyer de modifier plusieurs lignes à la fois. Je te dirai la nouvelle :-)

Merci encore,
Cinderela

voici les codes

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();
}
}
//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."' ";

$result = mysql_query($query);

if ($result) { echo 'Les infos ont été bien modifiées:';
$query1 = "SELECT nom, prenom, username FROM tbluser ORDER BY nom ASC";
$result1 = mysql_query($query1) 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($result1))
{
$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>");
}
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>
0
Bonjour à tous,

Je cherche un script php tout prêt (je suis incapable de le faire, je n'ai pas le temps d'apprendre) pour avoir en ligne un tableau modifiable (en gros une liste de nom, prénom, âge,...). Pas besoin de gestion de droits, modification du tableau par tout le monde (dans un répertoire protégé).
Quelqu'un connaîtrait-il un script de ce genre ?
Si cette discussion a abouti sur quelque chose d'utilisable, cela a-t-il été diffusé ?

Merci d'avance
0