Aide - Recherche - Membres - Calendrier
Version complète : Incrémentation
La Communauté TitaXium > Service Communication > Espace Developpement
Nokilling
Bonjour tous le monde,
Voila j'ai un problème en sql, j'ai une incrémentation pour l'id d'un topic, mais j'aimerais bien récuperer cette id à la fin pour qu'il puisse être ajouter dans un autre champs.

Voiçi donc mon code :
Code
<?php
include ('cfg.php');
// récupération des variables
$titre  = $_POST['titre'];
$description  = $_POST['description'];
$cat = $_POST['choix'];
$des = $_POST['des'];
$ip  = $_SERVER["REMOTE_ADDR"];
$time = time();
$user_id = $_COOKIE['user_id'];
$sql_membre = mysql_query("SELECT posts, name FROM ibf_members WHERE id='$user_id'");
list($post,$user_name_cooki) = mysql_fetch_array($sql_membre);
// insertion dans la base pour les articles
mysql_query("INSERT INTO mgs_downloads  VALUES('', '$titre', '$cat', 'http://localhost/V1/forum/index.php?showtopic=');");
//Insertion d'un nouveau post dans le forum
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");
//Ajouter +1 dans le champs post de l'user
$post++;
mysql_query("UPDATE ibf_members SET posts = '$post' WHERE  id='$user_id'");
mysql_close();
echo 'Article ajouté avec succès :) ';
?>


Mais bon, avec sa on ne peut pas récuperer l'id incrémenter du post, donc si quelqu'un savait une technique qui me permetterait de faire ça :rolleyes:

Je vous remerci d'avance smartass.gif
Fantome
Je suis pas sur d'avoir bien comprit, mais si tu veux récupéré l'id tu topics inséré il y as une fonction qui permet de le faire. Il suffit de regarder les fonction mysql de PHP (je me souvien plus de son nom).
Nokilling
Oui c'est exactement ça fantome biggrin.gif
Shino
au pif : mysql_insert_id()

ça retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante.

Attetion, tu appelles cette fonction immédiatement après l'exécution de la requête qui a générée l'id du topic.
Nokilling
Ok donc est-ce que ce code pourrait marcher?
Code
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");
$id = mysql_insert_id()



Voila, merci beaucoup à vous tous
Shino
Code
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");
printf("Le dernier topic inséré dans est le id %d\n", mysql_insert_id());


ça aussi wink.gif
Nokilling
Ok, car en faites, je voudrais récuperer l'id pour le mettre directement dans la table des downloads, pour qu'il mette le lien directement avec l'i à la fin smile.gif

Donc en faites, pour le mysql_insert_id() il pourrait pratiquement servir sans variable si je l'utilise juste après mon incrementation non ?

Pour que sa donne un truc dans le genre de ça :
Code
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");
mysql_query("INSERT INTO mgs_downloads  VALUES('', '$titre', '$cat', 'http://localhost/V1/forum/index.php?showtopic=mysql_insert_id()');");
Shino
Attention au message que j'ai mi plus haut... définis préablement une variable qui a été défini selon la dernière incrémentation que tu souhaitais utiliser.
Nokilling
Désolé mais je ne suis qu'un débutant avec le sql, donc je n'ai pas bien comprit ton dernier message :/
Shino
Non non je me suis embrouillé donc moi j'aurai hm... ton code marche ou pas ?
Fantome
je pense que ça marchera pas esaye plutot
Code
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");
mysql_query("INSERT INTO mgs_downloads  VALUES('', '$titre', '$cat', 'http://localhost/V1/forum/index.php?showtopic=".mysql_insert_id()."');");
Nokilling
Ok je vais tester ça, j'edit mon post quand je l'aurais fait wink.gif
Voila sa marche super bien biggrin.gif

Mais est-il possible de l'utiliser plusieur fois d'affilé?
Car j'ai remarquer qu'il fallait aussi l'inclure dans la table ibf_post wink.gif donc est-ce que si par exemple je met :
Code
$id = mysql_insert_id();

Juste après :
Code
mysql_query("INSERT INTO ibf_topics VALUES('','$titre','$description','open','','$user_id','','$time','$user_id','$time','0','$user_name_cooki','0','0','5','1','1','1','0','NULL','NULL','0')");


Car je pense que je ne peut pas l'utiliser 2x d'affilés pour 2 tables différentes
Fantome
Si tu veux l'utilisé deux fois d'affilé il faut stoker la première valeur dans une varible et utilisé cette variable dans les 2 requétes
Shino
c'est ce que j'avais dit ! lol
Nokilling
OK, donc il faut que je déclare une variable juste apres l'autoi -incrémentation, et par exemple, dans mon cas, est-ce que le bout de code pour déclarer la variable $id pourrait faire l'affaire?
Fantome
oui
Nokilling
A oui sa marche, merci beaucoup biggrin.gif
Shino
De rien ^_^
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2010 Invision Power Services, Inc.