Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2011, 11h03   #1
Invité de passage
 
Inscription : mars 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 10
Points : 1
Points : 1
Par défaut Afficher le premier résultat d'une requête

Bonjour,

J'ai développé une requête SQL et je souhaiterais pouvoir afficher uniquement le résultat sélectionné par mon script php.

Voici mon script

Code :
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
<html>
<body>
<?php
 
$connexion=mysql_connect("localhost", "*****", "*****");
if (!$connexion) {
	echo "La connexion au serveur a échouée<br>";
	exit;
}
if(!mysql_select_db("*****", $connexion)) {
	echo "La connexion à la base de données à échouée<br>";
	exit;
}
 
$sql=	"select  titre, affiche, nomacteur, nomdistributeur, anneesortie
		from films, acteurs, distributeurs
		where films.numfilm=acteurs.numacteur
		and films.numdistributeur=distributeurs.numdistributeur";
 
$interrogation=mysql_query($sql,$connexion);
mysql_close($connexion);
 
if ($interrogation) {
	echo "<table cellpadding='5' cellspacing='45' border='5'>"
	."<tr><th></th></tr>";
	while ($ligne=mysql_fetch_array($interrogation, MYSQL_NUM))
		echo "<tr><td>".$ligne[0]."</td></tr>";
 
}
else echo "La base de données ne renvoit aucune réponse"; 
 
?>
</body>
</html>
Par exemple içi, je souhaitais n'afficher que le premier résultat de ma reqûete (1ère ligne), hors, j'obtiens la liste de tous les films sans affiche, nomacteur, nomdistributeur et anneesortie. J'obtiens donc la première colonne de ma requête et non la première ligne.

Quelqun pourrait t'il m'indiquer comment résoudre mon problème ?
ab1609 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h12   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
C'est quoi "le resultat défini par ton script" ?

Si tu ne veux qu'une ligne, met un LIMIT 1.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h19   #3
Invité de passage
 
Inscription : mars 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 10
Points : 1
Points : 1
Citation:
Envoyé par sabotage Voir le message

C'est quoi "le resultat défini par ton script" ?.
En fait c'est le résultat de ma reqûete SQL mais pas dans sa globalité, seulement la ligne qui m'intéresse.

Citation:
Envoyé par sabotage Voir le message
Si tu ne veux qu'une ligne, met un LIMIT 1

Je souhaiterais aussi pouvoir n'afficher que la troisième ligne, par exemple, de ce que me renvoit la requête, pas nécessairement la première. En réalite, je souhaiterais pouvoir ensuite effectuer des traitements sur chacun des résultats de ma requête, et donc j'essai d'obtenir des lignes indicées.
ab1609 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h56   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
LIMIT 2,1 pour la troisième ligne retournée.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 00h53   #5
Membre du Club
 
Avatar de Billy KiT
 
Inscription : mars 2011
Messages : 47
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 47
Points : 59
Points : 59
Salut,
déjà pour avoir la ligne entiere, tu peux utiliser CONCAT_WS qui "concatène" les champs d'une ligne avec séparateur (1 ou plusieurs caractères)
Code :
SELECT CONCAT_WS(';',titre, affiche, nomacteur, nomdistributeur, anneesortie) AS ligne FROM films, acteurs, distributeurs ...
ensuite pour parcourir les résultats :
Code :
1
2
for ($i=0;$i<mysql_num_rows($interrogation);$i++)
$ligne[$i] = mysql_result($interrogation,$i,"ligne");
$i étant l'index ou le numéro de la ligne. Donc :
Code :
$deuxieme_ligne = mysql_result($interrogation,1,"ligne");
En espérant avoir bien compris le problème
Billy KiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h53   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
http://php.net/manual/fr/function.mysql-fetch-array.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Impossible de se connecter : " . mysql_error());
mysql_select_db("mydb");
 
$result = mysql_query("SELECT id, name FROM mytable");
 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
   printf("ID : %s  Nom : %s", $row[0], $row[1]); // ici $row représente une ligne de ta requête à chaque passage dans le while.
}
 
mysql_free_result($result);
?>
ici $row représente une ligne de ta requête à chaque passage dans le while.

De plus, les fonctions mysql_* ne sont plus conseillées. Le mieux est de passé à mysqli_* ou encore mieux, via un PDO.
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h31.


 
 
 
 
Partenaires

Hébergement Web