Troll Posté 2 Avril 2007 Posté 2 Avril 2007 (modifié) Bonjour à tous et à toutes Je galère actuellement sur une requête qui me paraît pourtant bonne mais qui renvoit quedal, alors j'en appelle à vous Je m'explique : Voici la requête en question : include('../includes/sql_connect.php'); // l'include contient mysql_connect + mysql_select_db mysql_query("INSERT INTO `pc-info_tutoriaux` VALUES ('', '$genre', '$auteur', '$titre', '$texte', '$lien') "); $id = mysql_query(" SELECT id FROM `pc-info_tutoriaux` WHERE titre='$titre' ")or die(mysql_error()); echo $id; mysql_close(); Comme vous l'avez sans doute deviné, le but de cette requête est d'insérer des données, puis de récupéré ensuite l'id qui aura été donné à cette entrée. En locurence, elle devrait me renvoyé un chiffre entre 20 et 30, seulement elle me renvoie un éternel "Ressource id #4" Au début je pensais que ca venait de easyPHP, mais sur free ca donne pareil...j'ai fait une erreur sans doute, mais où ? Merci d'avance à tous ceux qui répondront Ps : petite précision, dans INSERT INTO id n'est pas définie car il est en auto_increment Modifié 2 Avril 2007 par Troll
Portekoi Posté 2 Avril 2007 Posté 2 Avril 2007 Salut, C'est normal car $id contient la requete SQL. Tu dois donc ajouter en dessous : $id_ = mysql_result($id, 0, "id"); Bye Portekoi
captain_torche Posté 2 Avril 2007 Posté 2 Avril 2007 Pour récupérer le dernier id inscrit, tu as une fonction PHP dédiée : mysql_insert_id() Cependant, pour que tu ne fasses plus la même erreur, il faut que tu comprennes que la fonction mysql_query retourne un tableau de valeurs. Pour retrouver une valeur précise, il faut le parcourir. Tu peux le faire de différentes manières : si ton tableau te retourne plusieurs lignes de valeurs, tu peux le parcourir avec une boucle while : <?phpwhile($row = mysql_fetch_assoc($query)) {echo $row['tonchamp'];}?> Par contre, dans le cas où tu ne chercherais à retourner qu'une valeur, tu peux l'adresser directement avec la fonction mysql_result() : <?phpecho mysql_result($query, num_ligne, 'nom_du_champ');// Dans ton cas, ça serait : echo mysql_result($id, 0, 'id');// Ou mêmeecho mysql_result($id, 0);// Le nom du champ étant facultatif quand la requête ne retourne qu'un seul champ?>
Troll Posté 2 Avril 2007 Auteur Posté 2 Avril 2007 D'accord, merci pour les explication, cependant, j'en profite pour poser une question sur cette fonctio mysql_result() : Je vois une option double, la premier permet de définir l'endroit ou est stocké l'info dans l'array via un chiffre, l'autre via un nom de clé, donc si on connais le nom de clé, le chiffre n'est plus obligatoire non ? Ou est-ce que c'est le chiffre qui prend le dessus sur le nom de clé ? Merci bien pour vos réponses rapides
captain_torche Posté 2 Avril 2007 Posté 2 Avril 2007 Le numéro, qui n'est pas facultatif, représente le numéro de la ligne correpondant à un des enregistrements retournés. Dans le cas d'une requête ne retournant qu'un résultat, son numéro sera forcément zéro, mais il reste nécessaire de le préciser. Par contre, si ta requête retournait plusieurs résultats, ce numéro te permettrait de cibler une ligne précise.
Troll Posté 2 Avril 2007 Auteur Posté 2 Avril 2007 Hum...le numéro et le nom du champ ne désignent pas la même chose ? En tout cas j'ai testé, ça marche à merveille sans le numéro (je suppose qu'il prends 0 comme valeur par défaut) Edit captain_torche : inutile de citer le message précédent; on vient de le lire
Troll Posté 2 Avril 2007 Auteur Posté 2 Avril 2007 (modifié) Hum...d'accord, donc ca permet aussi de récupérer des requête à plusieurs lignes et plusieurs champs J'avais du mal... Cependant, une dernière question : sur quoi se base mysql_result pour trier les lignes ? Dans le cas d'une requête sur plusieurs lignes, laquelle sera mise à zéro et laquelle sera la dernière ? edit : _AT_Captain_Torche : désolé pour les citations, habitudes Modifié 2 Avril 2007 par Troll
Troll Posté 2 Avril 2007 Auteur Posté 2 Avril 2007 La cassement de mysql_result dépend du order by de la requête à laquelle il fait suite ? Mais si la requête n'en contient pas ? Par date de création ? plus vieux au moins vieux ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant