Page 1 sur 2

Comparaison de variables dans un tableau.Comment faire?

Posté : 29 avr. 2005, 09:56
par BFH
Bonjour,
je desirerais savoir quelle est la syntaxe correcte de ce qui suit:
while($row=mysql_fetch_assoc($result))
{
if($row [
NOM_de_la_ligne_X ] != $row[ NOM_de_la_ligne_X+1 ] )
{ echo $row[NOM_de_la_ligne_X]; }
}

Posté : 30 avr. 2005, 19:32
par Cyrano
Si je me fie à mon intuition, je dirais que le problème vient de ta requête : tu peux éviter d'avoir des doublons en utilisant DISTINCT:
SELECT DISTINCT champ FROM table etc... Cette requête ignorera les doublons.

Posté : 02 mai 2005, 08:43
par BFH
Merci cyrano t'es toujours d'un grand secours! (aimablement en plus)

Posté : 02 mai 2005, 10:26
par albat
SELECT DISTINCT champ FROM table
Cette requête ignorera les doublons.
Les doublons... uniquement sur le champ indiqué ! :!:

Et moi, j'suis pas d'un grand secours ? Et pas aimable non plus ??? *part bouder, jaloux*

Posté : 02 mai 2005, 10:37
par Cyrano
Et moi, j'suis pas d'un grand secours ? Et pas aimable non plus ??? *part bouder, jaloux*
Mais si on t'aime aussi albat, allez quoi, reviens :langue:

Posté : 02 mai 2005, 13:42
par BFH
C'est bien qu'il soit parti bouder, il est méchant :) la dernière il m'a enguelé alors que je suis un nouveau :cry:

Sinon mon problème est résolu qu'a moitié en fait. Maintenant il faudrait :
$query="select distinct titre From item Where $P=4";
$result=mysql_query($query);

While($row=mysql_fetch_assoc($result))
{
echo
$row["titre"] et aussi ecrire tout les noms qui sont rattachés à ce titre;
}

Posté : 02 mai 2005, 13:46
par daoud
Euh, tu peux en dire un peu plus sur ta (tes) table(s) ?

a+
daoud

Posté : 02 mai 2005, 13:51
par Cyrano
Ok, mais là, ta requête ne le permet pas telle qu'elle est écrite (et que j'ai corrigée : attention à séparer le PHP du SQL) :
$query="SELECT DISTINCT titre FROM item WHERE `". $P ."`=4";
Tu ne demandes que le champ "titre", donc la requête ne retourne que le titre.
Pour savoir comment compléter la requête avec les noms, il faut déterminer si ces noms sont dans un champ de la même table ou d'une autre table. S'il sont dans une autre table, il faudra faire une jointure et, dans les deux cas, un regroupement (GROUP BY)

Posté : 02 mai 2005, 13:53
par flitox
albat est un grand sensible, il s'émeut assez vite lorsqu'il n'a pas la reconnaissance qu'il aimerait avoir :D

Posté : 02 mai 2005, 17:27
par BFH
En fait je me suis mal exprimé dans mon dernier message, je vous prie de m'en excuser:

$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());

$query2="SELECT IField,IValue FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result2=mysql_query($query2)or die (mysql_error());
$row2=mysql_fetch_assoc($result2);


while($row=mysql_fetch_assoc($result))

{
echo "
<TR><TD colspan='2'><H2>".
$row['IGroup'] ."</H2></TD></TR>

<TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>

<TR><TD><font color='#0033CC' ><b>".
$row2['IField'] ." : <p></b></font></TD><TD>".$row2['IValue'] ."<p></TD></TR>";
}
Ce qui me donne :
Valeur de IGroup1
Valeur de IField1 : Valeur de IValue1

Valeur de IGroup2
Valeur de IField1 : Valeur de IValue1

Valeur de IGroup3
Valeur de IField1 : Valeur de IValue1

etc...
Or je desirerais
Valeur de IGroup1
Valeur de IField1 : Valeur de IValue1
Valeur de IField2 : Valeur de IValue2
Valeur de IField3 : Valeur de IValue3

