Affichage grâce a la value dans une session PHP

Fermé
kimo - Modifié le 21 déc. 2021 à 11:01
jordane45 Messages postés 38388 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 janvier 2025 - 21 déc. 2021 à 14:05
Bonjour,
Je cherche a affiche grâce a la value contenue dans ma session des données se trouvant dans ma BDD sous form de card.
J'arrive a réaliser l'affichage avec une seul valeur contenue mais pas toute.

pour recupérer les id :
$id = $_GET["id"];
if (isset($id)) { 
    addFavorie($id);  
    var_dump($_SESSION['favoris']); 
}

voici comment j'ajoute dans ma session :
 function addFavorie($id)
{
    if (!isset($_SESSION['favoris'])) {
        $_SESSION['favoris'] = array(   
        );
    }
       
    $favori = $_SESSION['favoris'];
    if (!in_array($id, $favori)) {
         array_push($favori, $id);
    }
    $_SESSION['favoris'] = $favori;
}

Voici ma function qui me permet de le lire avec une valuer en parametre:
function readVilleFavoris($idFavori)
{
  static $ps = null;
  $sql = 'SELECT *';
  $sql .= ' FROM Villes.villes';
  $sql .= ' WHERE idVille = :ID';

  if ($ps == null) {
    $ps = myPdo()->prepare($sql);
  }
  $answer = false;
  try {
    $ps->bindParam(':ID', $idFavori, PDO::PARAM_STR);

    if ($ps->execute())
      $answer = $ps->fetchAll(PDO::FETCH_ASSOC);
  } catch (PDOException $e) {
    echo $e->getMessage();
  }

  return $answer;
}

et pour l'affichage ça donne cela :
 echo villeToHtmlTable(readVilleFavoris($_SESSION['favoris']['0'])); 


le soucis c'est que je suis obliger de mettre du coup la key sauf que j'aimerai afficher a l'aide de la value qui sont des id

EDIT : Ajout des balises de code

Configuration: Windows / Chrome 96.0.4664.110
A voir également:

1 réponse

jordane45 Messages postés 38388 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 janvier 2025 4 727
21 déc. 2021 à 11:12
Bonjour,

En gros, si j'ai bien compris ( ce qui n'est pas sûr...) ..; tu voudrais pouvoir récupérer toutes les données de la bdd de "tous" les ID que tu as mis en SESSION ?
Si tel est le cas, penches toi sur la clause IN en SQL ...

par exemple
$arrayOfValues = array(1,2,3,4,5); // ton array d' IDs

$id_villes = join("," , array_pad(array(), count($arrayOfValues), "?"));

$sql = "SELECT *
             FROM Villes.villes
             WHERE idVille IN ($id_villes)";

$ps = myPdo()->prepare($sql);
$ps ->execute($arrayOfValues);


Si ce n'est pas ça dont il est question .. merci de reformuler ta question plus clairement...

0
Tout d'abord merci beaucoup pour la reponse.
Le soucis que j'ai c'est que les id sont garder dans le session et je souheterai pouvoir les utiliser afin de pouvoir continuer.
Dans l'exmaple que vous m'avez donnés les id sont dans
$arrayOfValues = array(1,2,3,4,5)
sauf que moi c'est dans ma session. si je fais un var dump de ma session j'obtien ceci :

code:
var_dump($_SESSION['favoris']);

resultat:
array(1) { [0]=> string(1) "1" }

je peux en ajouter et ca donnerai ceci :
array(2) { [0]=> string(1) "1" [1]=> string(1) "2" }
0
jordane45 Messages postés 38388 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 janvier 2025 4 727 > kimo
21 déc. 2021 à 14:05
Et bien...
$arrayOfValues =  $_SESSION['favoris']

tout simplement...
0