agparchitecture
Messages postés88Date d'inscriptionjeudi 9 mars 2006StatutMembreDernière intervention 7 novembre 2010
-
25 oct. 2007 à 12:15
agparchitecture
Messages postés88Date d'inscriptionjeudi 9 mars 2006StatutMembreDernière intervention 7 novembre 2010
-
31 oct. 2007 à 08:52
Bonjour, dans le cadre du dévellopement de mon site internet je vient de rencontrer un problème et j'espère que vous pourrez m'aider.
J'ai trois tables:
1: Contient les utilistateurs (nom, id, et mot de pass)
2: Contient des projet en cours (id projet, nom, dossier)
3: Contient la liaisons entre les utilisateurs et les projet.
J'effectue la requete suivante:
$requete = 'SELECT * FROM USERS
LEFT JOIN APPARTIENT ON users.idUsers = appartient.AppidUsers
LEFT JOIN PROJET ON test = idProj
ORDER BY idUsers, libelle';
Jusque la ca fonctionne je récupère bien ce que je veux.
Ensuite je traite le résultat de la manière suivante:
$resultat = mysql_query($requete);
$nlignes = mysql_num_rows($resultat);
//print_r ($nlignes); // -> Compte le bon nombre de ligne OK
for ($i=0 ; $i < $nlignes ; $i++) // --> retourne tous les tableau de la selection
{
$ligne2 = mysql_fetch_array($resultat, $i); //-> recupère le tableau des données pour 1 utilisateur:
//print_r ($ligne2);
$essais = count($ligne2); //Problème: tableau deux fois trop grand............
for ($j=0; $j < $essais/2 ; $j++)
{
// Pour traitement des données du tableau. pour afficher les données
}
}
Le problème vient que le nombre d'élement est de 10 et il m'en compte 20 parce que il récupère un array du type:
array (
[0]=>1
[idusers]=>1
[1] =>test
[nom]=>test
)
alors que en fait le 0 et id users sont identique. Il me double mon tableau a chaque fois avec les nom des champ et un index incrémanté.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 25 oct. 2007 à 18:45
Hello,
tu utilises mal les fonctions mysql_*.
D'abord, faire une boucle avec le num_rows est inutile.
Ensuite, mysql_fetch_array() renvoie par défaut le jeu de résultats sous la form d'un tableau doublement indexé : numériquement ET associativement.
Il ne prend aucunement une position de ligne, au passage (ton $i).
Il existe des constantes à lui passer en paramètres pour éviter ça...:
agparchitecture
Messages postés88Date d'inscriptionjeudi 9 mars 2006StatutMembreDernière intervention 7 novembre 2010 31 oct. 2007 à 08:52
Cependant, j'aitoujours un autre problème dans cette boucle... Comment pourrais-je aborder le problème pour que a chaque analyse dans la boucle des tableau le libellé s'ajoute si le nom est le meme que la ligne avant:
Par exemple:
Exemple de récupération mysql par print_r($maligne)
array (
[0]=>1
[idusers]=>1
[1] =>test
[nom]=>test
[libelle]=>essais
)
array (
[0]=>1
[idusers]=>1
[1] =>test
[nom]=>test
[libelle]=>test-essais
)
array (
[0]=>1
[idusers]=>1
[1] =>ast
[nom]=>ast
[libelle]=>test-essais
)
Devienne quelque chose comme ca pour le placer dans une table html.
Pour le moment j'essaye par fonction mais le problème vient que je ne sais pas comment renvoyer la valeur de la ligne précedente et celle en cours pour comparer.
J'espère avoir bien exposé le problème. Sinon poser des questions. Merci pour cette entraide.