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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment masquer un champ d'une table contenu dans un tableau

par oOTHCOo » 15 mai 2006, 16:02

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:

par zeus » 15 mai 2006, 15:45

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 ? ;)

par oOTHCOo » 15 mai 2006, 15:18

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???

par zeus » 15 mai 2006, 14:58

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

par oOTHCOo » 15 mai 2006, 14:54

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 ???

par zeus » 15 mai 2006, 14:40

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 ...

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

par oOTHCOo » 15 mai 2006, 14:32

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.