Aller au contenu

requête mysql ratée ?


Troll

Sujets conseillés

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 :P

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ù ? :wacko:

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é par Troll
Lien vers le commentaire
Partager sur d’autres sites

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 :

<?php
while($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() :

<?php
echo mysql_result($query, num_ligne, 'nom_du_champ');
// Dans ton cas, ça serait :
echo mysql_result($id, 0, 'id');
// Ou même
echo mysql_result($id, 0);
// Le nom du champ étant facultatif quand la requête ne retourne qu'un seul champ
?>

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :P (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

Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par Troll
Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...