Posez votre question Signaler

Tableau modifiable [Résolu]

cinderela 52Messages postés 31 juillet 2007Date d'inscription - Dernière réponse le 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
Lire la suite 

Tableau modifiable »

23 réponses
Réponse
+0
moins plus
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
cinderela - 6 août 2007 à 17:33
salut, je l'ai fait et ça modifie pas. est-ce que c'est possible que le fait que j'ai fait référence à la page user.php , il prend tout suite la modification qui lui support pas (le system phpmyadmin)?
Alain42Alain42 - 6 août 2007 à 17:43
Alors procedes par étapes commence en essayant de supprimer le META REFRESH

essayes aussi en ajoutant dans modif.php un print_r($_POST);

pour voir ce que tu reçois

Sinon verifies bien que tes champs de ta base aient bien le même nom que dans ton script (majusqules/minuscules)
cinderela - 7 août 2007 à 10:17
Salut Alain,

j'ai refait le code en supprimant le META REFRESH et ajouté le print_r($_POST), j'ai testé (modifier plusieurs lignes en plusieurs fois pour bien voir mais je n'ai pas touché la dernière ligne) alors après exécution il modifie toujours la dernier ligne de la table. Je constate que le problème ne vient pas du META REFRESH et le print_r($_POST) m'affiche en mise à jour cette dernière ligne-là que je n'avais pas touché
Ajouter un commentaire
Réponse
+0
moins plus
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>
cinderela - 7 août 2007 à 13:17
ah que j'suis bête! ok c'est compris! merci
cinderelaAlain42 - 7 août 2007 à 14:23
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
Alain42Alain42 - 7 août 2007 à 15:14
est 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.
Ajouter un commentaire
Réponse
+0
moins plus
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>
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « tableau modifiable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook