Page 1 sur 3

modifier des données sql

Posté : 31 juil. 2005, 15:50
par Pioupiou
Bonjour!
Je suis en train de créer une petite encyclopédie (ici). Je progresse pas à pas en ajoutant des petits plus... Il me manque trois choses pour parfaire ce début d'encyclopédie.
La zone admin permet d'ajouter des articles, de les supprimer, un seul ou tous, mais pas de les modifier... J'ai regardé les tutos sur la question, mais la plupart concerne une modification ponctuelle. Je prends l'exemple d'AZ-php:

Code : Tout sélectionner

//on modifie le prénom de l'id n°1 mysql_query("Update test_tbl Set prenom ='jean' where id ='1' ");
Moi je voudrais modifier le texte et le titre d'un article, lorsque je clique sur modifier dans la partie admin... Comme par exemple lorsqu'on clique sur modifier une message sur un forum phpbb, c'est à dire qu'une champ apparait, avec le titre et un autre avec le texte, et qu'on puisse modifier à volonté :) Mais je suis un peu perdu, je ne sais pas trop comment m'y prendre... Pour sélectionner le bon article, je pense me débrouiller, c'est le même fonctionnement que pour en supprimer un, mais pour modifier les données, la je bloque... :cry:
Voilà si quelqu'un peu me venir en aide... Merci d'avance! :D
Pioupiou

Posté : 31 juil. 2005, 15:54
par Ðjehouty
Oups, désolé, j'avais oublié que j'étais inscrit sur le forum...
Je voulais égalemetn poser une question: lorsqu'on lit l'article, on ne voit pas l'auteur et la date du message. Ca provient du fait que lorsque je sélectionne la table, je fais ca:

Code : Tout sélectionner

$req = mysql_query("SELECT * FROM essai_sql WHERE id='$id' ")
Mais comment dire que je veux qu'il sélectionne dans la table l'id mais aussi les autres, comme date, titre, etc... ? j'ai essaye de les mettre entre SELECT et * mais ca n'a rien donné :'(
Merci encore d'avance!

Posté : 31 juil. 2005, 16:12
par Cyrano
Une requête de modification peut se faire sur plusieurs champs simultanément, selon la structure suivante:

Code : Tout sélectionner

UPDATE table_x SET champ_1 = 'valeur 1', champ_2 = 'valeur 2', ..., champ_n = 'valeur n' WHERE champ_identifiant = 'id_x';
Comme tu vois, plussieurs champs mis à jour en même temps. Si tu oublies la clause WHERE en précisant un identifiant particulier, toute la table sera mise à jour avec les mêmes valeurs sur toutes les lignes....

Est-ce qu'il te manque autre chose ?

Posté : 31 juil. 2005, 19:43
par Ðjehouty
Merci de ta réponse =)
Je comprends le fonctionnement. Mais, je dois récupérer les données à modifier... Et je sais pas comment premièrement faire apparaître les données de "titre" par exemple, dans un input, modifiable a volonté, ni comment faire pour que ce que j'entre dans ce input soit modifié... Après je pense que je pourrais me débrouiller avec le code que tu m'a donné :|
Merci d'avance ;)
Djehouty[/code]

Posté : 31 juil. 2005, 19:46
par Cyrano
Si tu sais récupérer une donnée de la base, il te suffit de l'insérer dans le bout de code html avec un echo() ou un print().... Je ne vois pas trop où tu as une difficulté.

En outre sans code sur ce point de détail, on peut difficilement te dire s'il y a ou non une erreur.

Posté : 31 juil. 2005, 20:26
par Ðjehouty
Ah oki merci, je fais un essai :)

Posté : 31 juil. 2005, 20:34
par Ðjehouty
EH bien voici le code que j'ai mis:

Code : Tout sélectionner

$req = mysql_query("SELECT * FROM essai_sql WHERE id='$id' ") or die ("erreur sql ".mysql_error()); // on sélectionne les colonnes de la table essai_sql $req2 = mysql_query("SELECT titre,texte,auteur,email,id from essai_sql WHERE id='$id' ");
J'ai fait un req2, parce que je ne sais pas comment sélectionner titre, texte, etc.. avec le req normal...
Ensuite dans le code html:

Code : Tout sélectionner

<td> <div align="left"> <input type="text" name="titre" size="55" class="bouton" value="<? echo("$titre"); ?>"> </div> </td>
Et sur la page modifier, le titre n'apparait pas... > http://www.anneau-des-dieux.com/?page=w ... ifier&id=2

Posté : 31 juil. 2005, 21:21
par Cyrano
TU devrais faire un petit tour ICI

Posté : 31 juil. 2005, 21:31
par Ðjehouty
Merci cyrano, je me pencherais dessus demain matin je serai plus frais ;)

Posté : 01 août 2005, 10:34
par Ðjehouty
C'est bon, j'ai utilisé ce que tu m'a montré, et l'auteur la date et le mail sont affichés. J'avais également oublié un bout de code important :/
Mais je tente désespérément de faire apparaitre le titre dans la page modifier... J'ai tout essayé: les print, les echo, les rien du tout... :cry:
Voici le dernier code que j'ai mis:
<input type="text" name="titre" size="55" class="bouton" value="print  ('.$titre.');">
Et dans la page modifier, la case me met comme valeur initiale
print ('.$titre.');
Edit: J'ai remarqué que je n'ai pas mis les <? ?> dans le code... Mais ca change pas grand chose:

Code : Tout sélectionner

<input type="text" name="titre" size="55" class="bouton" value="<? print ('$titre'); ?>">

Posté : 01 août 2005, 10:36
par Cyrano
Forcément, tu essayes de faire interpréter du PHP par ton navigateur qui ne sait pas le lire, donc il envoie le contenu tel quel:
<input type="text" name="titre" size="55" class="bouton" value="<?php print($titre); ?>">
Là, ça devrait mieux fonctionner

Posté : 01 août 2005, 10:38
par Ðjehouty
Ah oui merci c'est mieux =) C'était surement mes ' ' qui mettaient le bazar ?

Posté : 01 août 2005, 10:55
par Ðjehouty
Pour en revenir a la modification, ca ne met aucun message, mais ca ne modifier rien... Voici le code de editer.php, page vers laquelle modifier renvoie:
<meta http-equiv="refresh" content="1;URL=?page=wiki&action=administrer">
<?
//on se connecte à la base de donnée
$db = mysql_connect('***','***','***') or die ("erreur de connexion");
//on selectionne votre base
mysql_select_db('***',$db) or die ("erreur de connexion base");

mysql_query("UPDATE essai_sql SET titre='$titre', texte='$titre' WHERE id='$id'");

mysql_close();

?> 
<div align="center"><span class="add">Modification en cours...</span></div>
Le code ne doit pas être bon... :?

Posté : 01 août 2005, 11:43
par Cyrano
Fais afficher la requête générée et si elle a l'air correcte, essaye de l'exécuter directement dans phpMyAdmin. S'il y a une rreur, tu auras le message correspondant.

Posté : 01 août 2005, 16:23
par Ðjehouty
Euh désolé, je comprends pas tout là :| Comment j'affiche la requête générée? (pour info j'utilise eskuel, donc je sais pas si avec ca je peux le faire :s)