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 :

Problème pour récupérer un id [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Problème pour récupérer un id
    Bonjour.

    Après l'enregistrement d'un film dans la table "titres" je veux récupérer la clé primaire pour la mettre dans la table de liaison "titres_realisateurs" avec la clé primaire du ou des réalisateurs.
    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
    if (!empty($_POST['titref']))
        	{
    	//requete pour le film 
        	$sql = "INSERT INTO titres(id_titre, titre, sortie, id_genre, annee, duree, synopsis) 
    		VALUES('','$titre','$sortie','$genre','$annee','$duree','$synopsis')"; 
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    	//requete pour titres_realisateurs
    	if (!empty($POST['realisateur']) || (!empty($POST['realisateur1'])))
    	{
    	//requete pour récupérer l'id_titre
    		$sql = mysql_query('SELECT id_titre FROM titres ORDER BY id_titre DESC');
    		if (mysql_num_rows($sql) > 0)
    		{
    	   	$res = mysql_fetch_array($sql);
    	   	$idtitre = $res['id_titre'];
    		}
    		if (!empty($POST['realisateur']))
    		{
    		$sql = "INSERT INTO titres_realisateurs(id_titre, id_realisateur)
    			VALUES('$idtitre','$realisateur')";
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    		}
    		if (!empty($POST['realisateur1']))
    		{
    		$sql = "INSERT INTO titres_realisateurs(id_titre, id_realisateur)
    			VALUES('$idtitre','$realisateur1')";
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    		}
    	}
    	//requete pour titres_nationalites
    	//requete pour titres_acteurs
    	?>
    	Le film est enregistré !
    	<?php
    }
    Les réalisateurs sont dans 2 Select :
    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
    		<?php
    		$result_sql = mysql_query('Select * From realisateurs Order by nom_real ASC',$connexion);
    		echo "<select name='realisateur' style='width:150px'>
    		<OPTION value=''></OPTION>";
    		while ($row = mysql_fetch_array($result_sql))
    		{ ?>
    		<option value='<?php echo $row['id_realisateur']?>'><?php echo $row['nom_real'],'&nbsp;&nbsp; ',$row['prenom_real']?></option>
    		<?
    		}
    		echo '</select>&nbsp;&nbsp; ';
    		$result_sql = mysql_query('Select * From realisateurs Order by nom_real ASC',$connexion);
    		echo "<select name='realisateur1' style='width:150px'>
    		<OPTION value=''></OPTION>";
    		while ($row = mysql_fetch_array($result_sql))
    		{ ?>
    		<option value='<?php echo $row['id_realisateur']?>'><?php echo $row['nom_real'],'&nbsp;&nbsp; ',$row['prenom_real']?></option>
    		<?
    		}
    		echo '</select>';
    		?>
    La requete pour enregistrer le fim marche mais pas celle qui enregistre dans la table titres_realisateurs.

    Merci de m'aider

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    plusieurs chose me viennent à l'esprits :

    -n'a tu pas de cle primaire dans la table realisateurs qui pourait te poser probleme
    -dans ton select de n'a pas de close where alors comment fait tu pour récupérer une seule valeure

    esperant te mettre sur la bonne voie
    Conception / Dev

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Pas de problème avec la clé primaire de la table realisateurs, je l'ai testée en la mettant dans ce qui s'affiche dans le select et elle est bien là.

    Dans la requete select comme je l'affiche avec ordre by DESC je pensais que je me plaçais sur le 1er enregistrement!!
    Vrai ou faux ?

    J'ai refais un test en faisant un echo $idtitre et j'ai un message qui me dit que $idtitre n'est pas défini

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    array mysql_fetch_array ( resource result [, int result_type] )


    mysql_fetch_array() retourne un tableau qui contient la ligne demandée dans le résultat result et déplace le pointeur de données interne d'un cran.

    et donc $res['id_titre'] est un tableau ou $res['id_titre'][0] sera ta premiere valeur
    Conception / Dev

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Je voudrais être sûre d'avoir bien compris : tu cherches à récupérer la valeur de idtitre, c'est-à-dire à récupérer la valeur de l'id du denier élément ajouté dans ta table. C'est bien ça ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Oui Celira, c'est bien ce que je veux faire

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je te conseille de jeter un coup d'oeil à la fonction mysql_insert_id() dont c'est la raison d'être et qui va sans doute te faciliter le travail
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Je viens de lire la FAQ mais je comprends pas tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf("Le dernier ID inséré dans est le id %d\n", mysql_insert_id());
    Comment je traduis ça dans ma requete ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        	$sql = "INSERT INTO titres(id_titre, titre, sortie, id_genre, annee, duree, synopsis) 
    		VALUES('','$titre','$sortie','$genre','$annee','$duree','$synopsis')"; 
        		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());


    Merci

  9. #9
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query($sql);
    echo mysql_insert_id();
    Te donnera le dernier id ajouter lors de ta dernière requete.

  10. #10
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci à tous mon erreur était là dès le départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($POST['realisateur1']))
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($_POST['realisateur1']))
    Hier j'ai posté pour un problème de click sur un calendrier et je n'ai pas avancé
    Donc si qq peut m'aider

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

Discussions similaires

  1. LDAP - Problème pour récupérer l'uid
    Par sangei dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 16/11/2005, 13h56
  2. Réponses: 10
    Dernier message: 16/11/2005, 08h33
  3. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  4. [TWebbrowser] Probléme pour récupérer la source
    Par Gauth dans le forum Web & réseau
    Réponses: 8
    Dernier message: 09/04/2005, 15h57
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

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