IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Update dans une BDD [MySQL]


Sujet :

PHP & Base de données

  1. #61
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Salut,

    - Bon j'ai regardé le UPDATE avec Mysql, c vrai que les parenthèses peuvent être enlevées (même si chez moi ça marche avec).

    - Sinon, tu sais que le cas if marche (ya bien insertion), le cas else merdouille ! ALORS:

    1) Pourquoi n'essayes tu pas un UPDATE très simple avec le champ info par ex
    2) Pourquoi tu update module alors que c ta comparaison, ya pas besoin de toucher à ce champs
    3) Du coup, session n'est pas dans le update, pourquoi?
    4) Tu peux ajouter l'option IGNORE si c un pb de clés,
    5) Datetime de sql correspond à ton format date();

    Au pire fin de matiné, j'implémenterais ton code dans mon éditeur (et même si je suis en Postgres) je l'aurais ....
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  2. #62
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Bonjour à tous et bienvenue sur les ondes Forum "Je suis un gros boulet"

    Bon apparemment pas tant que ca mais quand même...

    J'espère que vous avez tous passé un excellent Week-end et merci pour vos posts je ne m'attendais pas à autant de retour.

    Donc j'essaye tout ca et je reviens pour vous en redonner une couche.


  3. #63
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par baggie Voir le message
    Sur plusieurs posts on voit que ta variable $note est enregistrée comme ceci : ''

    Fais un echo de cette variable et dis nous ce que tu obtiens.
    Enregistré comment ?

    Voici ce que me donne un print_r de ma variable POST :

    Array ( [session] => Session 1 [module] => PAX [formateur] => Machin BIDULE [note] => 4 [description] => sdfdf [collab] => Henri DUPONT)
    1

  4. #64
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Amara Voir le message
    Je sais pas si c'est à cause de ça mais me semble que les parenthèses après SET sont de trop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table SET champ1=valeur1, champ2=valeur2, champ3=valeur3 WHERE cle1=valeur4 AND cle2=valeur5
    En fait les parenthèses sont facultatives, c'est comme on veut...
    (je trouve ca mieux car ca donne les indications sur les données qu'ont doit enregistrer)

  5. #65
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ben au lieu d'avoir une note, il y a des quotes : ''.

    '(module="Stability", formateur="Alexandre PIARD", note="", description="bob", da' at line 1
    Mais peut-être que tu n'avais saisi aucun variable.
    Comme l'a dit Fench, essaye de faire un update sur le premier champ uniquement. Si ça fonctionne, fais un update sur le premier ET le second champ, puis premier/second/troisième champ etc ...

    Dès que tu as une erreur, c'est que ton champ doit poser problème sûrement.

  6. #66
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Fench Voir le message
    Salut,

    - Bon j'ai regardé le UPDATE avec Mysql, c vrai que les parenthèses peuvent être enlevées (même si chez moi ça marche avec).

    - Sinon, tu sais que le cas if marche (ya bien insertion), le cas else merdouille ! ALORS:

    1) Pourquoi n'essayes tu pas un UPDATE très simple avec le champ info par ex
    2) Pourquoi tu update module alors que c ta comparaison, ya pas besoin de toucher à ce champs
    3) Du coup, session n'est pas dans le update, pourquoi?
    4) Tu peux ajouter l'option IGNORE si c un pb de clés,
    5) Datetime de sql correspond à ton format date();

    Au pire fin de matiné, j'implémenterais ton code dans mon éditeur (et même si je suis en Postgres) je l'aurais ....
    Alors, dans l'ordre :
    1/ Je viens d'essayer ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requpdate = mysql_query('UPDATE otl_formation SET (description="'.$description.'") WHERE module="'.$module.'" AND collab="'.$collab.'";') or die(mysql_error());
    ET ... Idem...

    Message SQL :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(description="toto") WHERE module="Bolted Joint" AND collab="Nom Prénom"' at line 1

    2/ Effectivement ca ne sert à rien...

    3/ Parce qu'il n'a rien à y faire, comme Module puisque on ce basse sur ca pour faire une sélection précise de ce qu'il y'a à modifier...

    5/ C'est à dire que SQL appliquera de lui même une date et une heure ???

  7. #67
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Ouais mais si tu mets des simple quote dans la requête comme baggie t'a dis, faut bien l'écrire partout, sinon double quote ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'UPDATE otl_formation SET (description="'.$description <- ya un truc qui cloche non ! :mouarf:
    Je mettrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "UPDATE otl_formation SET (description="'.$description
    Mets ta raquête dans une variable et fais un echo pour voir si elle est bien écrite !!!!!!
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  8. #68
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Fench Voir le message
    Ouais mais si tu mets des simple quote dans la requête comme baggie t'a dis, faut bien l'écrire partout, sinon double quote ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'UPDATE otl_formation SET (description="'.$description <- ya un truc qui cloche non ! :mouarf:
    Je mettrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "UPDATE otl_formation SET (description="'.$description
    Mets ta raquête dans une variable et fais un echo pour voir si elle est bien écrite !!!!!!
    pffffffffffffff, en fait c'était toute ma ligne qui était pourris (j'avais une parenthèse mal placé en fin de ligne aussi).

    Bon, donc je viens de faire une correction du code, une nouvelle entrée, ca fonctionne, une modif entre dans le else mais ne modifi pas la BDD.

    Array
    (
    [session] => Session 1
    [module] => Repairs
    [formateur] => Prénom NOM
    [description] => tyty
    [collab] => Prénom NOM
    )

    La nouvelle ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requpdate = mysql_query("UPDATE otl_formation SET (description='".$description."') WHERE module='".$module."' AND collab='".$collab."'");
    Sinon j'avais bien vu la ligne de baggie mais sèrieux j'avais pas vu l'erreur...

  9. #69
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    C'est vraiment un énormissime détail et je ne pense pas que ça change quoi que ce soit mais ...

    Rajoute le ';' à la fin de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND collab='".$collab."';");
    Dans la table otl_formation y'a bien les deux champs module et collab c'est sûr ?

  10. #70
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    OUUULA
    AND collab='".$collab."';");
    @baggie: tu as fait quoi ce W.E

    @GoodWear: mets ta chaine dans une variable et affichage LA.

    Au passage j'ai ça, ça marche aussi chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "UPDATE otl_formation SET description='$description' WHERE module='$module' AND collab='$collab'";
    $requpdate = mysql_query($query);
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  11. #71
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par baggie Voir le message
    C'est vraiment un énormissime détail et je ne pense pas que ça change quoi que ce soit mais ...

    Rajoute le ';' à la fin de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND collab='".$collab."';");
    Dans la table otl_formation y'a bien les deux champs module et collab c'est sûr ?
    Euh je plaide coupable, le point-virgule était là et je l'ai viré... J'avais aussi mon SQL or die qui était mal placé. Bon en tout cas ca ne change rien.

    Pour la table otl_formation :
    ID int(10) UNSIGNED Non auto_increment
    collab varchar(60) utf8_unicode_ci Non
    session varchar(30) utf8_general_ci Non
    module char(30) utf8_unicode_ci Non
    formateur char(20) utf8_unicode_ci Non
    note tinyint(3) UNSIGNED Non
    description text utf8_unicode_ci Non
    date datetime Non

    la table des collabs :
    ID int(10) UNSIGNED Non auto_increment
    agence varchar(3) utf8_general_ci Non
    prenom varchar(50) utf8_general_ci Non
    nom varchar(50) utf8_general_ci Non
    mail varchar(100) utf8_general_ci Non
    telephone varchar(10) utf8_general_ci Non
    date datetime Non

    la table des formateurs :
    ID int(10) UNSIGNED Non auto_increment
    agence varchar(3) utf8_general_ci Non
    prenom varchar(50) utf8_general_ci Non
    nom varchar(50) utf8_general_ci Non
    mail varchar(100) utf8_general_ci Non
    telephone varchar(10) utf8_general_ci Non
    date datetime Non

    des modules :
    ID int(10) UNSIGNED Non auto_increment
    module varchar(40) utf8_general_ci Non
    date datetime Non

    et des Sessions :
    ID int(10) UNSIGNED Non auto_increment
    session varchar(30) utf8_general_ci Non
    date datetime Non

  12. #72
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $requpdate = "UPDATE otl_formation SET (description='".$description."') WHERE module='".$module."' AND collab='".$collab."';";
    echo 'requete : '.$requpdate;
    Et copie nous le résultat du echo.

    On va bien le trouver ce problème !

  13. #73
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Fench Voir le message
    OUUULA


    @baggie: tu as fait quoi ce W.E

    @GoodWear: mets ta chaine dans une variable et affichage LA.

    Au passage j'ai ça, ça marche aussi chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "UPDATE otl_formation SET description='$description' WHERE module='$module' AND collab='$collab'";
    $requpdate = mysql_query($query);
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ENFIN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!





    (je ne suis pas fan de ce genre d'émoTicon mais là c'est la fête...

    Merci pour vos réponses en tout cas, c'est génial...

  14. #74
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Et bah voila

    Bien joué Fench ^^

  15. #75
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Au passage petite question, dans une BDD quand on a un champ ID auto-incrémenté, on enregistre des données, donc ca les rajoutes le ID passe à 1 puis 2 etc...

    Je suis à 10, un nouveau enregistrement, je passe à 11, je l'efface et j'en ajoute un je passe donc à 12 et je me retrouve avec un 'trou' au milieu.

    Est-ce qu'il y'a un moyen pour ré-affecter ces champs ID ???

    Autre question, je vous ais montré l'initialisation de mes variables un peu plus haut, je voulais savoir si d'un point de vue sécurité si c'était bon ou pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		$collab = htmlspecialchars($_POST['collab']);
    		$session = htmlspecialchars($_POST['session']);
    		$module = htmlspecialchars($_POST['module']);
    		$formateur = htmlspecialchars($_POST['formateur']);
    		$note = htmlspecialchars($_POST['note']);
    		$description = addslashes(htmlspecialchars($_POST['description']));
    Et encore merci pour votre soutien

  16. #76
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    COOOOOOLLLLLLL,

    Enfin, (quoique ce matin fût la bonne ).

    Parcontre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "UPDATE otl_formation SET description='$description' WHERE module='$module' AND collab='$collab'";
    $requpdate = mysql_query($query);
    et ce code marche aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "UPDATE otl_formation SET description='".$description.'" WHERE module='$module' AND collab='$collab'";
    $requpdate = mysql_query($query);
    J'ai même mélangé les deux

    Bref, j'dois avoir un interpréteur cool pas comme le tiens GoodWear

    Bonne journée à tous les deux et A+

    EDIT: pour pas alourdir ce post de 6 pages


    QUESTION 1: Pour remettre la table aux 0 des index => effacer puis refaire (copier/coller)

    QUESTION 2: Je vois pas trop l'interêt des htmlspecialchars ici car tu n'afficheras pas du code html !!!
    Sinon oui.
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  17. #77
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Le HTMLspecialChar ne sert pas pour les accents aussi ?
    Parce que si à l'affichage je ne met pas htmlspecialchars_decode je me retrouve avec des caractères bizarres...

    Et comme Editeur faut que je prenne 5 min pour Komodo Edit.
    Là je suis sur NotePad ++.

    EDIT : Je vais créer un autre POST car il y'a un petit soucis en fait... lol

  18. #78
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Oui, parceque, je crois que celui là est plein

    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  19. #79
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    NotePad++ est très bien !
    Si tu as des problèmes de caractères spéciaux, il faut voir du côté de l'encodage de tes fichiers.

  20. #80
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Points : 23
    Points
    23
    Par défaut
    Je suis en charset=iso-8859-1, comme le serveur...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les update dans une BDD
    Par P.O.K dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/06/2011, 17h07
  2. Faire un insert ou un update dans une bdd
    Par Aspic dans le forum Développement de jobs
    Réponses: 9
    Dernier message: 08/07/2010, 17h22
  3. [MySQL] Update dans une BDD (la suite)
    Par GoodWear dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 01/12/2009, 11h44
  4. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 11h33
  5. Pb d'update dans une DataGrid
    Par bidson dans le forum XMLRAD
    Réponses: 11
    Dernier message: 27/05/2003, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo