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 :

Récupération id et enregistrement [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut Récupération id et enregistrement
    Bonjour,

    J'ai une table avec un id(ai) et un id_article

    Je veux mettre dans id_article l'id(ai) ... Dans le but de pouvoir récupérer cet id_article afin de linker des commentaires ...

    J'ai fait ça :

    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
    40
    41
    42
    43
    44
    45
    46
    <?php
     
    $Titre = trim($_POST['Titre']);
    $Auteur = trim($_POST['Auteur']);
    $Date = trim($_POST['Date']);
    $Univers = trim($_POST['Univers']);
    $Article = trim($_POST['Article']);
     
     
    if(empty($Titre) || empty($Auteur) || empty($Date) || empty($Univers) || empty($Article)) {
    	echo 'Veuillez remplir tout les champs : <a href="newarticle.php">retour</a>';
    } else {
    	if(@mysql_connect("127.0.0.1","root","")) 
    	{
    		if(@mysql_select_db('cinegeeks')) 
    		{
    			$query1="SELECT MAX(id) FROM articles;";
     
    			$id = mysql_query($query1);
     
    			echo "Id de l'article : ".$id."<br />";
     
     
    			$query = 'INSERT INTO articles VALUES(
    				"",
    				"'.mysql_real_escape_string($Titre).'",
    				"'.mysql_real_escape_string($Auteur).'",
    				"'.mysql_real_escape_string($Date).'",
    				"'.mysql_real_escape_string($Univers).'",
    				"'.mysql_real_escape_string($Article).'",
    				"$id")';
    			$result = mysql_query($query);
    			if($result == true)
    			{
    			echo "Ajout de l'article réussi";
    			}
    			else
    			{
    			echo "Une erreur est survenu lors de l'ajout de l'article";
    			}
    		} else
    			echo 'Impossible d\'utiliser la base : ' . mysql_error();
    	} else
    		echo 'Non connecté : ' . mysql_error();
    }
    ?>

    mon echo affiche : "Id de l'article : Resource id #4"

    et ça enregistre 0 dans le champ id_article


    Je ne vois pas le problème ... Quelqu'un pourrait m'aider ?? merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Par défaut
    Deux choses :
    --regarder bien la documentation sql (mysql en l'occurrence) au niveau de sa gestion par php.

    --regarde les fonctions : mysql_fetch_row, mysql_fetch_array, mysql_fetch_assoc, etc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    Merci, mais vous ne pouvez pas me dire ou est le problème plutôt ? J'ai déjà regardé pas mal de doc, j'ai fait beaucoup de recherche sur le net, mais je n'y arrive pas ...

    Ah, en regardant encore, il n'est pas nécessaire ce ; à la fin là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query1="SELECT MAX(id) FROM articles;";
    Celui dans les parenthèses.

    Je crois que j'avais essayé sans, mais ça ne changeai rien ...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    la fonction mysql_query() renvoi le résultat de la requête dans un objet de type ressource. Tu ne peux pas accéder au résultat directement il faut que tu passe par une méthode mysql_fetch_quelque_chose.

    Va voir ici pour avoir des exemples avec mysql_fetch_array.

    Comme l'a dit jav806 regarde également les autres mysql_fetch. Certains sont plus ou moins adapté à la quantité de résultats que te fournis la requête.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    Merci bien, on m'a répondu la même chose ailleurs et j'ai réussi à récupérer l'id. J'ai utilisé mysql_fetch_assoc, ce qui me parait le plus judicieux ...

    Après j'ai un problème avec l'enregistrement, aucun message d'erreur. C'est la ligne là :

    Je cherche de mon côté en attendant ... merci

    edit :

    Évidemment ... Ce n'est plus $id qu'il faut mettre.

    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
    if(@mysql_select_db('cinegeeks')) 
    		{
    			$query1="SELECT MAX(id) FROM articles";
     
    			$var = mysql_query($query1);
     
    			$id = mysql_fetch_assoc($var);
     
    			echo "Id de l'article : ".$id["MAX(id)"]."<br />";
     
     
    			$query = 'INSERT INTO articles VALUES(
    				"",
    				"'.mysql_real_escape_string($Titre).'",
    				"'.mysql_real_escape_string($Auteur).'",
    				"'.mysql_real_escape_string($Date).'",
    				"'.mysql_real_escape_string($Univers).'",
    				"'.mysql_real_escape_string($Article).'",
    				"'$id["MAX(id)"]'"';
    			$result = mysql_query($query);
    Mais j'ai toujours un problème de syntaxe :s

    Je suis mauvais, vraiment ... C'est bon, ça fonctionne avec ça :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
     
    $Titre = trim($_POST['Titre']);
    $Auteur = trim($_POST['Auteur']);
    $Date = trim($_POST['Date']);
    $Univers = trim($_POST['Univers']);
    $Article = trim($_POST['Article']);
     
     
    if(empty($Titre) || empty($Auteur) || empty($Date) || empty($Univers) || empty($Article)) {
    	echo 'Veuillez remplir tout les champs : <a href="newarticle.php">retour</a>';
    } else {
    	if(@mysql_connect("127.0.0.1","root","")) 
    	{
    		if(@mysql_select_db('cinegeeks')) 
    		{
    			$query1="SELECT MAX(id) FROM articles";
     
    			$var = mysql_query($query1);
     
    			$id = mysql_fetch_assoc($var);
     
    			echo "Id de l'article : ".$id["MAX(id)"]."<br />";
     
     
    			$query = 'INSERT INTO articles VALUES(
    				"",
    				"'.mysql_real_escape_string($Titre).'",
    				"'.mysql_real_escape_string($Auteur).'",
    				"'.mysql_real_escape_string($Date).'",
    				"'.mysql_real_escape_string($Univers).'",
    				"'.mysql_real_escape_string($Article).'",
    				"'.mysql_real_escape_string($id["MAX(id)"]).'")';
    			$result = mysql_query($query);
    			if($result == true)
    			{
    			echo "Ajout de l'article réussi";
    			}
    			else
    			{
    			echo "Une erreur est survenu lors de l'ajout de l'article";
    			}
    		} else
    			echo 'Impossible d\'utiliser la base : ' . mysql_error();
    	} else
    		echo 'Non connecté : ' . mysql_error();
    }

    Merci pour votre aide. Ça fait du bien de passer ce cap. Ça faisait une semaine que j'étais là dessus ...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/08/2009, 11h52
  2. Récupération du dernier enregistrement
    Par bruce207 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/04/2008, 13h47
  3. Réponses: 4
    Dernier message: 28/02/2007, 11h54
  4. Réponses: 5
    Dernier message: 05/04/2006, 12h23
  5. Réponses: 5
    Dernier message: 29/12/2005, 07h03

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