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 :
Ce code fonctionne (sans doute car je ne sais pas comment contourner un Get pour tester)
Code : Sélectionner tout - Visualiser dans une fenêtre à part if((isset($_GET['Sort'])) && (in_array($tri,$Tableau_Noms_Des_Champs)) || ($_GET['Sort'] == "" ))
Le tri ce fait, mais après le nom des colonnes disparaissent.
Voici l'entierté de mon code :
Sauriez-vous me dire ce que je dois faire svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 <!--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>
Merci d'avance.
beegees








Répondre avec citation

Partager