Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
742 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP 5] base de données mysql : commande 'UPDATE' ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP 5] base de données mysql : commande 'UPDATE' ?

n°1861565
gizmo27
Posté le 14-03-2009 à 19:35:30  profilanswer
 

Salut à tous :)
 
J'ai crée une table dans une base de données : table comportant 6 champs que sont : nompage, adressepage, contenu1, contenu2, contenu3, contenu4
 
Je crée ensuite 5 enregistrements
 
Je rajoute ensuite 1 nouvel enregistrement :

Code :
  1. $nouv = mysql_query("INSERT INTO mespages (nompage) VALUES ('$valeurpage')" );


 
Il y a maintenant 6 enregistrements.
 
Et je mets à jour ma table avec la commande avec :
 

Code :
  1. $majpage = mysql_query("UPDATE mespages SET nompage=$n1, contenu1=$c1, contenu2=$c2, contenu3=$c3, contenu4=$c4 WHERE nompage=$n1" );


 
Ma question : quelqu'un peut-il m'expliquer précisément la commande UPDATE, avec SET et WHERE ? ce qui se passe exactement lors de cette instruction ?
 
où est passé le champ 'adressepage' ? il est manquant lors de la mise à jour : c'est pas normal ?

mood
Publicité
Posté le 14-03-2009 à 19:35:30  profilanswer
 

n°1861570
Profil sup​primé
Posté le 14-03-2009 à 19:43:14  answer
 

UPDATE met à jour les enregistrements sélectionnés, SET précise le champ à modifier et sa nouvelle valeur, WHERE définit quelle(s) ligne(s) doit(vent) être sélectionnée(s).

n°1861583
gizmo27
Posté le 14-03-2009 à 20:07:00  profilanswer
 

petite précision : quand tu dis pour WHERE qu'il définit les lignes à modifier, par "lignes" tu entends "champs" ?

n°1861591
NewsletTux
<Insérez ici votre vie />
Posté le 14-03-2009 à 20:28:02  profilanswer
 

non. Une table de base de données, c'est une liste d'enregistrements, lesquels sont définis par des champs.
 
exemple, la table "amis" est définie par les champs :
- id
- prénom
- nom
- adresse
- cp
- ville
Chaque champ est typé (entier, texte, binaire, clé, index ...) cela forme le dictionnaire de données.
 
un enregistrement, c'est une nouvelle ligne.
Par exemple (1, 'toto', 'blabla', '1 rue truc', '01234', 'Biduleville') est un enregistrement dont l'ID est 1.
 
EDIT : par rapport à ton titre, ça n'a rien à voir avec une version de PHP, c'est une requête SQL donc ça a plus un rapport avec une normalisation de langage SQL.


Message édité par NewsletTux le 14-03-2009 à 20:29:07

---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1979568
mburu
Posté le 31-03-2010 à 15:47:30  profilanswer
 

Je suppose que si tu demandes cela, c'est que tu travailles sur le livre "PHP 5 - formation rapide, l'autoformation par l'exemple" de François Pellerin. Ta question m'intéresse parce que j'arrive au même point et cela ne fonctionne pas... Quand j'apporte des changements à mes pages, ces changements ne vont pas dans la table !: Bref, si depuis ton message, tu as eu des réponses permettant de débloquer la situation, je suis intéressé...

n°1979615
PunkRod
Digital Mohawk
Posté le 31-03-2010 à 17:07:24  profilanswer
 

Y a pas assez de précisions pour pouvoir vous aider.
 
Essayez ceci :

Code :
  1. $requete = "UPDATE mespages SET nompage=$n1, contenu1=$c1, contenu2=$c2, contenu3=$c3, contenu4=$c4 WHERE nompage=$n1"
  2. $majpage = mysql_query( $requete) or die("Ma requete = ".$requete."<br />Et l'erreur : <br />".mysql_error());


 
Là on aura en cas d'échec :
- le code de la requete pour vérifier les éventuels problèmes d'accents. ($c1 / $c2 / $c3 / $c4 sont ils proprement formatés ?!)
- le message d'erreur mysql s'il y a un problème.
- l'interruption du script en cas d'erreur.
 
L'autoformation c'est bien. Mais avant de filer du code à l'arrach' l'auteur devrait filer les astuces pour apprendre à debugger. Coder dans le brouillard ça marche jamais :o

n°1979617
stealth35
Posté le 31-03-2010 à 17:12:57  profilanswer
 

y'a pas de quote pour les valeurs ?
 
nompage=$n1
nompage='$n1'

n°1979932
rufo
Pas me confondre avec Lycos!
Posté le 01-04-2010 à 12:52:01  profilanswer
 

si ce sont des champs de caractères ou des dates, il faut mettre entre quotes les valeurs des champs.
 
Pour info, quand on fait un UPDATE, on n'est pas obligé de donner tous les champs avec leur valeur : on ne mentionne dans le SET que ceux qui vont avoir une nouvelle valeur. Pour le WHERE, il me semble qu'on ne peut mettre que des champs se trouvant dans la même table (c'était vrai en mysql 4.x en tout cas, en 5, je ne sais pas si ça a changé).
 
Par ailleurs, on peut faire aussi des trucs de ce genre :
UPDATE MaTable SET Champ1 = Champ1 + 1;
 
Ca va avoir pour effet d'incrémenter le champ "Champ1" de tous les enregistrements de la table ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP 5] base de données mysql : commande 'UPDATE' ?

 

Sujets relatifs
Requête mysqlFaire passer un session PHP ou Cookies en différent domaines
Update d'une table sur conditions dans une autre tableErreur MYSQL
classes et base de données =/faire une recherche de donnees et les afficher /access /vb6
Exploitation de données (> 65 l lignes)Quelle est la commande .bat qui récupère la taille d'un disque dur ?
[PHP] REGEX ou pas dans mon cas ? 
Plus de sujets relatifs à : [PHP 5] base de données mysql : commande 'UPDATE' ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR