2010-10-04 8 views
0

Si j'ai un code php, ci-dessous:PHP/MySQL tableau image changement de titre

while($galleryResult=mysql_fetch_array($galleryQuery)) {        
       echo '<li><img src="../../images/properties/gallery/'.$galleryResult['imagename'].'" width="120" height="120" class="image" /><br />             
         <input type="text" style="width:120px;" name="newGalleryTitle" value="'.$galleryResult['galleryTitle'].'"><br /> 
         <label for="updateTitle'.$galleryResult['id'].'"><input id="updateTitle'.$galleryResult['id'].'" type="checkbox" name="title_ids[]" value="'.$galleryResult['id'].'" /> Update title?</label><br /> 
         </li>  
       '. PHP_EOL;       
      } 

qui sort ce html, ci-dessous;

<li><img src="../../images/properties/gallery/image-name.jpg" width="120" height="120" class="image" /><br />       
<input type="text" style="width:120px;" name="newGalleryTitle" value="Test No2"><br /> 
<label for="updateTitle1"><input id="updateTitle1" type="checkbox" name="title_ids[]" value="1" /> Update title?</label><br /></li>  

<li><img src="../../images/properties/gallery/image-name-02-jpg.jpg" width="120" height="120" class="image" /><br />       
<input type="text" style="width:120px;" name="newGalleryTitle" value="Test No2"><br /> 
<label for="updateTitle2"><input id="updateTitle2" type="checkbox" name="title_ids[]" value="2" /> Update title?</label><br /></li> 

etc etc

Et voici le code que je utilise pour essayer de mettre à jour l'image 'titres', ci-dessous:

if (!empty($_POST['title_ids'])) { 
     foreach ($_POST['title_ids'] as $titleId) {      
      $error=$_POST['newGalleryTitle']; 
      $gtsql=mysql_query("UPDATE isgallery SET galleryTitle = '".$_POST['newGalleryTitle']."' WHERE id = ".mysql_real_escape_string($titleId));     
       mysql_query($gtsql);     
     } 
    }  

Maintenant, tout cela fonctionne bien si je sélectionnez la dernière image dans le tableau, mais si je choisis une autre ou plusieurs images, il prendra le titre de l'image de la dernière image et l'écrira dans le titre de l'image sélectionnée.

Ma question est: Comment puis-je «saisir» le bon titre de l'image? Je sais que c'est la sélection de l'élément/image correct dans le tableau, mais pas le titre de l'image.

Espérons que cela a du sens et toute aide serait grandement appréciée. Merci à l'avance, S

+0

vous devez supprimer cette mysql_query ($ gtsql); (double requête!) - et s'il vous plaît montrez-moi le print_r ($ _ POST ['title_ids']); – Dezigo

+0

Je pense qu'il a eu la deuxième requête accidentellement là .. – Slavic

Répondre

0

remplacer votre

while($galleryResult=mysql_fetch_array($galleryQuery)) {        
    echo '<li><img src="../../images/properties/gallery/'.$galleryResult['imagename'].'" width="120" height="120" class="image" /><br />             
     <input type="text" style="width:120px;" name="newGalleryTitle" 

avec ceci:

while($galleryResult=mysql_fetch_array($galleryQuery)) {        
    echo '<li><img src="../../images/properties/gallery/'.$galleryResult['imagename'].'" width="120" height="120" class="image" />'; 
    echo '<input type="text" style="width:120px;" name="newGalleryTitle['. $galleryResult['id'] .']" value="'.$galleryResult['galleryTitle'].'">'; 
    echo '<label for="updateTitle'.$galleryResult['id'].'"><input id="updateTitle'.$galleryResult['id'].'" type="checkbox" name="title_ids[]" value="'.$galleryResult['id'].'" /> Update title?</label>'; 
    echo '</li>'. PHP_EOL; 
} 

Et puis, lorsque vous traitez vos données accèdent uniquement les valeurs nécessaires comme celui-ci:

foreach ($_POST['title_ids'] as $titleId) {      
      $error=$_POST['newGalleryTitle'][$titleId]; 

Et oui - supprime la seconde mysql_query de ta boucle puisque tu l'as déjà une fois.

+0

Merci beaucoup! Cela fonctionne maintenant très bien! – ss888

Questions connexes