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 :

Modification table PHP/SQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut Modification table PHP/SQL
    Bonjour;
    Je crée un script permettant de modifier les tables des BDD, pour la 1ère ca a marché, parcontre pour la table suivante j'ai une erreur SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 'WHERE C_id = '7'' at line 8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //creation de la requete SQL:
      $sql = "UPDATE c
                SET 
    		C_id     = '$id',
    		C_V_Time  = '$C_V_Time',
    		C_C_id = '$C_C_id',
               WHERE C_id = '$id' " ;
    Je rappelle que les champs modifiés sont bien transférés (formulaire, j'ai repris le même codage que pour la 1ère table !), le champs C_id est une clés primaire .
    Merci;

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    le message d'erreur a raison. il y a une virgule en trop avant le where.

    dans ce cas là il faut te débrouiller pour afficher la requête executée (variables substituée) et la tester dans phpmyadmin ou autre.

    ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Ok, merci, maintenant j'ai une autre erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data truncated for column 'C_V_Time' at row 1
    La data est du type 0.15 (même si je la modifie pas, ca m'affiche ce message d'erreur)

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    0.15 n'est pas un type de donnée j'ai envie de dire.
    la troncature est probablement un avertissement qui "passe" par le tuyau des erreurs.

    par hazard avant de dire:
    Citation Envoyé par SNY77
    Personne !?
    est ce que tu as fait:
    Citation Envoyé par Ulysse
    dans ce cas là il faut te débrouiller pour afficher la requête executée (variables substituées) et la tester dans phpmyadmin ou autre.

  5. #5
    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
    Bonjour,

    Tu peux donner la structure de ta table 'c' ?
    Je ne comprends pas le champ avec time dedans (ça suppose être une date, non?) et la valeur 1.5 ...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Non c'est un float (lorsque je disais type c'était pas dans le sens type de données )

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    ce qui vient à l'esprit c'est que float contient des valeurs approchées et la conversion envoie un avertissement. je n'en suis pas convaincu moi même. Essaie avec d'autres valeurs.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Mais lorsque je crée une ligne et je rentre 1.15 par exemple ça passe (remplissage d'une table via mon script PHP) parcontre lorsque je veux modifier une table (j'affiche les valeurs de la ligne à modifiée et même si je change pas le 1.15 j'ai l'erreur sql.

  9. #9
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    au vu des éléments je ne peux pas aller plus loin.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Lorsque je tappe la valeur en dur du champs en question (directement dans ma requête SQL sur ma parge PHP) la requête s'exécute correctement si je mets celle du formulaire ca m'affiche DATA TRUNCATED;

  11. #11
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    j'ai besoin de plus de code. le message peut venir d'une autre requête, si elle passe sans problème.

    http://dev.mysql.com/doc/refman/5.1/en/query-log.html pour activer la log sur tous les query executées. tu devrais retrouver celle qui te fait le message d'erreur dont tu te plains.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    //recuperation des valeurs des champs:
    $CALIBRATION_id = isset($_POST['CALIBRATION_id']) ? $_POST['CALIBRATION_id'] : '';
    $CALIBRATION_Name = isset($_POST['CALIBRATION_Name']) ? $_POST['CALIBRATION_Name'] : '';
    $CALIBRATION_Tolerance = isset($_POST['CALIBRATION_Tolerance']) ? $_POST['CALIBRATION_Tolerance'] : '';
    $CALIBRATION_Validity_Time = isset($_POST['CALIBRATION_Validity_Time']) ? $_POST['CALIBRATION_Validity_Time'] : '' ;
     
    $id = isset($_POST['id']) ? $_POST['id'] : '';
      //rcupration de l'identifiant de la personne:
     
     
      //cration de la requte SQL:
      $sql = "UPDATE calibration
                SET 
    			CALIBRATION_id = '$id',
    			CALIBRATION_Name = '$CALIBRATION_Name',
    		  CALIBRATION_Tolerance    = '$CALIBRATION_Tolerance',
    		  CALIBRATION_Validity_Time           = '$CALIBRATION_Validity_Time'
    		   WHERE CALIBRATION_id = '$id' " ;

  13. #13
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    ton code ne fait rien que construire la requête. je m'arrête là.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Non t'inquietes pas, j'exécute la requête!!! c'est juste que je l'ai pas mise! (d'où l'erreur renvoyé par mysql ...)

  15. #15
    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
    Bonjour,

    Peut être l'écriture de la requête, je suppose que Name et Tolerance sont des strings (dans ce cas des quotes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      $sql = "UPDATE calibration
                SET 
    	   CALIBRATION_id = $id,
    	   CALIBRATION_Name = '".$CALIBRATION_Name."',
                    CALIBRATION_Tolerance    = '".$CALIBRATION_Tolerance."',
                    CALIBRATION_Validity_Time = $CALIBRATION_Validity_Time
                 WHERE CALIBRATION_id = $id" ;
    Avec les simples quotes, ça peut changer ...

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Je rappelle mon problème :
    Je veux permettre la modification d'une table comportant 5 champs (une clés primaire et une clés étrangère) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     $sql = "UPDATE calibration
                SET 
    	   CALIBRATION_id = $id,
    	   CALIBRATION_Name = '".$CALIBRATION_Name."',
                    CALIBRATION_Tolerance    = '".$CALIBRATION_Tolerance."',
                    CALIBRATION_Validity_Time = $CALIBRATION_Validity_Time
                 WHERE CALIBRATION_id = $id" ;
    Clés primaire: CAL_id et Clés étrangère : CONFIG_id
    Lorsque la requête s'éxecute , j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data truncated for column 'CAL_Time' at row 1
    Je rappelle que pour les autres tables j'ai un code du même type et ca fonctionne (récupération des valeurs des variables par formulaires, demande du champs CAL_id ...)
    MERCI

  17. #17
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAL_Time           = '$CAL_Time', // int
    Je croyais que c'était un float ?

    Sinon comme $CALIBRATION_Validity_Time provient d'un $_POST, php convertit le string en entier. Utilises les fonctions floatval ou floatint.

    En dur, qd tu mets '1.15' il convertit directement en float mais pas qd c'est une variable ... dans ce cas essayes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $CALIBRATION_Validity_Time = isset($_POST['CALIBRATION_Validity_Time']) ? floatval($_POST['CALIBRATION_Validity_Time']) : '' ;
    Reste le cas du else avec la chaine vide !

  18. #18
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Data truncated for column 'CAL_Time' at row 1
    C'est où 'CAL_Time' dans ton code ?
    Je ne le vois nulle part dans tout le code que tu as posté.

  19. #19
    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
    Pourtant quand j'ai mis la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAL_Time           = '$CAL_Time', // int
    il y était le code

    Il était avec le post de l'erreur
    Data truncated for column 'CAL_Time' at row 1
    Bein il est où maintenant !!!

  20. #20
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 20
    Points
    20
    Par défaut
    Non au début je voulais pas mettre les vrais noms des champs ... Sinon c'est bon ca marche pour cette table là? MERCI A VOUS . Par contre j'ai un autre problème, pour une autre table, j'ai un certain nombre de champs dont certains peuvent être NULL, donc lorsque je demande la modification de cette table, j'affiche une ligne et si un champs est NULL je le laisse, lors de la confirmation j'ai un message d'erreur (apparemment je suis obliger de mettre une valeur même si initialement il n'en avait pas!).

Discussions similaires

  1. [sql server 2k] Connaitre date modification table / vue
    Par Filippo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/12/2014, 15h50
  2. [SQL-Server] Connexion à une table sous SQL Serveur Via PHP
    Par Phpdebut dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/01/2009, 16h03
  3. Modification Table sql
    Par jrlulu dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/12/2008, 08h08
  4. tables liées SQL et droit de modif des valeurs
    Par moby38 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/06/2008, 08h51
  5. [SQL] (PHP/SQL) Erreur de modification d'une valeur
    Par ymoreau dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/09/2006, 14h55

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