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 :

php: requete de selection


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut php: requete de selection
    Bonjour,
    j'ai fait un formulaire et je travaille avec php
    le formulaire c'est pour un enseignant il fait entrer son matricule et son sujet et son module
    dans la base de données j'ai fai une table que j'ai nommé
    formulaire(id_form,sujet,matricule,module)
    pour insérer le formulaire dans la table j'ai pas de problème j'ai fai une requête d'insertion marche bien.
    mon problème ce que je veux récupéré la valeur id_form
    (id_form : c'est une clé de la table formulaire +auto_incrément)
    je sais c'est avec une requête de sélection
    je peux pas faire : SELECT id_form FROM formulaire where sujet="" ou module="" ou matricule=""
    car : un enseignant peut faire plusieurs formulaire et module peut se faire par plusieurs enseignants et le même sujet peut être répété
    alors je n'arrive pas a trouver avec quoi je récupère le id_form
    si quelqu'un pourrez m'aider
    je remercie d'avence.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    alors je n'arrive pas a trouver avec quoi je récupère le id_form
    Quel id_form veux-tu récupérer ?? Celui qui vient d'être inséré ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    je me suis trompé au lieu de répondre j'ai cliqué sur résolu
    oui je veux récupérer l'id du formulaire de celui qui vient de s'inserer
    merci

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Avec l'API MySQL de PHP : mysql_insert_id( ) http://fr.php.net/mysql-insert-id
    Dans une requête MySQL : LAST_INSERT_ID( )

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    doucement!!!
    mysql_insert_id() ou bien mysql_insert_last()
    désolé mais j'ai pas compri
    je pense que mysql_insert_id() est une fonction et moi sur mon code je travaille avec des fonction
    je vous montre une petit partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sqlform = "INSERT INTO formulaire (id_form, sujet, matricule_en, id_mod) VALUES('', '$sujet', '$matricule', '$reference') ";
    		$reqform = mysql_query($sqlform,$connexion) or die("insertion impossible : $sqlform".mysql_error());
     
     
    		    //RECUPERATION DU ID_FORM  DE LA TABLE FORMULAIRE
    		$sqlfr = "SELECT id_form FROM formulaire WHERE
    et la je suis bloqué.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Qu'est-ce qui te bloque exactement ?
    Si tu veux des exemple d'utilisation tu en trouveras dans la doc PHP : http://fr.php.net/mysql-insert-id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exemple #1 Exemple avec mysql_insert_id()
    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
    die('Impossible de se connecter : ' . mysql_error());
    }
    mysql_select_db('mydb');
     
    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf("Le dernier ID inséré dans est le id %d\n", mysql_insert_id());
    ?>

  7. #7
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    En théorie quand tu fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sqlform = "INSERT INTO formulaire (id_form, sujet, matricule_en, id_mod) VALUES('', '$sujet', '$matricule', '$reference') ";
    		$reqform = mysql_query($sqlform,$connexion) or die("insertion impossible : $sqlform".mysql_error());
    Normalement la valeur de $reqform devrait contenir le numéro de l'id de la ligne entrée...

    Maintenant si cela ne marche pas tu devrais essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //RECUPERATION DU ID_FORM  DE LA TABLE FORMULAIRE
    $sqlfr = "SELECT MAX(id_form) FROM formulaire";
    ou alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //RECUPERATION DU ID_FORM  DE LA TABLE FORMULAIRE
    $sqlfr = "SELECT id_form FROM formulaire ORDER BY id_form DESC LIMIT 1";
    @+
    Cadou

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par cadoudal56 Voir le message
    En théorie quand tu fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sqlform = "INSERT INTO formulaire (id_form, sujet, matricule_en, id_mod) VALUES('', '$sujet', '$matricule', '$reference') ";
    $reqform = mysql_query($sqlform,$connexion) or die("insertion impossible : $sqlform".mysql_error());
    Normalement la valeur de $reqform devrait contenir le numéro de l'id de la ligne entrée...
    Tu es sûr ? Dans la doc il est dit :

    Pour les [autres types de] requêtes, INSERT, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.
    Maintenant si cela ne marche pas tu devrais essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //RECUPERATION DU ID_FORM  DE LA TABLE FORMULAIRE
    $sqlfr = "SELECT MAX(id_form) FROM formulaire";
    ou alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //RECUPERATION DU ID_FORM  DE LA TABLE FORMULAIRE
    $sqlfr = "SELECT id_form FROM formulaire ORDER BY id_form DESC LIMIT 1";
    Pas une très bonne idée en cas d'accès concurrent. Mettons le scénario suivant :
    - User 1 : INSERT => ID généré = 123
    - User 2 : INSERT => ID généré = 124
    - User 1 : MAX(ID) => ID 124 alors qu'il aurait dû récupéré ID 123

    mysql_insert_id( ) est censé récupérer le dernier id généré par le dernier INSERT de la cnx courante.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    +1 seb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sqlfr = mysql_insert_id( );
    tout simplement

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    mercii bcp seb et cadoudal
    je vais ésseyé de faire un printf comme a montrer seb
    si j'aurais d'autre problème je serai de retour
    merci bcp

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    merci aussi boo64

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    j'ai un autre problème,je sais pas si je vais arriver a vous expliquez.
    l'enseignant il fait entrer des question et des réponses aussi en donnant une note a chaque réponse
    alors j'ai créer dans ma base de données une table note
    note(id_not,not) (le id_not c'est auto increment)
    et la dans cette table : j'ai fai entrer des note de 0 a 20
    id_not (0) =1
    id_not(1) =2 .......
    et une table reponse(id_rep,rep,id_not)
    le probleme que j'ai rencontrait lor de l'insertion d'un reponse le id_rep=id_not
    et puisque id_rep est une clef alors une erreur
    estceque quelqu'un pourrez m'aider en me donnant une idée ou une solution pour faire la table note dans la base de données

  13. #13
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par info3licen Voir le message
    et une table reponse(id_rep,rep,id_not)
    le probleme que j'ai rencontrait lor de l'insertion d'un reponse le id_rep=id_not
    et puisque id_rep est une clef alors une erreur
    ??! Il ne devrait pas y avoir d'erreur, une clef primaire et une clef étrangère peuvent avoir la même valeur. Par contre je ne vois pas de champ id_question, normal ?

    estceque quelqu'un pourrez m'aider en me donnant une idée ou une solution pour faire la table note dans la base de données
    Idée : faire sans la table notes qui m'a l'air de ne servir à rien, stocke la note directement dans la table "reponse".

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    tu a sun soucis de structure de table peux tu nous poster les tables que tu as


  15. #15
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    une clé primaire et une clé etrengere peuvent avoir la même valeur
    merci je le savais pas
    pour la table note : j'ai rajouté cette table parce qu' elle est présente dans mon diagramme de classe (une classe note)
    alors d'après mes connaissance la classe note se transforme en une relation et la relation en une table.c'est pour sa j'ai fait une table note
    pour le id_qst n'est pas présent mais id_rep est présent dans la table question
    (c'est pas du php,on a toute a fai changer d sujet)
    merci seb

  16. #16
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    j'ai pas de code sql pour les tables
    j'ai crée les table directement avec phpmyadmin
    désolé boo64

  17. #17
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    pour le id_qst n'est pas présent mais id_rep est présent dans la table question
    Donc une question n'a qu'une réponse possible ?? Ce n'est donc pas un QCM ? Si une question n'a qu'une réponse pourquoi créer une table "reponse" ? Tu pourrais mettre la réponse et la question (et la note) directement dans la table questions.

    Bon, comme le recommande boo64 vaudrait mieux que tu nous donnes ton schéma.

  18. #18
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par info3licen Voir le message
    j'ai pas de code sql pour les tables
    j'ai crée les table directement avec phpmyadmin
    Depuis phpMyAdmin tu peux exporter le schéma.

  19. #19
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Par défaut
    une question a une seule réponse même réponse a une seule question sauf si un questionnaire (vrai ou faux)
    merci encore seb j'ai exporter le code de phpmyadmin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `formulaire` (
      `id_form` int(11) NOT NULL auto_increment,
      `Sujet` varchar(20) NOT NULL,
      `matricule_en` varchar(20) NOT NULL,
      `id_mod` int(11) NOT NULL,
      `id_typ` int(5) NOT NULL,
      PRIMARY KEY  (`id_form`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `question` (
      `id_qest` int(11) NOT NULL auto_increment,
      `qst` varchar(60) NOT NULL,
      `id_form` int(11) NOT NULL,
      `id_rep` int(11) NOT NULL,
      `id_typ` int(5) NOT NULL,
      PRIMARY KEY  (`id_qest`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE `reponse` (
      `id_rep` int(11) NOT NULL,
      `rep` varchar(30) NOT NULL,
      `id_not` int(11) NOT NULL,
      PRIMARY KEY  (`id_rep`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE `note` (
      `id_not` int(11) NOT NULL auto_increment,
      `nota` int(20) NOT NULL,
      PRIMARY KEY  (`id_not`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    une réponse a-t-elle plusieurs note?

Discussions similaires

  1. TABLE pointant sur elle-même, requete de selection recursive
    Par Mike@Nestor dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/07/2005, 14h50
  2. Réponses: 1
    Dernier message: 13/04/2005, 14h41
  3. [SQL+php] requete a trouver
    Par theclear dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/10/2004, 09h50
  4. [MySQL 4] Sous Requete IN .. SELECT ...
    Par pataluc dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2004, 15h54
  5. Problème de requete multis-selections
    Par tripper.dim dans le forum SQL
    Réponses: 9
    Dernier message: 03/09/2003, 13h08

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