Tom's Guide > Forum > Programmation > modifier une entrée d'une base de donnes
modifier une entrée d'une base de donnes - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour!
J'ai créé une table pour faire une sorte d'annuaire contenant: id(pour l'auto-increment), pseudo, adresse...
J'aimerai que quand l'utilisateur click sur le pseudo, il puisse modifier les informations le concernant.
Comment récupérer l'entrée de la table correspondant au pseudo sur lequel on a cliqué?

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Code :
  1. select adresse from table where pseudo = la_valeur_du_pseudo_clique;



sans plus d'informations, c'est ce que je peux faire

Répondre à coca25

oki merci! Mais comment récupérer la valeur du pseudo cliqué??
Qu'est-ce que tu veux d'autre comme infos pour m'aider?

Répondre à cocolibri

tu developpes en quoi?
c'est quoi la base de données?
la où l'utilisateur sélectionne le pseudo, c'est une page web? si oui, c'est un formulaire? la méthode de passage de paramètres...
ce genre d'info

Répondre à coca25

ok ok.
J'utilise une base de donnees mysql.
J'ai un formulaire sur une page web qui permet à l'utilisateur d'entrer ses coordonnees dans ma table "contacts", donc il entre pseudo, adresse tel etc. et puis ça envoie les infos dans ma table.
Ensuite j'ai sur ma page un tableau ou sur la première ligne il y a les titres "pseudo", "adresse" etc, puis sur les ignes suivantes de ce tableau, il y a , sur chaque ligne, les coordonnes entrées par chaque utilisateur.
Et je voudrais que quand l'utilisateur clique sur la case du tableau ou est ecrit son pseudo, il puisse modifier ses coordonnes.
Mon probleme est donc de recuperer la valeur du pseudo pour ensuite pouvoir repérer sur quelle entrée de la base de données je vais agir...
Euh... Ca va la?

Répondre à cocolibri

Citation :


Euh... Ca va la?



on va voir :)

je suppose que tu bosses avec du php (à défaut)

Citation :


J'ai un formulaire sur une page web qui permet à l'utilisateur d'entrer ses coordonnees dans ma table "contacts", donc il entre pseudo, adresse tel etc. et puis ça envoie les infos dans ma table.


tu arrives déjà à récupérer les données d'une page, il est où le problème. tu fais pareil pour la case du tableau.

tu peux, sur la case, mettre un lien du genre

Code :
  1. echo "<a href='sciprt.php?pseudo=$pseudo'>$pseudo</a>";


une fois cliqué, tu le récupères dans script.php dans la variable $_GET['pseudo']

Répondre à coca25

d'accord d'accord :jap:
bon j'ai un peu du mal...
une fois que j'ai cliqué sur le pseudo j'accéde à un nouveau formulaire pour modifier les données. Comment je fais pour que dans les champs soient écrits les valeurs d'origine?
J'ai essayé value="<?php echo($pseudo) ;?>" et value=".$pseudo.", mais rien ne marche, à chaque fois dans le champs ça écrit <?php echo($pseudo) ;?> ou .$pseudo. et non pas le pseudo...

Répondre à cocolibri

le formulaire, il est bien sur une page php??
poste la partie de ton script concernant le formulaire en indiquant le nom du fichier.
ca sera plus clair

Répondre à coca25

merci d'etre patient avec moi!
voila le code :

<html>
<head>
<title>modification</title>
</head>
<body style="color: rgb(255, 255, 255); background-color: rgb(102,

51, 255);"
alink="#ffccff" link="#ffccff" vlink="#cc66cc">

<?php
$cnx = mysql_connect( "localhost", "root", "" ) ;
$db = mysql_select_db( "contacts" ) ;
$personne = $_POST["pseudo"] ;
$sql = "SELECT *
FROM contacts
WHERE pseudo= $personne ;
$requete = mysql_query( $sql, $cnx ) ;

