Aller au contenu

récupérer un enregistrement unique dans une table


Boumbadaboum

Sujets conseillés

Bonjour,

Je ne parviens pas à récupérer un et un seul enregistrement dans une table sans effectuer un mysql_fetch_array précédé d'un LIMIT 0.1 dans la requête SQL.

J'utilise ça ( j'ai essayé plein de variantes avant de venir) :

$afficheCateg="SELECT categorie,liens FROM table WHERE categorie='$variable' ";
$Categ = mysql_fetch_array($afficheCateg);
echo $Categ["categorie"][0];

Je l'ai pas inventé je me suis servi de ce code (que j'ai essayé tel quel) fourni par Boo2M0rs0 à l'occasion d'un autre post.:

la requête SQLSELECT sum(nbrLiens) FROM definitions 
Renvera toujours une seule ligne de résultat. Alors pourquoi utilises-tu une boucle while ?  

Dans cette situation on pourrai écrire:
$RLiens = mysql_fetch_array($resultatLien);
echo "$Rliens[0] liens";

Donc je ne veux récupérer que la catégorie qui correspond à la variable (des dizaines de tuples ont cette catégorie, je ne veux la récupérer qu'une fois pour l'afficher c'est tout).

ça vous dis quoi ?

Modifié par Boumbadaboum
Lien vers le commentaire
Partager sur d’autres sites

2 remarques:

- 1) ton code ne fonctionne pas: il faut que tu executes la requete avant d'essayer de lire le resultat : mysql_query ;)

- 2) l'exemple que tu nous donnes pour renvoyer une seule ligne utilise la fonction sum de SQL qui est une fonction de groupe et qui calcule la somme des valeurs d'une colonne donc ne renvoie qu'un seul resultat. Dans ton cas tu ne veux pas faire d'aggregation de donnees, tu veux selectionner la premiere ligne de ta base de donnees et a priori avec mysql tu ne peux le faire qu'avec LIMIT 0, 1

ou est le probleme avec LIMIT?

Lien vers le commentaire
Partager sur d’autres sites

ton code ne fonctionne pas: il faut que tu executes la requete avant d'essayer de lire le resultat : mysql_query

:blush:

ou est le probleme avec LIMIT?

Pas de problème avec LIMIT il ne m'a rien fait, c'est de MYSQL_FETCH_ARRAY dont je voudrais me passer.

Modifié par Boumbadaboum
Lien vers le commentaire
Partager sur d’autres sites

En fet tu veux récupèrer le lien X qui correspond à la catégorie Y. ??

Ou tu veux récupèrer toutes les valeurs quand le nom de la catégorie= X.

Car j'avoue ne pas avoir trop compris ta question,donc je ne peux te fournir de réponses. :)

Lien vers le commentaire
Partager sur d’autres sites

J'ai 50 enregistrement qui ont un lien en commun et une categorie égale à la variable.

Je me fiche des 50 enregistrement je ne veux récupérer qu'un lien et la categorie d'un seul tuple (puisque les liens et les categories sont les mêmes partout).

Lien vers le commentaire
Partager sur d’autres sites

Je peux te conseiller mysql_result, mais ça ne t'économiserait même pas une ligne!

Mais si (je me réfère au 1e exemple) la requete ne donne qu'un seul résultat (suite au WHERE), normalement, un mysql_result ou mysql_fetch_array ($fetch[0]) devrait marcher.

//EDIT : Pfouu ya du monde ici! :fete::fou:

Quand je suis arrivé, il n'y avait que le message de départ!

Entretemps, 5 réponses! :rolleyes:

Vive le Hub!

Modifié par bigornot
Lien vers le commentaire
Partager sur d’autres sites

D'accord alors tu faits ca:

 $sql ="SELECT* FROM matable_tbl WHERE categoerie='$categorie' ORDER BY 'id' DESC LIMIT 0,1";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$val = mysql_fetch_assoc($req);
echo "$val['categorie']";

Logiquement ca devrait répondre à tes souhaits

Modifié par snwoman49
Lien vers le commentaire
Partager sur d’autres sites

Donc l'instruction PHP au complet donnerait (ps: instruction ou fonction?) :

$req="ma requete"

$bob=mysql_query($req)

$req2=mysql_fetch_array($bob[0])

echo $req2

c'est ça?

mais pour afficher les champs liens et categories je fais comment avec mon mysql_fetch_array($bob[o])=?

Lien vers le commentaire
Partager sur d’autres sites

//EDIT : Pfouu ya du monde ici!   
Quand je suis arrivé, il n'y avait que le message de départ!
Entretemps, 5 réponses!  

Vive le Hub!

bah ouais c'est un post à boumbadaboum B)

nan je rigole c'est vrai que c'est bien le Hub !

Modifié par Boumbadaboum
Lien vers le commentaire
Partager sur d’autres sites

Donc l'instruction PHP au complet donnerait (ps: instruction ou fonction?) :

je dirais le code

Sinon je pense que

$req2=mysql_fetch_array($bob)
echo $req2[0]

serait mieux

Lien vers le commentaire
Partager sur d’autres sites

j'essaie le code :

D'accord alors tu faits ca:
CODE$sql ="SELECT* FROM matable_tbl WHERE categoerie='$categorie' ORDER BY 'id' DESC LIMIT 0,1";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$val = mysql_fetch_assoc($req);
echo "$val['categorie']";

Mais à quoi sert le LIMIT 0.1 justement? Pour limiter le temps de la requête? Parce que là c'est la version longue, je pouvais aussi bien faire un mysql_fetch-array avec une boucle while si c'est pour uiliser le LIMIT 0.1.

Idem pourquoi ORDER BY ? De toute façon je n'affiche qu'un résultat je me fiche du quel en plus.

non?

Modifié par Boumbadaboum
Lien vers le commentaire
Partager sur d’autres sites

Tu peux enlever le ORDER BY si tu veux. ca ne sert à rien de faire un tri dans ton cas.

Le LIMIT 0,1 sert à dire à MySQL que tu ne désires que la première ligne et pas le reste. Tu evites limite donc au necessaire l'utilisation des ressources : je veux utiliser un resultat, mysql ne t'envoies qu'un resultat.

Attention je mettrais plutot

if($val = mysql_fetch_assoc($req)){
echo "{$val['categorie']}";
}

on ne sait jamais, si ta requete ne renvoie rien, ca evite une erreur.

Lien vers le commentaire
Partager sur d’autres sites

Une question qui change un peu de sujet mais je vais pas ouvrir un post que pour ça :

Pour récupérer ces catégories et ces liens je dois balayer plusieurs centaines de tuples. Dois-je alors placer un index sur les champs catégories et liens ?

En fait je n'ai pas trop compris malgré mes lectures à quoi servent les index.

J'ai déjà un id auto-increment dans la table, donc un index est automatiquement créé d'après ce que j'ai lu, mais ils disent d'en mettre sur tous les champs susceptible de faire l'objet d'une requête (partout alors ? :huh: )

A votre avis ? quelqu'un m'explique ?

Modifié par Boumbadaboum
Lien vers le commentaire
Partager sur d’autres sites

en gros, un index c'est comme un annuaire: cela permet de faire des recherches plus rapidement.

Cela est utile quand une table commence a avoir quelques dizaines de milliers de lignes et que ta table est souvent utilisée.

La création des index fait partie de l'optimisation d'une base de données. Il faut pour cela avoir fixer le système qui utilise la base (ici ton site) et ensuite te servir d'outils d'analyse de base de donnees pour savoir si des index sont necessaies.

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...