2010-06-25 5 views
2

Je continue d'apprendre des fonctions et leur fonctionnement. Je sais ce que je fais mal juste pas comment le réparer. J'écris une fonction pour extraire des données d'image d'une base de données et les retourner sur l'écran. Cela fonctionne mais s'il y a plus d'une image, elle ne renverra que la dernière image. Je sais que le problème est que $project_image ne renvoie que la dernière image à cause de la façon dont la boucle while fonctionne mais ma question est comment puis-je ne pas utiliser une boucle while ou le faire ajouter plus d'une image à la variable $project_image.Utilisation d'une boucle dans une fonction

Fonction Abridged

function get_project_image($id,$type="thumb",$src="false",$limit=1){ 
    if($type =="main"){ 
     $project_image_qry = mysql_query(" SELECT i_name FROM `project_images` WHERE i_project_id = '$id' AND i_type= '2' LIMIT $limit ") or die(mysql_error()); 
     $project_image=""; 
      while($project_image_row = mysql_fetch_array($project_image_qry)) { 
      $project_image_result = mysql_fetch_array ($project_image_qry);  

       if($src=="true"){ 
        $project_image .= '<img src="'.admin_settings('site_url').admin_settings('image_main_dir').'/'.$project_image_result['i_name'].'" alt="project_image"/>'; 
        } 
       else{ 
        $project_image .= $project_image_result['i_name']; 
        } 
      } 
     } 
    return $project_image; 
    } 

Répondre

3

Votre état while est bien, mais vous semblez aller chercher deux fois, dans $project_image_row et $project_image_result, alors vous allez être sauter tous les autres images. Il suffit de chercher le tableau une fois (dans la boucle while est bon), et utiliser $project_image_result au lieu de $project_image_row dans la boucle de se référer à ce tableau:

while($project_image_result = mysql_fetch_array($project_image_qry)) { 
    if($src=="true"){ 
     $project_image .= '<img src="'.admin_settings('site_url').admin_settings('image_main_dir').'/'.$project_image_result['i_name'].'" alt="project_image"/>'; 
    } 
    else{ 
     $project_image .= $project_image_result['i_name']; 
    } 
} 

, il semble aussi que par défaut vous l'avez dit à une seule demande image de la base de données. Vous avez un paramètre par défaut $limit=1, et vous utilisez un SQL LIMIT pour filtrer les résultats, donc à moins que vous passiez un quatrième argument à get_project_image le mysql_query va seulement retourner un résultat (vous n'avez pas inclus l'appel à get_project_image, donc je ' Je ne sais pas si vous avez traité cela ou non

+0

Merci beaucoup! Cela a bien fonctionné .Je crois que vous pouvez utiliser '$ project_image_result' au lieu de' $ project_image_row' dans votre exemple 'while' boucle ci-dessus, pas de biggie En ce qui concerne votre commentaire sur la limite par défaut, mon appel de fonction ressemble à 'echo get_project_image ($ project_row ['p_id']," main "," true ", 2),' Je le limite par défaut à l'autre deux types d'images ont seulement une image par type Merci encore – BandonRandon

+0

@Bandon bonne prise; c'est réparé maintenant –

Questions connexes