Valeur de IGroup2
Valeur de IField4 : Valeur de IValue4
Valeur de IField5 : Valeur de IValue5
Valeur de IField6 : Valeur de IValue6

Valeur de IGroup3
Valeur de IField7 : Valeur de IValue7

etc...

Voila mais je n'y arrive pas alors please help! :agenouille:

Posté : 02 mai 2005, 17:35
par BFH
Pis tant qu'on y est j'aurais besion de votre aide là encore avec ceci :
$N=$row["Lieu"];
$query2="SELECT * FROM report WHERE RHost=
\"$N\"+\"%\" ";
$result2=mysql_query($query2)or die (mysql_error());
Si $N=NewYork
et que j'ai par exemple dans ma base de données un rapport qui correspond à Paris il sera aussi affiché à cause de la formulation \"$N\"+\"%\"

Comment je peux faire pour que cela ne soit pas le cas et que je n'ai alors qu'à l'ecran les rapports qui commence par NewYork ?

Posté : 02 mai 2005, 17:59
par Cyrano
PLusieurs chose, mais je vais te répondre sur le dernier point:
$N=$row["Lieu"];
$query2="SELECT * FROM report WHERE RHost = '". $N ."%'";
$result2=mysql_query($query2)or die (mysql_error());
Si tu peux utiliser le bouton [ PHP ] au lieu de [ Quote ] pour mettre du code on aura une coloration plus facile.

Ensuite, quand tu crées une requête, PHP la traite comme une chaine de caractères : fais des concaténations correctes et sépare le PHP du SQL : l'opérateur de concaténation en PHP est le point ".", pas le "+" (JavaScript)

Pour l'autre au dessus, je dois faire des tests avant de m'aventurer :)

Posté : 02 mai 2005, 22:46
par BFH
Merci pour tous tes bons conseils Cyrano, t'es vraiment d'une aide précieuse.

Dit albat, je vois plus message de toi j'espere que tu fais pas la tête, je plaisantais en disant que tu étais méchant. Je comprends que ça puisse t'ennerver les nouveaux comme moi qui font toujours les mêmes erreurs et qui posent toujours les même questions mais bon on y peux rien si je puis dire...

Posté : 02 mai 2005, 22:57
par Cyrano
T'inquiètes pas trop BFH, nous aussi, on a commencé un jour et même si on fait semblant de l'avoir oublié, on a même posé parfois des question particulièrement saugrenues :langue: ou alors en mélangeant tout et n'importe quoi :)

Posté : 02 mai 2005, 23:02
par albat
Merci pour tous tes bons conseils Cyrano, t'es vraiment d'une aide précieuse.
C'est pas pour fayoter (quel en serait l'intérêt ?)
mais je crois qu'on est très nombreux sur ce forum
à pouvoir tirer un coup de chapeau à Cyrano.
Sincèrement, grand merci à toi ! ;)
Dit albat, je vois plus message de toi j'espere que tu fais pas la tête, je plaisantais en disant que tu étais méchant.
J'étais juste parti me chercher une binouze dans le frigo. :boire9:
J'ai dû me perdre en route... :lol:
Je comprends que ça puisse t'ennerver les nouveaux comme moi
qui font toujours les mêmes erreurs et qui posent toujours les même questions
mais bon on y peux rien si je puis dire...
Les nouveaux ne me dérangent absolument pas (je ne suis moi-même pas expert en PHP)
et il arrive qu'on ait besoin de faire répéter plusieurs fois pour bien comprendre.
Cela n'a rien de condamnable et sur ce forum, on est généralement assez patients.

Le truc qui m'agace, en revanche, c'est les fainéants qui ne font aucun effort,
qui posent des questions, souvent vagues, sans avoir fait la moindre recherche préalable,
qui ne tripotent pas leur code, ne tentent pas des solutions, ne testent pas...
bref, les pas-curieux, les flemmards, les assistés... Ceux-là nous gonflent.

Mais ceux qui cherchent, lisent, inventent, essaient, ... bref, travaillent,
ceux-là seront toujours les bienvenus. ;) =D>