Modifier le contenu de la base

Eléphanteau du PHP | 38 Messages

22 août 2005, 15:09

Salut Oukileou

Enécrivant ceci :

Code : Tout sélectionner

$sql = $UPDATE brice SET text='$text' , prix='$prix' WHERE ID='$text' OR ID='$text' ";
Je me retrouve avec ceci :

Code : Tout sélectionner

Unknown column 'ID' in 'where clause'
Colonne inconnu, pourtant j'ai bien dans ma table "brice" deux champs nommé prix et text. :shock: Faut-il respecter l'ordre d'insertion ?

diabolo

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 août 2005, 15:20

Colonne ("ID") inconnu, pourtant j'ai bien dans ma table "brice" deux champs nommé prix et text. :shock:

Eléphanteau du PHP | 38 Messages

22 août 2005, 15:24

Bon daccord php et moi on se connait depuis peu donc je lis les tuto à droite et à gauche j'expérimente , comme tout ceux qui on débuté !

Du coup je fait des amalgammes entres les différentes expression utilisé en php :oops:

Mammouth du PHP | 19672 Messages

22 août 2005, 15:28

Code : Tout sélectionner

$sql = $UPDATE brice SET text='$text' , prix='$prix' WHERE ID='$text' OR ID='$text' ";
Tu as bien regardé ta requête :shock: :?:
La réponse t'indique que ta table ne possède pas de colonne "ID" d'une part, et ensuite, tu fais WHERE ID = $text alors qu'il serait logique d'avoir quelque chose comme WHERE ID = $id. $text n'a de rapport avec l'ID que parce qu'il est sur la même ligne qu'un identifiant, mais la valeur n'est certainement pas la même.
Et pour couronner le tout, tu fais WHERE ID='$text' OR ID='$text', autrement dit, soit l'ID correspond au texte, soit ID correspond au texte... :-k

Enfin, tu écris $UPDATE : depuis quand c'est une variable ça ??

Est-ce que ta requête ne devrait pas plutôt ressembler à :
$sql = "UPDATE brice SET text='". $text ."' , prix='". $prix ."' WHERE ID='$id'";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

22 août 2005, 16:05

Ok dans mon code que j'ai recopié d'un pc à l'autre il y as beaucoup d'erreur de transcription.

Ce n'est pas $UPDATE que je voulais écrire mais "UPDATE de même pour ID='$text' ecrit deux fois au lieu d'en remplacer un par ID='$prix' . Ce qui de toute façon étais également faux.

Ceci

Code : Tout sélectionner

$sql = "UPDATE brice SET text='". $text ."' , prix='". $prix ."' WHERE ID='$id'";
Donne ceci :

Code : Tout sélectionner

Unknown column 'ID' in 'where clause'
Je vous donne quelque info sur la table pour vous aider :
J'ai 4 champs dans ma table "brice".

"Numlogin" qui s'auto-incrémente
ensuite un champs "non" puis "text" et enfin "prix".

Pour faire cette modif j'appelle le contenu des champs à modifier en utilisant le champs "nom". Je tape en effet le nom d'une toile. Le text et le prix en rapport avec celle-ci s'affiche alors.

Je souhaite ensuite modifier le prix et le text. Je pense que je devrais repèrer mon enregistrement différemment. Par exemple par rapport à mon champ ""numlogin ou plutot le champ "nom".

Mais comment faire ?

Merci

diabolo

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2005, 16:10

Bah donc, ton champ ne s'appelle pas ID ?

Mammouth du PHP | 19672 Messages

22 août 2005, 16:12

Alors sois logique scrongneugneu, ça devrait te sauter aux yeux comme la vérole sur le bas-clergé :
$sql = "UPDATE brice SET text='". $text ."' , prix='". $prix ."' WHERE Numlogin='". $id ."'";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

22 août 2005, 16:39

Cette fois plus d'erreur mais pas de mouvement dans ma base non pus ! :?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2005, 16:54

Bon tu progresses :)
Quand tu as un souci :
- tu dis quel est le problème
- tu remets ton code (requête SQL et PHP dans ton cas) car tu l'as modifié, et nous ne savons plus à quoi il ressemble.

Eléphanteau du PHP | 38 Messages

22 août 2005, 16:57

Ok alors le code est ceci :

Code : Tout sélectionner

$text = mysql_escape_string ($text); $prix = mysql_escape_string ($prix); $sql = "UPDATE brice SET text='". $text ."' , prix='". $prix ."' WHERE Numlogin='". $id ."'"; $res = mysql_query($sql) or die (mysql_error() ) ;
Je n'ai plus d'erreur sql mais aucune modification se fait dans ma base

diabolo

Mammouth du PHP | 19672 Messages

22 août 2005, 16:58

fais afficher ta requête pour vérifier que tu as bien une valeur pour chaque variable
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

22 août 2005, 17:02

:oops: Heu je fais sa comment ?

Mammouth du PHP | 19672 Messages

22 août 2005, 17:03

echo($sql) peut-être ? ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

22 août 2005, 17:16

Effectivement !

Code : Tout sélectionner

UPDATE brice SET text=' 1234et 5678 ' , prix='' WHERE NumLogin='' Warning: Cannot modify header information - headers already sent by (output started at /home/diapason/www/brice/modif.php:23) in /home/diapason/www/brice/modif.php on line 27

Mais dans cette requête j'aurai du trouvé text='azerty et toto' prix='1234 et 5678' car c'est bien ce que j'ai écrit !

La ligne 27 correspond au header("location:index.php");[/code]

Mammouth du PHP | 19672 Messages

22 août 2005, 17:22

LLe header, c'est pas grave, ça disparaitra quand tu auras débuggué et que tu pourras enlever le echo($sql)

Ça signifie également que tu récupères mal les informations qui doivent être envoyées vers la base. Si elles arrivent d'un formulaire, quelle méthode est utilisée ? Et comment les récupères-tu pour les traiter?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: