[PHP] Le nom de mes colonnes s'effacent
beegees
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- [PHP] Le nom de mes colonnes s'effacent
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Excel fusionner 2 colonnes nom prénom - Guide
- Changer le nom de son iphone - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel