5 réponses
Utilisateur anonyme
25 janv. 2013 à 14:03
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']."'";
$query_string = "select * FROM $tablename where id='".$_SESSION['id']."'";
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.
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.
Utilisateur anonyme
Modifié par jamalofski le 25/01/2013 à 14:34
Modifié par jamalofski le 25/01/2013 à 14:34
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);
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);
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
25 janv. 2013 à 14:35
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
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 :
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']."')";
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.
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.