if( $result = mysql_fetch_object( $requete ) )
{
?>
<form method='post' action='modifier.php'>
<input type="hidden" name="id" value="<?php echo($id) ;?>">
<table style="width: 640px; height: 222px;">
<tbody>
<tr>
<td>VotrePseudo
(ou nom normal):</td>
<td><input name="pseudo" id="pseudo" value=".$pseudo."
size="30" type="text"></td>
</tr>
<tr>
<td>Votre E-mail:</td>
<td><input name="email" id="email" value=".$email."
size="60"></td>
</tr>
<tr>
<td>Votre t&eacute;l&eacute;phone:</td>
<td><input name="telephone" id="telephone" value=".$telephone."
size="60"></td>
</tr>
<tr>
<td>Votre adresse MSN:</td>
<td><input name="msn" id="msn" value=".$msn." size="60"></td>
</tr>
<tr>
<td>Votre adresse postale:</td>
<td><input name="adresse" id="adresse" value=".$adresse."
size="60"></td>
</tr>
<tr>
<td>Le titre de votre t&eacute;moignage:</td>
<td><input name="temoignage" id="temoignage"

value=".$temoignage."
size="60"></td>
</tr>
</tbody>
</table>
<input value="Envoyer" type="submit"> - <input
value="Annuler" type="reset">

</form>
<?php
}//fin if
?>
</body>
</html>

oui pour l'extention je ne sais pas quoi mettre, si je mets .php ça bug au niveau de l'ouverture du formulaire<form>, et si je mets .html, je ne suis pas sûr que les lignes php marchent...

Répondre à cocolibri

je te le confirme, si tu mets .html, le php n'est pas interprete et donc ne fonctionne pas.
pour ton code, quand tu le postes, il faut l'encadrer par des balises code [ code ] [ /code ] sans espaces.

pour l'utilisation de mysql_fetch_object je t'invite à lire:
http://fr.php.net/mysql_fetch_object

Code :
  1. <html>
  2. <head>
  3. <title>modification</title>
  4. </head>
  5. <body style="color: rgb(255, 255, 255); background-color: rgb(102, 
  6. 51, 255);"
  7. alink="#ffccff" link="#ffccff" vlink="#cc66cc">
  8. <?php
  9.   $cnx = mysql_connect( "localhost", "root", "" ) ;
  10.   $db = mysql_select_db( "contacts" ) ;
  11.   $personne  = $_POST["pseudo"] ;
  12.   $sql = "SELECT *
  13.             FROM contacts
  14.     WHERE pseudo= $personne ; "; // la tu as oublié de refermé les "
  15. ...
  16. <input type="hidden" name="id" value="<?php echo $result->id ;?>">
  17. <!-- le mysql_fetch_object retourne une classe. $id tout seul n'est pas reconnu -->
  18. ...
  19. <td><input name="pseudo" id="pseudo" value="<?= $result->pseudo ?>"
  20. size="30" type="text"></td>
  21. ...



tu completes les corrections, tu modifies l'extension de ton fichier en .php, ca devrait marcher par la suite.

si un fichier php ne marche pas, faut regarder les erreurs, ca donne plein d'information.
les erreurs sont dans le fichier log d'apache (si tu as apache).
son emplacement dépend de ton installation


Message édité par coca25 le 06-12-2006 à 15:07:29
Répondre à coca25

