J'essaie d'obtenir le nom du fichier pdf / image pour l'afficher dans une table localement. Quand j'obtiens le nom du fichier, je veux qu'il soit dans une balise qui ensuite href à la div pop-out cachée à l'intérieur est . Le problème est que la valeur du src ne change pas et que tous les noms de fichiers sont identiques (il prend le prénom pour tous)
Voici mon code:
if(mysql_num_rows($search)>0){ ?>
<div class="container-table10">
<div class="wrap-table100">
<div class="table100">
<table>
<thead>
<tr class="table100-head">
<th class="column1">appeal date</th>
<th class="column2">course code</th>
<th class="column3">date of exam </th>
<th class="column4">reason</th>
<th class="column5">course title</th>
<th class="column6">AY</th>
<th class="column7">semester</th>
<th class="column8">student id</th>
<th class="column8">Lecturer
<br>Name</th>
<th class="column9">upload</th>
<th class="column9">Eligibility</th>
</tr>
</thead>
<tbody>
<?php
while($row=mysql_fetch_assoc($search)){
?>
<div aria-hidden="true" role="dialog" tabindex="-1" id="login-forms" class="modal leread-modal fade in">
<div class="modal-dialog">
<div class="modal-header">
<button aria-label="Close" data-dismiss="modal" class="close" type="button"><span aria-hidden="true">X</span></button>
</div>
<div class="modal-body" name="place">
<embed src="stuUploads/<?php echo $row['upload'];?>" class="up" type="application/pdf" width="600px" height="500px" />
<script>
$(document).ready(function() {
$('.up').attr('src', "stuUploads/<?php echo $row['upload'];?>");
});
</script>
</div>
<div class="modal-footer footer-box">
</div>
</div>
</div>
<tr>
<td class="column1">
<?php echo $row['appealm_date'];?>
</td>
<td class="column2">
<?php echo $row['course_code'];?>
</td>
<td class="column3">
<?php echo $row['date_of_exam'];?>
</td>
<td class="column4"><a class="login modal-form" data-target="#login-form" data-toggle="modal" href="#">show</a></td>
<td class="column5">
<?php echo $row['course_title'];?>
</td>
<td class="column6">
<?php echo $row['appealm_ay'];?>
</td>
<td class="column7">
<?php echo $row['appealm_sem'];?>
</td>
<td class="column8">
<?php echo $row['student_id'];?>
</td>
<td class="column8">
<?php echo $row['lecturer_name'];?>
</td>
<td class="column9">
<a class="login modal-form" id="aaa" data-toggle="modal" href="#login-forms">
<?php echo $row['upload'];?>
</a>
</td>
<td class="column8">
<input type="checkbox" name="eli" id="">
</td>
</tr>
<div aria-hidden="false" role="dialog" tabindex="-1" id="login-form" class="modal leread-modal fade in">
<div class="modal-dialog">
<div id="login-content" class="modal-content">
<div class="modal-header">
<button aria-label="Close" data-dismiss="modal" class="close" type="button"><span aria-hidden="true">Ã</span></button>
<h4 class="modal-title">Reason</h4>
</div>
<div class="modal-body">
<p class="p">
<?php echo $row['appealm_reason'];?>
</p>
</div>
<div class="modal-footer footer-box">
</div>
</div>
</div>
</div>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
<?php
}}
}}
?>
J'ai utilisé jQuery pour changer la valeur de l'attribut src dans la balise , mais le résultat est le nom de famille du fichier (dernière ligne de la base de données)
Voici le code
<script>
$(document).ready(function(){
$('#up').attr('src',"stuUploads/<?php echo $row['upload'];?>");
});
</script>
Voici la boucle entière
while($row=mysql_fetch_assoc($search)){
?>
<div aria-hidden="true" role="dialog" tabindex="-1" id="login-forms" class="modal leread-modal fade in">
<div class="modal-dialog">
<div class="modal-header">
<button aria-label="Close" data-dismiss="modal" class="close" type="button"><span aria-hidden="true">X</span>
</button>
</div>
<div class="modal-body" name="place">
<embed src="stuUploads/<?php echo $row['upload'];?>" id="up" type="application/pdf" width="600px" height="500px" />
</div>
<div class="modal-footer footer-box">
</div>
</div>
</div>
S'il y a une autre façon de faire apparaître le fichier dans la même page, veuillez le suggérer. J'apprécie toute aide.
4 Réponses :
utilisez class au lieu de id .Id est unique
$(document).ready(function(){
$('.up').attr('src',"stuUploads/<?php echo $row['upload'];?>");
});
Et changez l'élément js respectif id code > à class
<embed src="stuUploads/<?php echo $row['upload'];?>" class="up" type="application/pdf" width="600px" height="500px" />
modifiez-vous le src en tant qu'individu avec le php $ row respecté ou la même valeur pour tous les src incorporés?
$ row contient plus d'une valeur, je suis fatigué de changer la valeur src pour chaque ligne avec la $ row appropriée ['upload'].
Utilisez l'attribut class au lieu de id. Un identifiant est censé être unique (cela signifie qu'il n'est utilisé qu'une seule fois).
Vous ne pouvez accéder à $ row [] qu'à l'intérieur de votre boucle while, puisque vous parcourez $ search qui est un tableau multidimensionnel.
Est-il possible de voir toute la boucle while? @MaxedTyaertyaery
Ajout de class = "up" et essayé avant id = "up" mais toujours pas de chance
Ah ic, vous dites en gros: changez le src de de l'élément qui a la classe "up" en: $ row ['upload'].
Au-dessus de while (), vous pouvez créer une nouvelle variable, appelons-la $ x. Donnez-lui une valeur de 1. $ x = 1; jQuery:
Oui, mais il répète sans cesse la même valeur pour tous.
Oh j'ai oublié, vous devez incrémenter $ x à la fin de la boucle. ($ x ++)
$ x = 1; while (row = mysql_fetch_assoc ($ search)) {// Code .... $ x ++; }
dans votre boucle, utilisez XXX
Si vous utilisez bootstrap, ajoutez
$ ('# login-forms'). on ('shown.bs.modal', function (e) {
var $ invoker = $ (e.relatedTarget);
$ ("# up"). attr ("src", $ invoker.data ("url"));
});
Gardez à l'esprit que $ row ['upload'] n'est qu'une valeur, qui change à chaque fois dans la boucle while . Lorsque vous avez changé up en classe à partir d'un identifiant, vous avez fait en sorte que votre script redéfinisse essentiellement le src pour chaque up déjà sur la page à chaque fois qu'il s'exécute. Une meilleure solution serait de définir un meilleur id , car vous avez uniquement l'intention de modifier un seul embed . Serait-il possible d'utiliser $ row ['upload'] comme identifiant?
<script>
$(document).ready(function(){
$('#'+<?php echo $row['upload'];?>).attr('src',"stuUploads/<?php echo $row['upload'];?>");
});
</script>
Ensuite, vous pouvez changer votre script en:
<embed src="stuUploads/<?php echo $row['upload'];?>" id="<?php echo $row['upload'];?>" type="application/pdf" width="600px" height="500px" />
Pour référence, il n'est pas très clair que cela aurait un effet quelconque sur la page, car le php imprime $ row ['upload'] dans le src juste avant le script faisant la même chose.
Je l'ai essayé, je n'ai toujours pas fonctionné, merci pour votre aide.