[RESOLU] Faire une boucle à l'aide d'un GET

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 16:40

Bonjour, j'aimerais faire une boucle à l'aide d'un GET. Mon site possède 2 pages : la page1 et la page2. Sur la page1 il y a plusieurs images, le code est le suivant:
<a href="page2.php?id=1"> <img src="http://monsite.fr/images/image1.jpg" /> </a>
<a href="page2.php?id=2"> <img src="http://monsite.fr/images/image2.jpg" /> </a>
<a href="page2.php?id=3"> <img src="http://monsite.fr/images/image3.jpg" /> </a>
...
<a href="page2.php?id=n"> <img src="http://monsite.fr/images/imagen.jpg" /> </a>
Je clique à présent sur l'image2 et j'atteris sur la page2 sur laquelle s'affiche l'image2 à l'aide de ce code:
echo '<img src="http://monsite.fr/images/image'.$_GET['id'].'.jpg" />';
Maintenant je retourne de nouveau sur la page1 et clique sur l'image3, et je suis redirigé vers la page2 où l'image3 est affichée.
Ma question: comment faire pour que sur la page2 les deux images sur lesquelles j'ai cliqué soient affichées ? Je suppose qu'il faut faire une boucle ?

Mammouth du PHP | 1339 Messages

05 janv. 2015, 18:11

Tu stockes dans un array()...

Tu savais sauvegarder les images dans une session...
Bah fait en sorte que ta session soit un array()
session_start();
$_SESSION['image'][] = $_GET['id'];
foreach($_SESSION['image'] as $v) {
 echo '<img src="http://monsite.fr/images/image'.$v.'.jpg" />';
}
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 20:01

Merci Elie pour ta réponse, j'ai peut-être oublié d'ajouter un détail dans ma question. J'aimerais que les images ne s'ouvrent pas en même temps mais qu'elles s'ouvrent seulement si je clique dessus. Je m'explique, si je clique sur l'image1 sur la page1, alors l'image1 (et seulement l'image1) apparaît sur la page2, maintenant si je reviens sur la page1 et clique sur l'image3 par exemple alors sur la page2 sont affichées l'image1 et l'image3. Par contre si je n'aurais pas cliqué sur l'image3 (sur la page1), alors il n'y aurait que l'image1 sur la page2. Avec un tableau cela est-ce possible ?

Mammouth du PHP | 688 Messages

05 janv. 2015, 20:08

tu as essayé le code donné ?
car il fait ce que tu souhaites.

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 20:38

Non, il y a quelque chose qui coince, j'ai fait ce code sur la page1 :
<a href="page2.php?id=1"> <img src="http://monsite.fr/images/image1.jpg" /> </a>
<a href="page2.php?id=2"> <img src="http://monsite.fr/images/image2.jpg" /> </a>
<a href="page2.php?id=3"> <img src="http://monsite.fr/images/image3.jpg" /> </a>
...
<a href="page2.php?id=n"> <img src="http://monsite.fr/images/imagen.jpg" /> </a>
Et ensuite celui-là sur la page2 :
session_start();
if(!empty($_GET['id'])) $_SESSION['id'][] = $_GET['id'];
foreach($_SESSION['id'] as $v) {
 echo '<img src="http://monsite.fr/images/image'.$v.'.jpg" />';
}
Mais quand je clique sur l'un des liens de la page1, rien ne s'affiche sur la page2 :cry:

Mammouth du PHP | 688 Messages

05 janv. 2015, 20:47

j'ai fait un copier/coller de ces 2 codes et cela fonctionne.

donne le code complet de page2.php pour vérifier que session_start(); est appelé au bon moment.

Mammouth du PHP | 1339 Messages

05 janv. 2015, 20:48

Dommage car chez moi ca marche :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 21:09

Voilà mon code (j'ai pris la peine de remplacer le nom de mon vrai site pour pas faire de pub):
<?php
 session_start(); // Très important

?>



<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Resizable - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  <script src="http://monsite.fr/code/js/jquery.ui.touch-punch.min.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>

  </style>
  <script>
  
    $(function() {
    $( ".resize" ).resizable({
      aspectRatio: true
    });
  });
  
  $(function() {
    $('.drag').draggable();
  });


  </script>
</head>
<body>
 
 

<?php 
if(!empty($_GET['logo'])) $_SESSION['logo'] = $_GET['logo'];
foreach($_SESSION['logo'] as $v) {
echo '<div class="drag"><img class="resize" src="http://monsite.fr/media/img/logo/'.$v.'.svg"/></div>'; 
}
?>

 
 
 
</body>
</html>

Mammouth du PHP | 1339 Messages

05 janv. 2015, 21:14

Et ca te saute pas au yeux ?

Le principe de faire un array d'une variable et de rajouter [].
C'est comme si tu écrivait $_SESSION['nom'][0] ...
Tu peux meme faire $_SESSION['nom']['nom_de_la_cle']
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 21:24

Quand je met ce code:
<?php
 session_start(); // Très important

?>



<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Resizable - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  <script src="http://monsite.fr/code/js/jquery.ui.touch-punch.min.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>

  </style>
  <script>
  
    $(function() {
    $( ".resize" ).resizable({
      aspectRatio: true
    });
  });
  
  $(function() {
    $('.drag').draggable();
  });


  </script>
</head>
<body>
 
 

<?php 
if(!empty($_GET['logo'])) $_SESSION['logo'][] = $_GET['logo'];
foreach($_SESSION['logo'] as $v) {
echo '<div class="drag"><img class="resize" src="http://monsite.fr/media/img/logo/'.$v.'.svg"/></div>'; 
}
?>

 
 
 
</body>
</html>
Cela me retourne: "Fatal error: [] operator not supported for strings in ... on line 46"

Mammouth du PHP | 688 Messages

05 janv. 2015, 21:32

ferme ton navigateur et reteste (afin de remettre à la session à 0).

Eléphanteau du PHP | 29 Messages

05 janv. 2015, 21:35

Oui j'ai fermé le navigateur et ça a marché ! :D :D :D :D :D :D Merci à vous deux