[PHP] Le nom de mes colonnes s'effacent

Fermé
beegees - 5 nov. 2008 à 20:26
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 5 nov. 2008 à 20:59
Bonjour tout le monde,

Je trie mes colonnes de mon tableau, tout ce passe bien.

J'ai voulu sécuriser le $_GET['Sort'] mais je rencontre quelques difficultés :

[CODE]if((isset($_GET['Sort'])) && (in_array($tri,$Tableau_Noms_Des_Champs)) || ($_GET['Sort'] == "" ))
[/CODE]

Ce code fonctionne (sans doute car je ne sais pas comment contourner un Get pour tester)

Le tri ce fait, mais après le nom des colonnes disparaissent.

Voici l'entierté de mon code :

[CODE]<!--Si la variable de type get à une information ou si la variable de session LaTable à une donnée alors on fait tout cela-->
<?php if((isset($_GET['select_Nom_Tables'])) OR (isset($_SESSION['LaTable']))){ ?>
<table border="1" id="TableauUpdate">
<?php
//Je crée une variable de session ici afin que le nom de la table puisse etre utilisé dans le script "Mettre a jour".
if(isset($_GET['select_Nom_Tables'])) {
$table = $_GET['select_Nom_Tables'];
} else {
$table = $_SESSION['LaTable'];
}
$_SESSION['LaTable'] = $table;


//si je clic sur un nom de champ, une valeur get se met dans l'adresse
if(isset($_GET['Sort'])) {
$tri = "ORDER BY ".$_GET['Sort'];
} else {
$tri = "";
}

$query = mysql_query("SELECT * FROM ".$table." ".$tri."") or exit(mysql_error());
$num_rows = mysql_num_rows($query) or exit(mysql_error());
//echo($table);

//echo $num_rows ." lignes dans la table " . $table."\n";

$Tableau_Noms_Des_Champs = array();

for($j=0;$j<mysql_num_fields($query);$j++)
{
$Tableau_Noms_Des_Champs[] = mysql_field_name($query, $j);
//echo(mysql_field_name($query,$j));
}
var_dump($Tableau_Noms_Des_Champs);

?>
<?php if ($num_rows > 0) {?>
<form action="" method="post" name="frmSaisie" id="frmSaisie">
<tr><td> </td>
<?php
//++++++++++++++++++++++++affichage des noms de colonnes +++++++++++++++++++++++++++++++++
for($i=0;$i<mysql_num_fields($query);$i++)
{
//afin de ne pas afficher l'ID dans les pages de consultations, je dis que si le nom du champ actuel est 'ID', je l'ignore
if(mysql_field_name($query,$i) != 'ID')
{
//cursos:pointer transforme la flèche en main pour les liens
//self.location.href recharge la page
//?Sort= le nom du champ que l'on veut trier
//je sécurise le GET en testant si la valeur retournée dans l'URL est bien dans le tableau (in_array)
if((isset($_GET['Sort'])) && (in_array($tri,$Tableau_Noms_Des_Champs)) || ($_GET['Sort'] == "" ))
{
echo '<td style="cursor:pointer" onclick="self.location.href=\'EntreeDeDonnees.php?Sort='.$Tableau_Noms_Des_Champs[$i].'&Table='.$table.'\'">'.$Tableau_Noms_Des_Champs[$i].'</td>';
$_GET['Sort'] = '';
}
else{echo('la valeur de $_GET[\'Sort\'] est'. $_GET['Sort']);}
}
}
?>
</tr>
<?php
$nligne = 0;
$nbColonnes = 0;
while($row = mysql_fetch_array($query,MYSQL_ASSOC))
{
echo '<tr><td><input name="sup['.$row['ID'].']" type="checkbox" value="'.$row['ID'].'" /></td>';
foreach($row as $NomCol => $Valeur)
{
//si le nom de la colonne vaut 'ID', je l'ignore afin de ne pas afficher l'ID
if($NomCol != 'ID'){
echo '<td><input name="new[' . $row['ID'] . '][' . $NomCol . ']" value="'.$Valeur.'"></td>'; }
}
echo '</tr>';
}

echo '</tr>';


?>

}
</script>[/CODE]

Sauriez-vous me dire ce que je dois faire svp ?

Merci d'avance.

beegees

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 nov. 2008 à 20:59
a première vue, deux erreurs:

si tu utilises $8SESSION, il faut mettre tout au début du script

<?php
session_start();

ensuite var_dum(..) affiche le tableau mais déplace le pointeur à la fin de l'array, alors mets cette ligne en commentaires
0