Select * FROM $tablename where id=.'$_SESSION['id']"

Fermé
Mig - 25 janv. 2013 à 14:00
 Mig - 25 janv. 2013 à 17:44
Bonjour,

j'essaye de créer un panier d'achats dans lequel je pourrais afficher les éléments sélectionnés par l'utilisateur à partir d'une database stockée dans mysql.

Pour cela, j'ai déjà réussi à créer une page stockant une nouvelle variable session contenant l'id des entrées sélectionnées dans la database.

Ca ressemble à ça:

if (isset($_GET['action']) AND $_GET['action'] == 'add')
{
$id=$_GET['id'];
$_SESSION['id'][$id]=$id;
}
(Cette fonction marche parfaitement, je l'ai vérifié en affichant toutes mes variables session et j'obtiens bien le résultat voulu, càd $_SESSION['id'][5]=5 si l'utilisateur a sélectionné l'entrée 5 par exemple).

Maintenant, j'aimerais faire une query qui permettra de sélectionner toutes les entrées de la base de donnée avec des id correspondant à ceux qui sont stockés dans mes variables session, et c'est là que ça coince.

J'ai essayé $query_string = "select * FROM $tablename where id='$_SESSION['id']'"; pour tenter d'afficher au moins ma première entrée mais ça ne marche pas et je reçois le message d'erreur suivant:"
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING "

Quelqu'un pourrait m'aider?

Merci d'avance

5 réponses

Utilisateur anonyme
25 janv. 2013 à 14:03
je ne vais pas commenter le $_GET qui tu dois absolument contrôler avant de l'utiliser dans un query car ça me semble évident. je corrige juste ta requête :

$query_string = "select * FROM $tablename where id='".$_SESSION['id']."'";
0
Merci beaucoup pour ta réponse, maintenant j'arrive au moins à afficher une ligne, par contre toujours pas toutes celles correspondant à toutes les variables session.

Je suppose que vous comprendrez ce que je veux dire si je vous dis que j'essaye avec "select * FROM $tablename where id='".$_SESSION['id'][*]."'"; mais que ça ne marche pas.

P.S: excusez moi si je fais des erreurs de débutant mais je fais du php depuis une semaine donc je suis effectivement un débutant.
0
ah je vois mais ce n'est pas aussi simple à faire ou du moins par aussi directement.

D'abord aucun interet à que tu fasses ceci : $_SESSION['id'][$id]=$id;

ce que je te propose est d'initialiser $_SESSION['id'] = array();

Ensuite à chaque fois qu'il y a un produit en plus tu fais : $_SESSION['id'][] = $id;

Ensuite pour tout afficher :

$list = '';

$nb = count($_SESSION['id']);
for($i=0; $i<$nb; $i++)
{
if($i != 0)
$list .= ',';
$list .= "'".$_SESSION['id'][$i]."'";
}

Après te requête devient ainsi :
select * FROM $tablename where id in ($list);
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
25 janv. 2013 à 14:35
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
25 janv. 2013 à 14:34
$_SESSION['id'] est un tableau de valeurs, tu ne peux pas passer un tableau dans ta requête comme ça.

la façon dont tu construis ton tableau est bizarre aussi, ça ne sert a rien d'avoir la clé et la valeur qui valent la même chose.

Au lieu de faire :
$_SESSION['id'][$id]=$id;

tu devrais faire :
array_push($_SESSION['id'], $id);

ainsi, tu vas ajouter un id dans ton tableau $_SESSION['id']

et lors de ta requête tu pourras faire quelque chose de ce genre :
$req = "select * FROM $tablename where id in ('".implode("','",$_SESSION['id']."')";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Excusez moi, j'étais tellement content que ça marche que j'ai continué à peaufiner les détails et j'en ai oublié de venir dire que ça marchait finalement.

J'ai donc bien créé une variable session de type array qui était incrémentée avec chaque nouvel id sélectionné par l'user, ensuite j'ai créé une variable qui était définie comme $ids='".implode("','",$_SESSION['id']."' et ensuite utilisé cette variable dans ma query: select * FROM $tablename id in ($ids).

Après quelques chipotages sur les conditions pour éviter que ma variable soit recréée (et donc vidée) à chaque nouvelle entrée ça marchait nickel.

Voilà, merci à vous pour vos réponses.
0