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

Requêtes MySQL Discussion :

Probleme avec INSERT INTO et select


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut Probleme avec INSERT INTO et select
    Bonjour, voici ma requete :
    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
    	//Insertion du film
    	$sql='INSERT INTO film (Id,Film,Id_Realisateur,Id_Genre,Id_Nationalite,Id_Distribution,DateSortie,Chemin_Photo,Duree,Resume) 
    		  SELECT "\N",
    		          "'.$_POST['Titre'].'",
    		          Id FROM realisateur WHERE Realisateur = "'.$_POST['Realisateur'].'",
    		          Id FROM genre WHERE Genre = "'.$_POST['Genre'].'",
    		          Id FROM nationalite WHERE Nationalite = "'.$_POST['Nationalite'].'",
    		          Id FROM distribution WHERE Distribution = "'.$_POST['Distribution'].'",
    		          "'.$_POST['Date'].'",
                      "TEST",
    		          "'.$_POST['Duree'].'",
    		          "'.$_POST['Resume'].'"';
    	$req=mysql_query($sql);	     		
    	mysql_close($idcom);
    }
    J'ai du faire une erreur car il ne se passe rien !!

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=mysql_query($sql) or die(mysql_error()) ;

  3. #3
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Merci tres utile, mais je ne comprend pas :
    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 ' Id FROM genre WHERE Genre = "Action", Id FROM nationa' at line 4
    Vois tu de quoi cela vient??

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Citation Envoyé par jmjmjm
    Vois tu de quoi cela vient??
    Oui : tu mets cinquante clauses WHERE dans ta requête...
    Par ailleurs, tes \N ne veulent rien dire.

    Qu'est-ce que ta requête est censée faire ???

  5. #5
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Je met pas cinquante clause Where mais une par select, ce n'est pas possible ?? Si ce n'est pas possible comment puis je faire ??

    Par ailleur le \N,je l'avais trouver dans une exemple il y a un moment et ca marche bien je m'en sert pour incrementer les champ en auto-increment !!


    Edit :enfin non pas par select enfin plus par select avant j'avais tenter ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	$sql='INSERT INTO film (Id,Film,Id_Realisateur,Id_Genre,Id_Nationalite,Id_Distribution,DateSortie,Chemin_Photo,Duree,Resume) 
    		  VALUES "\N",
    		          "'.$_POST['Titre'].'",
    		          SELECT Id FROM realisateur WHERE Realisateur = "'.$_POST['Realisateur'].'",
    		          SELECT Id FROM genre WHERE Genre = "'.$_POST['Genre'].'",
    		          SELECT Id FROM nationalite WHERE Nationalite = "'.$_POST['Nationalite'].'",
    		          SELECT Id FROM distribution WHERE Distribution = "'.$_POST['Distribution'].'",
    		          "'.$_POST['Date'].'",
                      "Film/'.$_POST['Titre'].'.jpg",
    		          "'.$_POST['Duree'].'",
    		          "'.$_POST['Resume'].'"';
    mais j'ai lu qu'il ne fallait pas melanger Values et SELECT

  6. #6
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    pour ma requete elle doit inserer dans une table film les champs titre, date ...
    et les clé des tables realisateur, genre, Nationalité...

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Citation Envoyé par jmjmjm
    ...
    et les clé des tables realisateur, genre, Nationalité...
    ah ! la syntaxe est mauvaise mais l'idée est excellente !

    commençons par les détails :

    - \N représente un NULL dans un fichier de type .CSV, mais en SQL c'est juste un N ; pour ton id, tu pourrais écrire NULL ou DEFAULT (ce qui est sémantiquement plus correct), mais le plus simple est encore de ne pas mentionner Id parmi la liste de colonnes à alimenter.

    - PHP permet d'utiliser des chaînes interprétées, écrites "entre guillemets" ; on peut y écrire directement les variables, ce qui permet d'utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "...Realisateur = '$_POST[Realisateur]' ..."
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '...Realisateur = "'.$_POST['Realisateur'].'"...'
    Passons maintenant à la construction:
    - techniquement parlant, ta requête est un INSERT... VALUES et non un INSERT... SELECT ; simplement, certains des valeurs s'obtiennent par une sous-requête scalaire (càd renvoyant une seule ligne d'une seule colonne) ; la syntaxe des sous-requêtes veut qu'elles soient écrites (entre parenthèses) ; note au passage qu'elle ne sont acceptées qu'à partir de la version 4.1

    Cela nous donne donc (sauf coquille) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql='INSERT INTO film (Film, Id_Realisateur, Id_Genre, Id_Nationalite, 
      Id_Distribution, DateSortie, Chemin_Photo, Duree, Resume)
    VALUES('$_POST[Titre]',
      (SELECT Id FROM realisateur WHERE Realisateur = '$_POST[Realisateur]'),
      (SELECT Id FROM genre WHERE Genre = '$_POST[Genre]'),
      (SELECT Id FROM nationalite WHERE Nationalite = '$_POST[Nationalite]'),
      (SELECT Id FROM distribution WHERE Distribution = '$_POST[Distribution]'),
      '$_POST[Date]',
      'TEST',
      '$_POST[Duree]',
      '$_POST[Resume]);
    Deux petites notes :

    - dans chacun de tes textes ($_POST['Titre'] par exemple), il faut que tu doubles toutes les apostrophes (et tous les anti-slash, mais ils sont plus rares !)

    - si une des sous-requête ne trouvent pas l'intitulé correspondant, elle renverra un NULL

  8. #8
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Ta solution me parait vraiment pas mal mais je n'arrive pas a m'en servir
    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 '' at line 10
    Je continue de chercher et je te tiens au courant

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Il faudrait regarder de + près la requête produite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = ... ;
    echo "<pre>$sql</pre>";

  10. #10
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut
    Merci bien, je m'en suis sorti !!

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

Discussions similaires

  1. PROBLEME avec INSERT INTO
    Par funkyjul dans le forum Développement
    Réponses: 5
    Dernier message: 20/02/2009, 11h01
  2. probleme avec insert into oracle c# en asp dotnet
    Par brajae85 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 26/08/2008, 02h23
  3. probleme avec insert into
    Par diawdji dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 28/01/2008, 02h00
  4. probleme avec insert into
    Par pseudobidon57 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 09/10/2007, 14h05
  5. probleme avec insert into
    Par bscorpion dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/07/2005, 13h00

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