Page 1 sur 1

Comment masquer un champ d'une table contenu dans un tableau

Posté : 15 mai 2006, 14:32
par oOTHCOo
Salut,
Je voudrais savoir s'il est possible de masquer un champ d'une table contenu dans un tableau, j'ai déjà réussi à masquer les données de ce champs mais impossible de masquer le "titre du champ", voila ce que j'obtient :

Code : Tout sélectionner

ACTIONS ID NOM PRENOM [Modifier] Martin Didier [Supprimer]
En faite je n'arrive pas à masquer le champ ID (correspond à un entier auto-incrémenté)
Voici mon code :
echo "<div class=\"titrecorps\">Enregistrements de la table \"$table\" :</div>";
			$ordre=$champs["$table"]["0"];
			//$select=mysql_query("select * from $table_utilisee order by $ordre ASC"); // fonctionnait pas pour la table Transporteur
			$select=mysql_query("select * from $table_utilisee");
			$nb_enregistrements=mysql_num_rows($select);
			$tab_msg=array(
							"1"=>"Les données ont été correctement ajoutées !",
							"2"=>"Les données ont été correctement modifiées !",
							"3"=>"Suppression de l'enregistrement effectué!");
			?>
			&raquo; <?=$nb_enregistrements?> enregistrement(s) dans cette liste.	
			<?php
			if (isset($_GET["msg"])) {
				echo "<div class=\"erreur\">".$tab_msg[$_GET["msg"]]."</div>";
			}
			?>
			<table border="1">
				<tr align="center"><td><b>ACTIONS</b></td>
				<?php
				$nb_champs=sizeof($champs["$table"]);
				while(list($k,$nom_champ)=each($champs["$table"])) {
					$nom_champ_maj=strtoupper($nom_champ);
					echo "<td><b></b>$nom_champ_maj</td>";
				}
				?>
				</tr>
			<?php
			while ($res=mysql_fetch_array($select)) {
				echo "<tr><td><center>[<a href=\"".$_SERVER["PHP_SELF"]."?table=$table&q=Modifier&id=".$res["id"]."\">Modifier</a>]<br>[<a href=\"javascript:confirmation('".$_SERVER["PHP_SELF"]."?table=$table&q=Supprimer&id=".$res["id"]."');\">Supprimer</a>]</center></td>";
			       $i=1;	
				while($i<$nb_champs) {
					$nom_champ=$champs["$table"]["$i"];
					echo "<td>".$res["$nom_champ"]."</td>"; 
					$i++;
				}
				echo "</tr>";
Je pense que le problème se situe à ce niveau là :
<?php
				$nb_champs=sizeof($champs["$table"]);
				while(list($k,$nom_champ)=each($champs["$table"])) {
					$nom_champ_maj=strtoupper($nom_champ);
				        echo "<td><b></b>$nom_champ_maj</td>";
				}
				?>
Le probleme viendrait du while mais je vois pas trop comment faire :? . Le champ ID est situé en début de mes deux tables et mes 2 tables ne comportent pas le même nombre de champs.
Je me tiens à votre disposition pour toutes autres infos.

Merci d'avance.

Posté : 15 mai 2006, 14:40
par zeus
Quand tu fait cette requete,

Code : Tout sélectionner

select * from $table_utilisee
tu remontes TOUS les champs de ta table

Pour ne pas remonter le champ ID, il suffit d'ennumerer les champs que tu veux remonter
$sql = "select nom, prenom from ".$table_utilisee
De plus, ce n'est pas optimisé de récupérer des données que tu n'utilises pas car cela représente du traffic inutile ...

Posté : 15 mai 2006, 14:54
par oOTHCOo
Je vois ce que tu veux me dire mais le problème est que ce code est fait pour être utilisé par mes 2 tables, donc je voudrais savoir si je peux en utilisant des variables masquer ce champs ???

Posté : 15 mai 2006, 14:58
par zeus
Si les tables ne comportent pas le même nombre de champs, ma solution ne fonctionne pas, effectivement :-k

Si le nom de ton id est toujours le même, tu peut tenter de faire un test $nom_champ et s'il est ton id, tu n'affiches pas. Sinon, tu peut essayer de ne pas afficher le 1er champ si ton id est toujours en 1er :-k

Posté : 15 mai 2006, 15:18
par oOTHCOo
Je vois pas trop ce que tu veux dire :? . En faite mon champ ID est un entier auto incrémenté donc ses données ne sont pas identiques. En faite je crois savoir ou se situe le problème :

Code : Tout sélectionner

<?php $nb_champs=sizeof($champs["$table"]); while(list($k,$nom_champ)=each($champs["$table"])) { $nom_champ_maj=strtoupper($nom_champ); echo "<td><b></b>$nom_champ_maj</td>"; } ?>
Ce code mais en majuscules le nom de mes champs et les affichent ensuite dans mon tableau mais je voudrais qu'il ne le fasse pas pour le premier (champ "ID")
Je pense que le probléme vient du $k de la fonction list, la solution serait de faire quelque chose dans ce genre :

Code : Tout sélectionner

list( ,NOM, PRENOM,$nom_champ)
Mais le probleme est que mes deux tables sont différentes.
Est-il possible à partir de cette fonction de "passer" le 1er champ et qu'elle soit valable pour mes 2 tables???

Posté : 15 mai 2006, 15:45
par zeus
Ce que j'essaye de te faire comprendre, c'est que dans ce code, tu parcours les champs de ta table
<?php
$nb_champs=sizeof($champs["$table"]);
while(list($k,$nom_champ)=each($champs["$table"])) {
$nom_champ_maj=strtoupper($nom_champ);
echo "<td><b></b>$nom_champ_maj</td>";
}
?>
Il te suffit donc de regarder le nom du champs que tu va afficher et si c'est "ID", tu ne l'affiches pas ;)
<?php
$nb_champs=sizeof($champs["$table"]);
while(list($k,$nom_champ)=each($champs["$table"])) {
$nom_champ_maj=strtoupper($nom_champ);
//Si le champ n'est pas le champ "ID", affichage
if ($nom_champ != "ID")
  echo "<td><b></b>$nom_champ_maj</td>";
}
?>
C'est plus clair ? ;)

Posté : 15 mai 2006, 16:02
par oOTHCOo
Je te remercie sa marche niquel :lol: par contre rectification il faut mettre nom_champ_maj dans le if au lieu de nom_champ sinon sa marche pas.

Code : Tout sélectionner

while(list($k,$nom_champ)=each($champs["$table"])) { $nom_champ_maj=strtoupper($nom_champ); if ($nom_champ_maj != "ID") echo "<td><b>$nom_champ_maj</b></td>";
Encore merci :lol: