Probleme insertion variable php
Résolu
mont_dani
Messages postés
249
Statut
Membre
-
mont_dani Messages postés 249 Statut Membre -
mont_dani Messages postés 249 Statut Membre -
Bonjour
J'ai récuperé un script pour affichage de photo en gran en cliquant sur une miniature qui fonctionne trés bien.
Mais quand je veux inserer une variable php dans le JS, cela ne fonctionne plus:
Voici le script:
Merci pour votre aide
J'ai récuperé un script pour affichage de photo en gran en cliquant sur une miniature qui fonctionne trés bien.
Mais quand je veux inserer une variable php dans le JS, cela ne fonctionne plus:
Voici le script:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>
<style >
.body {
background: black;
}
#fermer {
position: relative;
top: 10px;
margin-left: 10px;
}
.modal {
z-index:1;
display:none;
padding-top:10px;
position:fixed;
left:0;
top:0;
width:100%;
height:100%;
overflow:auto;
background-color:rgb(0,0,0);
background-color:rgba(0,0,0,0.8)
}
.modal-content{
margin: auto;
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.modal-hover-opacity {
opacity:1;
filter:alpha(opacity=100);
-webkit-backface-visibility:hidden
}
.modal-hover-opacity:hover {
opacity:0.60;
filter:alpha(opacity=60);
-webkit-backface-visibility:hidden
}
.close {
text-decoration:none;
float:right;
font-size:24px;
font-weight:bold;
color:white
}
.container1 {
width:200px;
display:inline-block;
}
.modal-content, #caption {
-webkit-animation-name: zoom;
-webkit-animation-duration: 0.6s;
animation-name: zoom;
animation-duration: 0.6s;
}
@-webkit-keyframes zoom {
from {-webkit-transform:scale(0)}
to {-webkit-transform:scale(1)}
}
@keyframes zoom {
from {transform:scale(0)}
to {transform:scale(1)}
}
</style>
</head>
<body>
<div class="container1">
<!-- la photo en miniature -->
<img src="../../image/galeria/mini/42111a (5).jpg" style="max-width:100%;cursor:pointer"
onclick="onClick(this)" class="modal-hover-opacity">
</div>
<!-- la variable pour la photo plus grande -->
<?php
$photo = "../../image/galeria/42111a (5).jpg";
?>
<div id="modal01" class="modal" onclick="this.style.display='none'">
<span class="close">X </span>
<div class="modal-content">
<!-- la photo plus grande
code d'origine <img id="img01" style="max-width:100%">
</div> -->
<img id="<?php echo $photo; ?>" style="max-width:100%">
</div>
</div>
<script>
function onClick(element) {
<!-- code d'origine document.getElementById("img01").src = element.src; -->
var photo = "<?php json_encode($photo); ?>";
(document.getElementById(photo).src = element.src;
document.getElementById("modal01").style.display = "block";
}
</script>
</body>
</html>
Merci pour votre aide
7 réponses
-
Bonjour
Il va te falloir passer par de l'Ajax.
Tu trouveras de nombreux exemples /tutos sur le net à ce sujet.
Par exemple
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery -
Bonjour Jordane.
Ouf...
Je pesnais que cela pouvait se faire en JS sans passer par Ajax.
Je n'ai jamais utiliser Ajax et cela me semble un peu compliquer pour l'utiliser dans une seule fonction de ma web.
Pourrais-tu me donner un coup de main.
Il y aurait-il un autre moyen d'afficher en grand une photo en cliquant sur une photo mini?
Merci -
Je crois avoir résolu mon problème en utilisant Lightbox
-
J'ai en effet obtenu ce que je voulais avec lightbox.
Il me reste un problème: A l'affichage de la galerie, la première photo de chaque colonnes n'a pas de lien.
Si tu veux voir sur mon site http://lenergie-vive.com/lacansera/es/galeria/page_galeria.php en sélectionnant dans la liste déroulante "flechas amarillas 1"
Peut-être dois-je le poster sur un autre forum?
Merci pour ton attention.
Voici le script<!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="../../lightbox/dist/css/lightbox.min.css"> <script type="text/javascript" src="jquery.mlens-1.2.min.js"></script> <link rel="stylesheet" href="../../css/menu.css"> <link rel="stylesheet" href="../../css/general.css"> <link rel="stylesheet" href="../../css/libro.css"> <link rel="stylesheet" href="../../lightbox/dist/css/lightbox.css"> </head> <body> <br> <form class="center" action="" method="post"> <select class="galeria" name="pais" > <option value="">Elige una categoria</option> <option value="11111">La trapa</option> <option value="11112">Ruta del rio Loio</option> <option value="11121">Catedral del mar</option> <option value="11131">Catarata de Fonsagrada</option> <option value="13121a">Costa da Morte</option> <option value="42111a">Flechas amarillas (1)</option> <option value="42111b">Flechas amarillas (2)</option> <option value="42111c">Flechas amarillas (3)</option> </select><br> <input class="galeria" type="submit" name= "valider " value="Valider" /> </form> <br> <?php if (!empty($_POST['pais'])){ if(isset($_POST)) { $categoria = $_POST["pais"]; $repertoire ="../../image/galeria"; $fichier = $repertoire."/".$categoria; $files = glob($fichier.'*'); // toute les photo qui commence par $repertoire_mini="../../image/galeria/mini"; $fichier_mini = $repertoire_mini."/".$categoria; $files_mini = glob($fichier_mini.'*'); // toute les photo qui commence par $lines = count($files_mini); // nombre de photo $nb_colonne = 3; // nombre de colonnes a l'affichage $nb_imgCel = ceil($lines/$nb_colonne); // Nombre d'images par cellule //variable utilisées pour recréer un array organisé comme tu le souhaites $arrG = []; $arrF = []; $row = 0; $col = 0; $K = 0; //on boucle sur chaque fichier : foreach($files_mini as $F){ if($col>0 && $col % ($nb_colonne-1) == 0 && $K>=$nb_imgCel){ $col=0; $K=0; $row++; } if($K>0 && $K % $nb_imgCel == 0){ $col++; $K=0; } $arrF[$row][$col][] = $F; $K++; } //pour voir à quoi ressemble l'array echo "<table width='60%' align='center'>"; foreach($arrF as $Row ){ echo "<tr>"; foreach($Row as $Col){ echo "<td width='30%' style='vertical-align: top;>"; foreach($Col as $img ) { $tabUrl = parse_url($img); $fichero =basename ($tabUrl["path"]); echo " <section> <div> <a href='../../image/galeria/$fichero' data-lightbox='example-set' ><img class='catimage' src='../../image/galeria/mini/$fichero' alt=''/></a> </div> </section>"; } echo "</td>"; } echo "</tr>"; } } } ?> <script src="../../lightbox/dist/js/lightbox-plus-jquery.min.js"></script> </body> </html> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Il y a un problème à la ligne 87 au niveau du style de la balise <td>
elle devrait être comme ça :<td width='30%' style='vertical-align: top;'>
-
Super et désolé pour cette erreur parfaitement visible qui m'a échappé.
Merci à vous tous pour votre aide. -
Bonjour
J'ai utiliser le script précèdent et j'ai inclus un autre pour faire un affichage aléatoire de photo lors de l'ouverrture de la page.
Tout va bien sauf que je n'arrive pas à réduire l'affichage des photo à une seule ligne. Quand il affiche le nombre de photo déterminée par ligne il ajoute une autre ligne et je veux me limiter a une seule ligne.
Voici e script:<?php // extensiones a mostrar $extensions = array('jpg','jpeg','gif','png','bmp'); // nombre del directorio if (!empty($_POST['pais'])) { $folder_image_name = "/lacansera/image/vide/"; } else { $folder_image_name = "/lacansera/image/galeria/mini/"; } // ruta del directorio $images_folder_path = $_SERVER['DOCUMENT_ROOT'].$folder_image_name; // url del directorio $url_to_folder = 'http://'.$_SERVER["SERVER_NAME"].$folder_image_name; // array de imagenes $images = array(); $nb_cola = 3; $nb_imageCel = 4; // Nombre d'images par cellule //variable utilisées pour recréer un array organisé comme tu le souhaites $arrN = []; $arrM = []; $rowa = 0; $cola = 0; $J = 0; // abrimos directorio y mostramos imagenes if ($handle = opendir($images_folder_path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { // obtener extension del archivo $ext = strtolower(substr(strrchr($file, "."), 1)); // almacenamos en el array if(in_array($ext, $extensions)) { $images[] = $url_to_folder.$file; } } } closedir($handle); } if (empty($_POST['pais'])) { if(!empty($images)) { // si tenemos algo que mostrar... //on boucle sur chaque fichier : foreach($images as $M) { if($cola>0 && $cola % ($nb_cola-1) == 0 && $J>=$nb_imageCel) { $cola=0; $J=0; $rowa++; } if($J>0 && $J % $nb_imageCel == 0) { $cola++; $J=0; } $arrM[$rowa][$cola][] = $M; $J++; } echo "<table width='60%' align='center'>"; foreach($arrM as $Rowa ) { if($rowa == 1) {echo "<tr>"; break; $rowa++;} foreach($Rowa as $Cola) { echo "<td width='30%' style='vertical-align: top;'>"; foreach($Cola as $src ) { { $rand_key = array_rand($images, 1); $src = $images[$rand_key]; $tabUrl = parse_url($src); $fichero =basename ($tabUrl["path"]); echo " <section> <div> <a href='../../image/galeria/".$fichero."' data-lightbox='example-set'><img class='catimage' src='".$src."' align='absmiddle' /></a> </div> </section>"; } } echo "</td>"; } echo "</tr>"; } } else { // nada que mostrar echo 'No se encontraron imagenes en <strong>'.$images_folder_path.'</strong>'; } <BR> <BR> <BR>'; } ?> <script src="../../lightbox/dist/js/lightbox-plus-jquery.min.js"></script>
J'ai tentè un if($row == 1) break; mais sans succès.
Comment dois-je faire?
Merci pour votre aide.