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

Langage PHP Discussion :

Requête et auto incrémente


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Requête et auto incrémente
    Bonjour, mon problème est assez complèxe a expliquer je vais donc faire de mon mieu :

    J'ai un formulaire, et je veux faire 2 requetes à la suites dans 2 tables différentes, la premiere est une basique aucun problème pour sa création mais la deuxieme se sert de l'auto incrémente du premier(ID).
    Pour faire la deuxième requête je me sers donc de la première c'est à dire que je lui prends un champ unique(codification) et je le met dans une condition "WHERE".
    Cependant la deuxieme requete n'arrive pas à valider la condition "WHERE" car je pense qu'il lance les deux requetes en meme temps.

    Exemple plus concret avec des tables inventées pour essayer de completer cette explication un peu floue.


    REQUETE 1 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table1 value (null,blablabla)
    donc dans la table1 :

    table1_ID | table1_codfication
       3               blablabla
    J'utilise donc une requête intermédiaire pour selectionné codification donc blablabla dans une variable ( = variable )


    REQUETE INTERMEDIAIRE :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select table1_id FROM table1 WHERE table1_codification=blablabla


    table2 :

    tabl2_ID | champcaché | table_ID ( de la table 1 )
        1              lolo               3
    REQUETE 2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table2 value (null,lolo,table1_id where $variable=blablabla)



    J'ai aussi essayer de rajouter un if(requête1 executer) alors lancer requête2 mais toujours la même erreur :
    Erreur SQL !select table1_id FROM table1 WHERE table1_codification=blablabla
    Champ 'blablabla' inconnu dans where clause.
    Je n'ai aucune idée de comment resoudre mon problème...
    Si quelqun a compris mon explication et pourrait m'aider je suis tout ouï !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 53
    Points
    53
    Par défaut
    Il manque du code pour qu'on puisse t'aider !

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Salut,

    As tu vérifié que ce ne soit pas un bête problème de syntaxe (genre ' manquant) ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Oui je n'ai pas d'erreur concernant les requêtes SQL la première se créer dans la base de données mais la deuxieme ne se créer pas à cause de le condition WHERE qui n'est pas respecté.

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Salut,

    En fait je demandais si dans ton select, tu écris bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT table1_id FROM table1 WHERE table1_codification='blablabla'
    Parce que sql est tres pointilleux la dessus

  6. #6
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Non ce n'est pas le vrai code je poste le vrai si ça peut vous aider
    car je m'attendais a avoir la manipulation nécessaire car mon code n'a pas d'erreur de syntaxe.

    REQUETE 1 :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
     
    $processus=$_POST["processus"]; 
    $domaine=$_POST["domaine"];  
    $sous_domaine=$_POST["sous_domaine"];  
    $circuit=$_POST["circuit"]; 
    $codification=$_POST["codification"];
    $libelle=$_POST["libelle"];
    $type=$_POST["type"];
    $valeur=$_POST["valeur"];
    $valuation=$_POST["valuation"];
    $VPU_valeur=$_POST["VPU_valeur"];
     
    $_SESSION["processus"]=$processus;
    $_SESSION["domaine"]=$domaine;
    $_SESSION["sous_domaine"]=$sous_domaine;
    $_SESSION["circuit"]=$circuit;
    $_SESSION["codification"]=$codification;
    $_SESSION["libelle"]=$libelle;
    $_SESSION["type"]=$type;
    $_SESSION["valeur"]=$valeur;
    $_SESSION["valuation"]=$valuation;
    $_SESSION["VPU_valeur"]=$VPU_valeur;
     
     
    {
    $requete1="INSERT INTO param_util VALUES (NULL,'$processus','$domaine','$sous_domaine','$circuit','$codification','$libelle','$type','$valeur','$valuation')";
    mysql_query ($requete1) or die ('Erreur SQL !'.$requete1.'<br />'.mysql_error());  
    $a=1;
    }
    if ( $a==1)  {
    echo '<script language="Javascript">
    
    document.location.replace("valider.php");
    
    </script>';
    }
    }
    ?>
    (je ne sais pas comment je dois separer le php du javascript sachant que le javascript est compris dans le php donc je le laisse packer")


    REQUETE 2 :


    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
    19
    20
    21
    22
    23
    <?php 
     
     
    $base = mysql_connect ('mabdd','user','pass');  
    mysql_select_db ('mabase') ;
    session_start();
     
     
     
    $par="SELECT PAR_id FROM param_util WHERE PAR_codif=".$_SESSION['codification'];
     
    mysql_query ($par) or die ('Erreur SQL !'.$par.'<br />'.mysql_error());  
     
     
    $requete2="INSERT INTO valeurs_param_util VALUES (NULL,'.$VPU_valeur.','$par')";
     
    mysql_query ($requete2) or die ('Erreur SQL !'.$requete2.'<br />'.mysql_error());  
     
     
    header('Location: listeparametre.php);
    
    
    ?>

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut
    hello,

    pourtant,
    Erreur SQL !select table1_id FROM table1 WHERE table1_codification=blablabla
    Champ 'blablabla' inconnu dans where clause.
    dans ton exemple la réponse est claire : Champ 'blablabla' ... donc il considère bien qu'il s'agit d'un champ et pas d'une "string".


    je note aussi qu'il y a une petite erreur dans ta requete 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: listeparametre.php');

  8. #8
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Oki, et que donne le var_dump de $_SESSION['codification']?

  9. #9
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Pour le header oui je l'ai modifier car le liens est assez long mais dans mon code le " ' " est présent.
    En ce qui concerne ta première remarque je me serais alors trompé dans une cotte ou double cotte ?

  10. #10
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par zwaldo Voir le message
    hello,

    pourtant,


    dans ton exemple la réponse est claire : Champ 'blablabla' ... donc il considère bien qu'il s'agit d'un champ et pas d'une "string".


    je note aussi qu'il y a une petite erreur dans ta requete 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: listeparametre.php');
    Tres bien vu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $par="SELECT PAR_id FROM param_util WHERE PAR_codif='".$_SESSION['codification']."'";
    devrait marcher

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si PAR_codif est une chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $par='SELECT PAR_id FROM param_util WHERE PAR_codif="'.$_SESSION['codification'] .'"';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Malinaka Voir le message
    Oki, et que donne le var_dump de $_SESSION['codification']?

    si dans le champ codification je rentre codification lors de la création du paramètre il me dit exactement :

    string(12) "codification"

  13. #13
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Si PAR_codif est une chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $par='SELECT PAR_id FROM param_util WHERE PAR_codif="'.$_SESSION['codification'] .'"';

    Apparament ta requête est bonne je te remercie mais il me met une autre erreur que je n'ai jamais eu auparavant !

    Notice: Undefined variable: VPU_valeur in /var/www/html/ged_wf/include/pages/param_util/valider.php on line 14
    Erreur SQL !INSERT INTO valeurs_param_util VALUES (NULL,'..','SELECT PAR_id FROM param_util WHERE PAR_codif="codif"')
    Cannot add or update a child row: a foreign key constraint fails (`ged/valeurs_param_util`, CONSTRAINT `valeurs_param_util_ibfk_1` FOREIGN KEY (`PAR_id`) REFERENCES `param_util` (`PAR_id`) ON DELETE CASCADE ON UPDATE CASCADE)
    Je vais chercher se qu'il ne va pas

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La partie important de l'erreur est que $VPU_valeur n'est pas défini.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    J'ai corriger l'erreur pour VPU_valeur, mais l'erreur :
    Erreur SQL !INSERT INTO valeurs_param_util VALUES (NULL,'jiji','SELECT PAR_id FROM param_util WHERE PAR_codif="kiki"')
    Cannot add or update a child row: a foreign key constraint fails (`ged/valeurs_param_util`, CONSTRAINT `valeurs_param_util_ibfk_1` FOREIGN KEY (`PAR_id`) REFERENCES `param_util` (`PAR_id`) ON DELETE CASCADE ON UPDATE CASCADE)
    Je suis dans une impasse apparament il ne veut pas faire les deux requetes en php.

    Il faudrait essayer avec un autre language des requêtes dynamiques ?

  16. #16
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    Pourquoi ne pas stocker ton id dans une variable plutot? Ca me semble un peux dangereux comme methode d'insertion

  17. #17
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    C'est déjà ce que je fais non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $VPU_valeur=$_SESSION['VPU_valeur'];
     
     
     
    $par='SELECT PAR_id FROM param_util WHERE PAR_codif="'.$_SESSION['codification'] .'"';
     
    mysql_query ($par) or die ('Erreur SQL !'.$par.'<br />'.mysql_error());  
     
     
    $requete2="INSERT INTO valeurs_param_util VALUES (NULL,'$VPU_valeur','$par')";
     
    mysql_query ($requete2) or die ('Erreur SQL !'.$requete2.'<br />'.mysql_error());

  18. #18
    Membre confirmé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Points : 491
    Points
    491
    Par défaut
    On dirait que c'est la requète qui est stocké, pas le résultat, d'où l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO valeurs_param_util VALUES (NULL,'jiji','SELECT PAR_id FROM param_util WHERE PAR_codif="kiki"')
    Edit: il est d'ailleurs spécifier dans la doc que "mysql_query() envoie une seule requête (les requêtes multiples ne sont pas supportées) ". tu doit parser ton resultat à l'aide de la fonction fecth pour recuperer l'id, tu trouveras toutes les infos ici

  19. #19
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Comment puis-je faire dans ce cas ? car si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete2="INSERT INTO valeurs_param_util VALUES (NULL,'$VPU_valeur',$par)";
    ($par)
    J'ai l'erreur :

    Erreur SQL !INSERT INTO valeurs_param_util VALUES (NULL,'aaaaa',SELECT PAR_id FROM param_util WHERE PAR_codif="zz")
    Erreur de syntaxe près de 'SELECT PAR_id FROM param_util WHERE PAR_codif="zz")' à la ligne 1



    Et si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete2="INSERT INTO valeurs_param_util VALUES (NULL,'$VPU_valeur','$par')";
    ('$par')

    J'ai l'erreur avec les cascades cité précedament.

  20. #20
    Membre à l'essai
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    J'ai trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete2="INSERT INTO valeurs_param_util VALUES (NULL,'$VPU_valeur','$par')";


    Il manquait juste des parenthèse
    c'etait ($par) et non '$par'.

    Bonne journée à tous !

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

Discussions similaires

  1. [AC-2010] créer une requête avec auto incrémentation
    Par fabian123 dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2012, 16h14
  2. [MySQL] Récupérer valeur auto-incrément après requête DELETE
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/01/2011, 12h36
  3. Réponses: 21
    Dernier message: 28/06/2010, 08h40
  4. [AC-2007] Requête avec auto incrémentation
    Par benoit85 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/05/2009, 11h13
  5. Réponses: 3
    Dernier message: 27/11/2005, 20h57

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