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 31/05/2007, 12h24   #1
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Par défaut [Conception] Problème d'affichage des données

Salut à tous, petit problème de mon côté donc j'explique :

Dans un premier temps, j'effectue une requête SQL qui me récupère tous les noms de modules d'une table.
Ensuite, j'aimerai afficher mes checkbox suivant si le module est présent dans la table, en clair voila le code :

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
<table>
      <tr>
<?php
include("requete_modules.php");//Insertion de la requete
while($donnees = mysql_fetch_array($sql))
{?>
<td>
      <?php
      if($donnees['nom_module'] == 'Utilisateur')
      {
            echo '<input type="checkbox" checked/> Utilisateurs ';
      }
      else
      {
            echo '<input type="checkbox" /> Utilisateurs';
      }
      ?>
</td>
</tr>
<tr>
<td>
<?php
if($donnees['nom_module'] == 'Produit')
{
      echo '<input type="checkbox" checked/> Produits';
}
else
{
      echo '<input type="checkbox" /> Produits';
}
?>
</td>
</tr>
</table>
Mon problème, c'est qu'à cause du While, les valeurs sont affichées en doublon donc mauvause conception, si quelqu'un aurait une solution concernant ce problème !!!
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h55   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je ne vois pas la fin de ton while déjà, et ensuite je ne vois pas ce qui est affiché "en double"

donne un exemple concret du résultat que ca produit et de ce que tu aimerais à la place, parce la je peux pas faire grand chose meme si c'est ultra important
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h05   #3
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Je vais donner un exemple simple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php $sql = mysql_query("SELECT * FROM article");
while($affiche = mysql_fetch_array($sql))
{
      if ($affiche['nom_article'] == "zer")
      {
            echo 'if...';
      }
      else
      {
            echo 'else...';
      }
}?>
En gros vu que j'ai 10 données dans la table article et que l'article "zer" est le 4ème il va m'afficher :

else...else...else...if...else...else...else...else...else...else...else...

moi j'aimerai qu'il me parcours la table une fois et que s'il tombe sur l'article zer il m'affiche ce qu'il y a dans la condition if.

En gros que ca donne ca : if..., et s'il ne le trouve pas qu'il donne ca : else...


Voila, j'espère que vous pourrez m'aider
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h08   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Ben désolé mais c'est pas plus clair pour moi la ... hormis ne pas mettre le echo "if..." dans le if pour pas qu'il s'affiche justement

EDIT: sinon, tu commences d'abord par récupérer les éléments de ta requete dans un tableau, et ensuite tu regardes si ton produit est dans le tableau ou pas, et ce pour chaque produit.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h11   #5
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Citation:
sinon, tu commences d'abord par récupérer les éléments de ta requete dans un tableau, et ensuite tu regardes si ton produit est dans le tableau ou pas, et ce pour chaque produit.
Je pense que la est la solution à mon problème !!!
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h21   #6
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Mais maintenant la question est comment remplir un tableau avec les données d'une table SQL puis de le parcourir pour voir si le champ existe.....
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h31   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Comme ca:

Code php :
1
2
3
4
5
6
 
$ResultArray = array();
while($result = mysql_fetch_array($sql))
{
$ResultArray[] = $Result;
}
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h34   #8
Membre habitué
 
Inscription : mars 2003
Messages : 154
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 154
Points : 145
Points : 145
Envoyer un message via MSN à Orgied
Et pas la peine de parcourir le tableau pour savoir si une donnée existe, utilises plutôt la fonction in_array() qui te fera gagner du temps.
Orgied est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h40   #9
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Yep, désolé de t'enbêter encore mais j'ai testé ca :

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$sql = mysql_query("SELECT * FROM article");
$ResultArray = array();
while($result = mysql_fetch_array($sql))
{
	$ResultArray[] = $result;
}	
 
echo "Donnée : ".$ResultArray[1];
?>
il me retourne ca : Donnée : Array

J'ai du mal le faire !!!
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h42   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Non c'est normal, chaque ligne résultat de ta requete est récupérée par mysql_fetch_array() dans un tableau. donc chaque élément de $ResultArray est lui aussi un tableau. Si tu veux voir tout le contenu remplace echo (qui ne marche que pour les variables simples) par print_r() tu verras que tu as tous tes résultats.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 16h12   #11
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Oki, mais pourrez tu me montrer comment inserrer les données dans le tableau puis afficher par exemple la deuxième donnée du tableau.

Je galère trop, les tableaux c'est pas mon fort

Reprends le code que j'ai mis juste au dessus !!!
Merci
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 16h17   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Hum, comme ca:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = mysql_query("SELECT * FROM article");
$ResultArray = array();
while($result = mysql_fetch_assoc($sql))
{
	$ResultArray[] = $result;
}	

// en admettant que dans article tu aies un champ nom_article
// affiche le nom du deuxieme article des résultats
echo "Donnée : ".$ResultArray[1]['nom_article'];
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 16h20   #13
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Un grand merci à toi koopajah. Ca marche !!!!!

furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 17h02   #14
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Yep, je me permet de vous réembéter , j'ai réussi à classer les élément dans le tableau et j'aurai aimé savoir s'il y a un équivalent de in_array qui existerait :

Voila mon code :

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$ResultArray = array();
$sql = mysql_query("SELECT nom_module FROM module WHERE fk_utilisateur='3'");
while($result = mysql_fetch_assoc($sql))
{
	$ResultArray[] = $result;
}	
 
if($ResultArray[0]['nom_module'] == 'Utilisateur')
{
	print 'Utilisateurs <br/>';
}
else
{
	echo 'pas Utilisateurs <br/>';
}
?>
</td>
</tr>
<tr>
<td>
<?php
if($ResultArray[1]['nom_module'] == 'Produit')
{
	echo '<input type="checkbox" checked/> Produits';
}
else
{
	echo '<input type="checkbox" /> Produits';
}
?>
</td>
</tr>
<tr>
<td>
<?php
if($ResultArray[3]['nom_module'] == 'Article')
{
	echo '<input type="checkbox" checked/> Articles';
}
else
{
	echo '<input type="checkbox" /> Articles';
}
?>
</td>
</tr>
<tr>
<td>
<?php
if($ResultArray[4]['nom_module'] == "Fabricant")
{
	echo '<input type="checkbox" checked/> Fabricants';
}
else
{
	echo '<input type="checkbox" /> Fabricants';
}
?>
</td>
Voila le problème dans ce cas la, c'est que je récupère les module de l'utilisateur 3 (la requete marche bien!!), disons que l'utilisateur 3 a droit aux modules suivant :
Utilisateur
Article

Le problème est que ces modules vont se placer dans le tableau de la sorte :
$ResultArray[0]['nom_module'] ---> Utilisateur
$ResultArray[1]['nom_module']----> Article

Et mes if ne marcheront plus vu qu'il y aura un décallage.

Help please, je sais pas si vous avez tout compris, je m'y perd moi même lol
furth 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 11h11.


 
 
 
 
Partenaires

Hébergement Web