Select avec variable contenant plusieurs valeurs

Select avec variable contenant plusieurs valeurs - PHP - Programmation

Marsh Posté le 18-07-2016 à 13:00:39    

Bonjour à vous
Je souhaite réaliser un affichage des éléments de la BDD en fonction des pages que je sélectionne grâce à des chexbox
La BDD :
ID
TEXTE
PAGE
 
L’affichage de ma sélection est bon, mais pas l’affichage des mots. Seul la dernière page de ma sélection s’affiche.
Auriez-vous une piste, merci pour moi et mes élèves….
 
le code :
 
<?php
include  'config.php';
include  'navigation.php';
?>
<html>
<head>
<title>Liste des mots </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="module.css" rel="stylesheet" type="text/css" />
</head>
<body>
 
<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <?php
// vérifions que la variable a été transmise
$tabPage = (isset($_POST['page']))?$_POST['page']:null;
 
echo "Voici la (les) page (s) que vous avez choisi : ";
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabPage)) {
 foreach($tabPage as $cle => $valeur) {
 echo $valeur." ";
 }
}
echo "<br>";
echo "<br>";
//$select = "SELECT texte from BDD ORDER BY rand() LIMIT 0,22";
$select = "SELECT * from BDD WHERE page='".$valeur."' ";
$result = mysql_query($select)  or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_array($result))
{
echo "Page : ".$row["page"]." - ";
echo "".$row["texte"]."<br>";
}
mysql_free_result ($result);
mysql_close ();
?>
</div>
</html>

Reply

Marsh Posté le 18-07-2016 à 13:00:39   

Reply

Marsh Posté le 20-07-2016 à 13:23:41    

Bonjour,
Je vois que beaucoup de passe sur le forum, mais personne n'a de piste pour m'aider ???
 
Merci a celui qui me donnera un début de proposition.
S'il faut tout créer, je suis preneur.....
 
Merci d'avance.

Reply

Marsh Posté le 20-07-2016 à 13:44:42    

Comme toujours dans ces cas là, il n'y a pas d'aide car la question manque de précision...
 
dans :

Code :
  1. $select = "SELECT * from BDD WHERE page='".$valeur."' ";


$valeur correspond à la dernière occurrence de ta boucle :

Code :
  1. foreach($tabPage as $cle => $valeur) {
  2. echo $valeur." ";
  3. }


Donc je supposes que tu voudrais inclure ta requête dans ta boucle foreach
 
Attention aussi à la protection car comme on le comprend $valeur provient de l'utilisateur ($_POST) et rien n'ai fait pour traiter cette valeur avant de la mettre dans une requête SQL ce qui t'expose à de l'injection...
 
Si c'est un numéro qui est attendu, un simple intval($valeur), permettrait déjà de traiter le cas "0; DROP TABLE BDD;"


---------------
D3
Reply

Marsh Posté le 20-07-2016 à 18:53:04    

Bonjour à tous,
Je vais essayer d'être plus clair dans mon problème.
Dans une page, je dispose de 99 cases à cocher pour faire une sélection de pages (chaque page contenant des éléments texte)
Exemple de la BDD :
id texte     page
 
1 Maison 1
2 Immeuble 1
3 voiture 2
4 Camion 2
5 vélo        2
etc...
Lorsque j'envoie mon info via le formulaire par un POST, je lis bien les informations.
echo $valeur." "; m’affiche bien la ou les pages sélectionnées.
 
Par contre :
$select = "SELECT * from BDD WHERE page='".$valeur."' "; ne lit que la dernière page sélectionné, donc ne m’affiche pas tous les textes demandés.
J’espère avoir été plus clair dans mon souci.
Merci

Reply

Marsh Posté le 20-07-2016 à 18:59:35    

Un exemple de ce que j'obtiens :
 
Voici la (les) page (s) que vous avez choisi : 1 3 4 5 7  
 
Page : 7 - crocodile (le)
Page : 7 - octobre
Page : 7 - novembre
Page : 7 - gros
Page : 7 - grosse
Page : 7 - porte (la)
Page : 7 - alors
Page : 7 - encore
Page : 7 - trop

Reply

Marsh Posté le 21-07-2016 à 09:03:24    

mechkurt a écrit :


dans :

Code :
  1. $select = "SELECT * from BDD WHERE page='".$valeur."' ";


$valeur correspond à la dernière occurrence de ta boucle :

Code :
  1. foreach($tabPage as $cle => $valeur) {
  2. echo $valeur." ";
  3. }


Donc je supposes que tu voudrais inclure ta requête dans ta boucle foreach
 
Attention aussi à la protection car comme on le comprend $valeur provient de l'utilisateur ($_POST) et rien n'ai fait pour traiter cette valeur avant de la mettre dans une requête SQL ce qui t'expose à de l'injection...
 
Si c'est un numéro qui est attendu, un simple intval($valeur), permettrait déjà de traiter le cas "0; DROP TABLE BDD;"


Pas mieux à dire alors...


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed