Fonction afficher un tableau en php
Résolu/Fermé
LiLou LiLa
Messages postés
330
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
10 mars 2009
-
10 juin 2008 à 09:01
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 - 11 juin 2008 à 11:28
LiLou LiLa Messages postés 330 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 10 mars 2009 - 11 juin 2008 à 11:28
A voir également:
- Fonction afficher un tableau en php
- Tableau croisé dynamique - Guide
- Fonction si et - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Easy php - Télécharger - Divers Web & Internet
6 réponses
LiLou LiLa
Messages postés
330
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
10 mars 2009
12
11 juin 2008 à 11:28
11 juin 2008 à 11:28
j ai finalement trouvé moi meme la solution (je vous la met au cas ou ça pourrait interessé quelqu'un malgré toutes mes complications pour pas grand chose :) )
le probleme venait que les parametres en entrée dans ma fonction tableau etait des resultats de requetes
pour le tableau d'affichage ça passait niquel
mais pour la fonction de la liste deroulante celà ne marchait que pour le premier enregistrement, pour les autres il ne passait meme pas dans la boucle pour creer la liste ..
donc voici pmon ocde modifié et qui marche :
appel de la fonction modifié :
et dans ma fonction tableaumodif2 :
et tout marche :)
merci quand meme de vous etre interessé a mon probleme de mes codes mega complexes :p
le probleme venait que les parametres en entrée dans ma fonction tableau etait des resultats de requetes
pour le tableau d'affichage ça passait niquel
mais pour la fonction de la liste deroulante celà ne marchait que pour le premier enregistrement, pour les autres il ne passait meme pas dans la boucle pour creer la liste ..
donc voici pmon ocde modifié et qui marche :
appel de la fonction modifié :
<? //Requête sélection des travaux de la fiche $sql="SELECT Id_DR,Observation_DR,Libellecourt_TRE FROM DETAIL_REPARATION,TYPE_REPARATION_ET_ENTRETIEN,REPARATION_ET_ENTRETIEN WHERE DETAIL_REPARATION.Id_TRE=TYPE_REPARATION_ET_ENTRETIEN.Id_TRE AND DETAIL_REPARATION.Id_RE=REPARATION_ET_ENTRETIEN.Id_RE AND REPARATION_ET_ENTRETIEN.Id_RE='".$_SESSION['ID']."' ORDER BY Id_DR"; //Requête liste de tout les types pour la liste déroulante $sqlliste="SELECT Id_TRE,Libellecourt_TRE FROM TYPE_REPARATION_ET_ENTRETIEN"; //Affiche le tableau //structure : $tab par colonne - array(nom, class css, mode affichage, identifiant, resultat requete liste deroulante,valeur par defaut) $tab0=array("Id","","visible",0,"",""); $tab1=array("Observation","observation","modifiable",0,"",""); $tab2=array("Type","","liste",0,$sqlliste,""); $tab3=array("Action","checkbox","caseacocher",0,"",""); echo Tableaumodif2($sql,$tab0,$tab1,$tab2,$tab3); } ?>
et dans ma fonction tableaumodif2 :
function Tableaumodif2() { //parametres en entree : (tableau de données,tableau de conf par colonne ) //tableau de données = $resultat , tableau de conf par colonne = tab par colonne //tab=array(nom/titre colonne,class css,mode affichage,identification colonne,resultat requete menu deroulant,valeur defaut,id defaut) $NbArgs=func_num_args(); $Tableau=func_get_args(); //connexion $Connexion=Connecte(****,*******,********,$_SESSION['nom'],$_SESSION['passe']); //tableau de données //$resultat=$Tableau[0]; //requete affichage du tableau executé $sql=$Tableau[0];//requete affichage du tableau $resultat=resultat($sql,$Connexion); //boucle affichage du tableau echo "<div align=\"center\"><table align=\"center\">"; for($i=1;$i<=($NbArgs-1);$i++) echo"<th>".$Tableau[$i][0]."</th>"; //titre colonne //boucle lignes tableau while($row =& $resultat->fetchRow()) { echo "<tr>"; //boucle pour chaque ligne du tableau for($i=1;$i<=($NbArgs-1);$i++) { $conf=$Tableau[$i]; echo"<td align=\"center\">"; //suivant la class css ($conf[1]) if($conf[1]=="") $class=""; else $class="class=\"".$conf[1]."\""; //suivant le mode d'affichage(visible,liste,caseacocher,cachee,modifiable - message erreur par defaut) switch ($conf[2]) { case 'visible': echo $row[($i-1)]; break; case 'liste': //recupere la requete de la liste et on l execute $sqlliste=$conf[4]; $resultatliste=resultat($sqlliste,$Connexion); //appel fonction liste echo ListeOption($resultatliste,0,$conf[0].$row[$conf[3]],1,$conf[5],$class); break; case 'caseacocher': echo "<input type=\"checkbox\" ".$class." name=\"".$row[$i-1]."\" value=\"".$row[$i-1]."\">"; break; //case 'cachee': // echo ""; suivant droit? // break; case 'modifiable': echo "<input type=\"text\" ".$class." name=\"".$conf[3].$row[$i-1]."\" value=\"".$row[$i-1]."\">"; break; default: echo "mode incorrect"; } echo "</td>"; } echo "</tr>"; } echo "</table></div>"; }
et tout marche :)
merci quand meme de vous etre interessé a mon probleme de mes codes mega complexes :p
adgem0
Messages postés
119
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
7 mai 2010
158
10 juin 2008 à 11:49
10 juin 2008 à 11:49
Bonjour,
N'y a-t-il pas un problème de guillemets dans cette ligne ?
$tab1=array("observation","observation","modifiable",0,"","","");
N'y a-t-il pas un problème de guillemets dans cette ligne ?
$tab1=array("observation","observation","modifiable",0,"","","");
LiLou LiLa
Messages postés
330
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
10 mars 2009
12
10 juin 2008 à 14:03
10 juin 2008 à 14:03
sur ma page il y a
jai cherché tout ce matin avec celui qui soccupe de moi au stage mais rien a faire aucune solution n a eté trouvé . .
jai rajouté dans fichemateriel l id :
et reorganisé ma fonction tableaumodif2 :
maintenant jai ma case a cocher ( ça marchait pas vu qu il appliquait le mode d affichage puis la classe css l ecrasé mais comme ça tout va bien )
jai toujours le soucis de ma liste deroulante et c'est assez mysterieux :
ma premiere ligne du tableau marche bien :)
jai l id en visible, l observation en modifié et avec sa class, la liste deroulante pour le type, et ma case a coché pour action
puis pour les autres lignes
j ai toujours l id, l observation et l action correcte MAIS ma liste deroulante est vide totalement
on pense que le probleme vient du fait que $conf[4] qui reprend dans lappel de la fonction le resultat de la requete pour la liste deroulante devrait etre un tableau de resultat et ce nest pas le cas car lors d un echo celui affiche "Objet" et non "Array" ..
en fait il y a le grand tableau $Tableau[$i] qui a
| resultat requete affichage | colonne1 | colonne2 | colonneN
dans chaque colonne un tableau $conf[] avec:
- nom de la colonne
- class css
- mode affichage
- identifiant
- TABLEAU VALEUR RESULTAT LISTE DEROULANTE
- valeur par defaut
ça beuguerait sur le tableau ( $conf[4] ) qui ne serait pas un tableau ..
fonction pour liste deroulante :
aidez moi s il vous plait . .
$tab1=array("observation","observation","modifiable",0,"","","");je sais pas pourquoi ça la pas pris . .
jai cherché tout ce matin avec celui qui soccupe de moi au stage mais rien a faire aucune solution n a eté trouvé . .
jai rajouté dans fichemateriel l id :
$tab0=array("Id","","visible",0,"","",""); $tab1=array("Observation","observation","modifiable",0,"","",""); $tab2=array("Type","","liste",0,$resultatliste,"",""); $tab3=array("Action","checkbox","caseacocher",0,"","",""); echo Tableaumodif2($resultat,$tab0,$tab1,$tab2,$tab3);
et reorganisé ma fonction tableaumodif2 :
unction Tableaumodif2() { //parametres en entree : (tableau de données,tableau de conf par colonne ) //tableau de données = $resultat , tableau de conf par colonne = tab par colonne //tab=array(nom/titre colonne,class css,mode affichage,identification colonne,resultat requete menu deroulant,valeur defaut,id defaut) $NbArgs=func_num_args(); $Tableau=func_get_args(); //tableau de données $resultat=$Tableau[0]; //requete affichage du tableau //boucle affichage du tableau echo "<div align=\"center\"><table align=\"center\">"; for($i=1;$i<=($NbArgs-1);$i++) echo"<th>".$Tableau[$i][0]."</th>"; //titre colonne //boucle lignes tableau while($row =& $resultat->fetchRow()) { echo "<tr>"; //boucle pour chaque ligne du tableau for($i=1;$i<=($NbArgs-1);$i++) { $conf=$Tableau[$i]; echo"<td align=\"center\">"; //suivant la class css ($conf[1]) if($conf[1]=="") $class=""; else $class="class=\"".$conf[1]."\""; //suivant le mode d'affichage(visible,liste,caseacocher,cachee,modifiable - message erreur par defaut) switch ($conf[2]) { case 'visible': echo $row[($i-1)]; break; case 'liste': $test=$conf[4]; echo ListeOption($test,1,$conf[0].$row[$conf[3]],1,$conf[5]); break; case 'caseacocher': echo "<input type=\"checkbox\" ".$class." name=\"".$row[$i-1]."\" value=\"".$row[$i-1]."\">"; break; //case 'cachee': // echo ""; suivant droit? // break; case 'modifiable': echo "<input type=\"text\" ".$class." name=\"".$conf[3].$row[$i-1]."\" value=\"".$row[$i-1]."\">"; break; default: echo "mode incorrect"; } echo "</td>"; } echo "</tr>"; } echo "</table></div>"; }
maintenant jai ma case a cocher ( ça marchait pas vu qu il appliquait le mode d affichage puis la classe css l ecrasé mais comme ça tout va bien )
jai toujours le soucis de ma liste deroulante et c'est assez mysterieux :
ma premiere ligne du tableau marche bien :)
jai l id en visible, l observation en modifié et avec sa class, la liste deroulante pour le type, et ma case a coché pour action
puis pour les autres lignes
j ai toujours l id, l observation et l action correcte MAIS ma liste deroulante est vide totalement
on pense que le probleme vient du fait que $conf[4] qui reprend dans lappel de la fonction le resultat de la requete pour la liste deroulante devrait etre un tableau de resultat et ce nest pas le cas car lors d un echo celui affiche "Objet" et non "Array" ..
en fait il y a le grand tableau $Tableau[$i] qui a
| resultat requete affichage | colonne1 | colonne2 | colonneN
dans chaque colonne un tableau $conf[] avec:
- nom de la colonne
- class css
- mode affichage
- identifiant
- TABLEAU VALEUR RESULTAT LISTE DEROULANTE
- valeur par defaut
ça beuguerait sur le tableau ( $conf[4] ) qui ne serait pas un tableau ..
fonction pour liste deroulante :
function ListeOption () { $NbArgs=func_num_args(); $Tableau=func_get_args(); $resultat=$Tableau[0]; $ligne1=$Tableau[1]; $name=$Tableau[2]; $nbchamps=$Tableau[3]; $selection=$Tableau[4]; if(($NbArgs==6)and($Tableau[5]<>"")) { $class=$Tableau[5]; echo "<select name=\"".$name."\" class=\"".$class."\">"; } else echo "<select name=\"".$name."\">"; if($ligne1==1) echo "<OPTION>"; while ($row =& $resultat->fetchRow()) { if($row[0]<>'0') { if($selection==$row[1]) { echo "<option value=\"".$row[0]."\" selected=\"selected\">"; } else { echo "<option value=\"".$row[0]."\">"; } for($i=1;$i<=$nbchamps;$i++) { echo $row[$i]." "; } } } echo "</select>"; }
aidez moi s il vous plait . .
adgem0
Messages postés
119
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
7 mai 2010
158
10 juin 2008 à 18:57
10 juin 2008 à 18:57
Je suis désolé de pas pouvoir beaucoup t'aider ...
Ton code à l'air vachement compliqué ...
Je pense qu'il y a des moments où tu te complique trop la tâche !
Essaye de revoir tout ça sans le grand tableau.
Il faudrait que tu fasse plus simple avec une boucle while qui te liste tout les résultat dans le tableau html de mise en forme directement et un par un avec ton Observation, ta Case à cocher et tout le reste.
Pour le style CSS, tu vois ce que tu peux faire. Je suis sûr que ton truc est faisable, mais beaucoup plus simplement.
En vérité, je vois vraiment pas à quoi doit ressembler le résultat final.
Et même si j'en ai une petite idée, je ne vois pas où est censée se produire l'action ...
C'est pas grave ... Garde courage, bonne chance.
Si tu à le temps essaye de faire des screenshots de ce que tu obtiens pour bien voir à quoi sa doit ressembler au final.
Désolé de pas pouvoir faire plus.
Ton code à l'air vachement compliqué ...
Je pense qu'il y a des moments où tu te complique trop la tâche !
Essaye de revoir tout ça sans le grand tableau.
Il faudrait que tu fasse plus simple avec une boucle while qui te liste tout les résultat dans le tableau html de mise en forme directement et un par un avec ton Observation, ta Case à cocher et tout le reste.
Pour le style CSS, tu vois ce que tu peux faire. Je suis sûr que ton truc est faisable, mais beaucoup plus simplement.
En vérité, je vois vraiment pas à quoi doit ressembler le résultat final.
Et même si j'en ai une petite idée, je ne vois pas où est censée se produire l'action ...
C'est pas grave ... Garde courage, bonne chance.
Si tu à le temps essaye de faire des screenshots de ce que tu obtiens pour bien voir à quoi sa doit ressembler au final.
Désolé de pas pouvoir faire plus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LiLou LiLa
Messages postés
330
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
10 mars 2009
12
11 juin 2008 à 08:55
11 juin 2008 à 08:55
des screenshots ??
le truc c'est que je suis en stage et je n ai pas vraiment le choix a part de le faire comme ça
a l affichage jai qu un tableau
dans mon code jai le tableau qui affiche+ dans chaque colonne un tableau de parametre+dans le tableau de parametre dans une ligne un tableau de données
le truc c'est que je suis en stage et je n ai pas vraiment le choix a part de le faire comme ça
a l affichage jai qu un tableau
dans mon code jai le tableau qui affiche+ dans chaque colonne un tableau de parametre+dans le tableau de parametre dans une ligne un tableau de données
LiLou LiLa
Messages postés
330
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
10 mars 2009
12
11 juin 2008 à 09:46
11 juin 2008 à 09:46
avec pleins d echo jai decouvert que mon probleme sur mes listes deroulantes est que pour le deuxieme enregistrements il ne passe pas dans ma boucle qui affiche les resultats de ma fonction liste option:
le message en javascript ne s affiche que pour les resultats de la liste du premier enregistrement
mais je ne sais toujours pas pourquoi il ne entre pas dans la boucle pour les autres
une idée? aidez moi svp
function ListeOption () { $NbArgs=func_num_args(); $Tableau=func_get_args(); $resultat=$Tableau[0]; $ligne1=$Tableau[1]; $name=$Tableau[2]; $nbchamps=$Tableau[3]; $selection=$Tableau[4]; if(($NbArgs==6)and($Tableau[5]<>"")) { $class=$Tableau[5]; echo "<select name=\"".$name."\" class=\"".$class."\">"; } else echo "<select name=\"".$name."\">"; if($ligne1==1) echo "<OPTION>"; while ($row =& $resultat->fetchRow()) {echo gettype($row); echo "<script language=\"javascript\"> alert(\"liste !\"); </script>"; if($row[0]<>'0') { if($selection==$row[1]) echo "<option value=\"".$row[0]."\" selected=\"selected\">"; else echo "<option value=\"".$row[0]."\">"; for($i=1;$i<=$nbchamps;$i++) echo $row[$i]." "; } } echo "</select>";echo gettype($row); }
le message en javascript ne s affiche que pour les resultats de la liste du premier enregistrement
mais je ne sais toujours pas pourquoi il ne entre pas dans la boucle pour les autres
une idée? aidez moi svp