2017-06-11 5 views
0

Ich versuche Bilderergebnisse aus einer MySQL-Datenbank mit PHP mit einem Bootstrap-Modal zu liefern.Serving php Bild Suchergebnisse in Bootstrap modal

Die Bilder werden serviert, aber das Modal funktioniert nur auf dem ersten Bild.

Sie können eine Live-Seite von hier http://www.lostedinburgh.com/home2.php sehen (Typ leith ein paar Ergebnisse zu erhalten)

Ich verstehe, dass ich dynamisiert IMG01 mit mehr als einem Bildergebnisse zu beschäftigen, aber ich bin nicht sicher, wie zu tun Dies.

Jede Hilfe sehr geschätzt.

Hier ist mein Code:

while($row=mysqli_fetch_array($result)){ 
$location=$row['location']; 
$year=$row['year']; 
$router=$row['router']; 
$id=$row['id']; 
$tester=$row['tester']; 

echo '<div id="myModal" class="modal">'; 
echo '<span class="close">&times;</span>'; 
echo '<img class="modal-content" id="img01">'; 

echo '<div id="caption"></div>'; 
echo "</div>"; 

echo '<img id="myImg" src="'.$router.'" alt="Trolltunga, Norway" 
width="300" height="200">'; 
} 

Hier ist meine CSS ist:

#myImg { 
border-radius: 5px; 
cursor: pointer; 
transition: 0.3s; 
} 

#myImg:hover {opacity: 0.7;} 

/* The Modal (background) */ 
.modal { 
display: none; /* Hidden by default */ 
position: fixed; /* Stay in place */ 
z-index: 1; /* Sit on top */ 
padding-top: 100px; /* Location of the box */ 
left: 0; 
top: 0; 
width: 100%; /* Full width */ 
height: 100%; /* Full height */ 
overflow: auto; /* Enable scroll if needed */ 
background-color: rgb(0,0,0); /* Fallback color */ 
background-color: rgba(0,0,0,0.9); /* Black w/ opacity */ 
} 

/* Modal Content (image) */ 
.modal-content { 
margin: auto; 
display: block; 
width: 80%; 
max-width: 700px; 
} 

/* Caption of Modal Image */ 
#caption { 
margin: auto; 
display: block; 
width: 80%; 
max-width: 700px; 
text-align: center; 
color: #ccc; 
padding: 10px 0; 
height: 150px; 
} 

/* Add Animation */ 
.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)} 
} 

/* The Close Button */ 
.close { 
position: absolute; 
top: 15px; 
right: 35px; 
color: #f1f1f1; 
font-size: 40px; 
font-weight: bold; 
transition: 0.3s; 
} 

.close:hover, 
.close:focus { 
color: #bbb; 
text-decoration: none; 
cursor: pointer; 
} 

/* 100% Image Width on Smaller Screens */ 
@media only screen and (max-width: 700px){ 
.modal-content { 
    width: 100%; 
} 
} 

Hier ist meine Javasript

<script> 
var modal = document.getElementById('myModal'); 
var img = document.getElementById('myImg'); 
var modalImg = document.getElementById("img01"); 
var captionText = document.getElementById("caption"); 
img.onclick = function(){ 
modal.style.display = "block"; 
modalImg.src = this.src; 
captionText.innerHTML = this.alt; 
} 

// Get the <span> element that closes the modal 
var span = document.getElementsByClassName("close")[0]; 

// When the user clicks on <span> (x), close the modal 
span.onclick = function() { 
modal.style.display = "none"; 
} 

</script> 

Haben statt IDs hinzugefügt Klassen aber das Problem besteht nach wie vor .

Hier ist mein html:

while($row=mysqli_fetch_array($result)){ 
$location=$row['location']; 
$year=$row['year']; 
$router=$row['router']; 
$id=$row['id']; 
$tester=$row['tester']; 

echo '<div class="myModal" class="modal">'; 
echo '<span class="close">&times;</span>'; 
echo '<img class="modal-content" class="img01">'; 

echo '<div class="caption"></div>'; 
echo "</div>"; 

echo '<img class="myImg" src="'.$router.'" alt="Trolltunga, Norway" 
width="300" height="200">'; 
} 

Hier ist meine CSS:

.myImg { 
border-radius: 5px; 
cursor: pointer; 
transition: 0.3s; 
} 

.myImg:hover {opacity: 0.7;} 

/* The Modal (background) */ 
.modal { 
display: none; /* Hidden by default */ 
position: fixed; /* Stay in place */ 
z-index: 1; /* Sit on top */ 
padding-top: 100px; /* Location of the box */ 
left: 0; 
top: 0; 
width: 100%; /* Full width */ 
height: 100%; /* Full height */ 
overflow: auto; /* Enable scroll if needed */ 
background-color: rgb(0,0,0); /* Fallback color */ 
background-color: rgba(0,0,0,0.9); /* Black w/ opacity */ 
} 

/* Modal Content (image) */ 
.modal-content { 
margin: auto; 
display: block; 
width: 80%; 
max-width: 700px; 
} 

/* Caption of Modal Image */ 
.caption { 
margin: auto; 
display: block; 
width: 80%; 
max-width: 700px; 
text-align: center; 
color: #ccc; 
padding: 10px 0; 
height: 150px; 
} 

/* Add Animation */ 
.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)} 
} 

/* The Close Button */ 
.close { 
position: absolute; 
top: 15px; 
right: 35px; 
color: #f1f1f1; 
font-size: 40px; 
font-weight: bold; 
transition: 0.3s; 
} 

.close:hover, 
.close:focus { 
color: #bbb; 
text-decoration: none; 
cursor: pointer; 
} 

/* 100% Image Width on Smaller Screens */ 
@media only screen and (max-width: 700px){ 
.modal-content { 
width: 100%; 
} 
} 

Hier ist mein Javascript:

<script> 
var modal = document.getElementsByClassName('myModal'); 
var img = document.getElementsByClassName('myImg'); 
var modalImg = document.getElementsByClassName("img01"); 
var captionText = document.getElementsByClassName("caption"); 
img.onclick = function(){ 
modal.style.display = "block"; 
modalImg.src = this.src; 
captionText.innerHTML = this.alt; 
} 

// Get the <span> element that closes the modal 
var span = document.getElementsByClassName("close")[0]; 

// When the user clicks on <span> (x), close the modal 
span.onclick = function() { 
modal.style.display = "none"; 
} 

</script> 

Antwort

0

Verwenden Sie Klassen statt IDs für Ihre Elemente. Ids sind nur für einzelne Elemente gedacht und deshalb funktioniert nur das allererste Element.

+0

Danke. Soll das Javascript auch geändert werden, um auch außerhalb des Unterrichts zu arbeiten? – stephen251

+0

@ stephen251 Ja, hat es auch – Aknosis