ça marche presque!!
mais ça affiche <br /> dans tous les champs maintenant...
:( :( :(

Répondre à cocolibri

comme je vois nulle part de <br/> dans ton code, je peux pas trop te repondre.
regarde d'abord avec phpmyadmin (ou ton truc pour acceder a ta base) si les données existent.
ensuite reposte ton code

Répondre à coca25

oui j'ai regardé les données existent. :D
ok voila le code:

Code :
  1. <html>
  2. <head>
  3. <title>modification</title>
  4. </head>
  5. <body style="color: rgb(255, 255, 255); background-color: rgb(102, 51, 255);"
  6. alink="#ffccff" link="#ffccff" vlink="#cc66cc">
  7. <?php
  8.   $cnx = mysql_connect( "localhost", "root", "" ) ;
  9.   $db = mysql_select_db( "contacts" ) ;
  10.   $pseudo  = $_GET["personne"] ;
  11.   $sql = "SELECT * FROM contacts
  12.           WHERE pseudo= $pseudo ";
  13. $requete = mysql_query( $sql, $cnx ) ;
  14. //affichage des données:
  15. if( $result = mysql_fetch_object( $requete ) )
  16.   {
  17.   ?>
  18. <form method='post' action='modifier.php'>
  19. <input type="hidden" name="id" value="<?php echo $result->id ;?>">
  20. <table style="width: 640px; height: 222px;">
  21.     <tbody>
  22.       <tr>
  23. <td>VotrePseudo</td>
  24. <td><input name="pseudo" id="pseudo" value="<?= $result->pseudo ?>"
  25. size="30" type="text"></td>
  26.       </tr>
  27.       <tr>
  28.         <td>Votre E-mail:</td>
  29.         <td><input name="email" id="email" value="<?= $result->email ?>"
  30. size="60"></td>
  31.       </tr>
  32.       ....
  33.     </tbody>
  34.   </table>
  35. <input value="Envoyer" type="submit"> - <input
  36. value="Annuler" type="reset">
  37. </form>
  38.   <?php
  39.   }//fin if 
  40.   ?>
  41. </body>
  42. </html>



maintenant ça m'affiche :
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\logiciel\easyphp\www\contacts\formulairemodif.php on line 16

et si je n'utilise pas mysql_fetch_object ça me met que des <BR>
:cry:

Répondre à cocolibri

:) il faut lire ce que fait la fonction avant de vouloir l'enlever, je t'ai donné le lien plus haut

remplaces les lignes mysql... par

Code :
  1. $cnx = mysql_connect( "localhost", "root", "" )  or die (mysql_error());
  2. $db = mysql_select_db( "contacts" )  or die (mysql_error());
  3. $pseudo  = $_GET["personne"] ;
  4. $sql = "SELECT * FROM contacts
  5.           WHERE pseudo= $pseudo ";
  6. $requete = mysql_query( $sql, $cnx )  or die (mysql_error());



et repostes l'erreur
tu es sûr de ta base? de la table etc...

Répondre à coca25

mmm... :heink:
je dois encore mettre la ligne :
if( $result = mysql_fetch_object( $requete ) )
ou pas? :pt1cable:
Si je la mets ça affiche rien.
Et si je la mets pas ça mets encore des <BR>...
J'ai regardé le fichier log d'Apache, il dit :
Undefined variable: result in c:\logiciel\easyphp\www\contacts\formulairemodif.php on line 17
et ça sur toutes les lignes bien sûr!

:cry: :cry: :cry:

Répondre à cocolibri

mais t'a lu ce que ca fait ou pas????

Code :
  1. $cnx = mysql_connect( "localhost", "root", "" ) ;  // ca se connecte à la base
  2. $db = mysql_select_db( "contacts" ) ;          // ca selectionne la table
  3. ....
  4. $requete = mysql_query( $sql, $cnx ) ;  // ca execute la requete
  5. if( $result = mysql_fetch_object( $requete ) )  // ca recupere le resultat



mysql_fetch_objet RECUPERE le resultat de ta requete, si tu l'enleves a quoi sert ton programme?

undefined variable => variable indéfini (en d'autres termes inconnu)
c'est normal si tu enleves la ligne if( $result = mysql_fetch_object( $requete ) ) qui la définit

t'as rajouté les die (mysql_error()) que je t'ai dit? ca te donne quoi?
t'as exécuté ta requête sur phpMyAdmin?

etc, etc...


Message édité par coca25 le 06-12-2006 à 18:12:00
Répondre à coca25

oki maintenant ça me mets:
Champ 'Caro' inconnu dans where clause
Je sais pas ce que ça veut dire... :o

Répondre à cocolibri

je suppose que tu veux lire les infos de la personne dont le pseudo est caro:
rajoutes des ' autour de pseudo

Code :
  1. $sql = "SELECT * FROM contacts
  2.           WHERE pseudo= '$pseudo' ";


Message édité par coca25 le 06-12-2006 à 18:25:57
Répondre à coca25

:pt1cable: :kaola: :sol: :whistle: :wahoo: :lol: :jap: :love:
WAAAAAAAAH ça MAAAARCHEEEE!!!!!!!!
:love: :love: :love: :love: :love: :love:
:pt1cable: :pt1cable: :pt1cable: :pt1cable: :pt1cable:
Merci beaucoup pour ton aide!!!
Sérieux t'as été trop patient avec moi et je t'en remercie vraiment beaucoup!! :bounce:

Répondre à cocolibri
Tom's Guide > Forum > Programmation > modifier une entrée d'une base de donnes
Aller à :

Il y a 1758 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens