8791 sujets

Développement web côté serveur, CMS

Bonjour,
J'aurai besoin de votre avis ;
Voila je cherche à faire apparaitre un lecteur audio ou un message,
en fonction de si le media existe dans la base alors lecteur audio , sinon message .

Je pensais faire un if qui teste l'existence du media en base, mais ça ne marche pas.
Comme ceci:


  $sql2="SELECT * FROM medias WHERE nom_media LIKE '%".$nom_s."%' AND categorie='5';" ;
  $res2=mysql_query($sql2) ;
echo $sql2;
while($ligne2=mysql_fetch_array($res2)){
    if(isset ($nom_s)){//$nom_s est une valeur que je récupère dans une boucle précédente ,
elle récupère le nom de l'artiste. 
        echo'<object width="200" height="20" id="dewplayer" data="./player/dewplayer.swf?mp3='.$ligne2['url_media'].'" type="application/x-shockwave-flash">
                    <param value="transparent" name="wmode"><param value=".player/dewplayer.swf?mp3='.$ligne2['url_media'].'" name="movie"></object>';
                   }
    else {
        echo ('<b>Interview prochainement disponible</b>');
    }
}

Ce qui est bizarre c'est que quand le média existe le lecteur s'affiche bien, mais quand le média n'existe pas le message ne veut pas s'afficher. Smiley rolleyes

Quelqu'un aurait il une idée ?
Modifié par blobi (17 Aug 2011 - 14:41)
Je sais pas quelle est la requête que tu passes, donc je ne sais pas quelles variables tu récupères, mais tu as testé avec empty() ?

Exemple :


if(!empty($nom_s)){
        echo '<object width="200" height="20" id="dewplayer" data="./player/dewplayer.swf?mp3='.$ligne2['url_media'].'" type="application/x-shockwave-flash"> 
                    <param value="transparent" name="wmode"><param value=".player/dewplayer.swf?mp3='.$ligne2['url_media'].'" name="movie"></object>'; 
    }else { 
        echo ('<b>Interview prochainement disponible</b>'); 
    }
Juste une question, pourquoi est ce que tu ne testes pas ça avant de faire ta requête de base de donnée ??

Le souci que tu as es que la fonction isset va vérifier si la variable existe. Et c'est le cas (peut être par l'appel que tu réalises lors de ta requête). Seulement il se peut qu'elle n'ait pas été définie. La fonction à utiliser est plutôt empty comme le souligne ZeB_panam.

Le code que tu devrais utiliser devrait selon moi plutôt ressembler à ceci :


if(!empty($nom_s)){
	$sql2="SELECT * FROM medias WHERE nom_media LIKE '%".$nom_s."%' AND categorie='5';" ; 
	$res2=mysql_query($sql2) ; 
	echo $sql2; 
	while($ligne2=mysql_fetch_array($res2))
		echo'<object width="200" height="20" id="dewplayer" data="./player/dewplayer.swf?mp3='.$ligne2['url_media'].'" type="application/x-shockwave-flash"> 
                    <param value="transparent" name="wmode"><param value=".player/dewplayer.swf?mp3='.$ligne2['url_media'].'" name="movie"></object>';  
}else	echo ('<b>Interview prochainement disponible</b>'); 
Merci à vous ;

voici mon code complet :


include ('config.cfg.php');
$url=$_SERVER['REQUEST_URI'];
//echo $url;
    $query=mysql_query("SET NAMES 'utf8'");
$sql="SELECT * FROM stars WHERE id_stars = '".$_GET['id_stars']."' ;";
//echo $sql;
$res=mysql_query($sql);
while($ligne=mysql_fetch_array($res)){
    $nom_s=$ligne['nom_stars'];
    echo '<h3>Interviews de '.$ligne['nom_stars'].'</h3>';
    echo ('<a href="'.$ligne['image_stars'].'"rel="facebox">
            <img class="image_profil_stars" alt="'.$ligne['nom_stars'].'" title="'.$ligne['nom_stars'].'" src="'.$ligne['image_stars'].'"></a>
                <p>'.$ligne['bio_stars'].'</p>
                    <b>Interview de '.$ligne['nom_stars'].' : </b>
                        
                ');
  $sql2="SELECT * FROM medias WHERE nom_media LIKE '%".$nom_s."%' AND categorie='5';" ;
  $res2=mysql_query($sql2) ;
echo $sql2;
$verif = mysql_num_rows($res2); // On crée la variable "$verif" qui servira à vérifier si on a des résultats ou non
while($ligne2=mysql_fetch_array($res2)){
    if(isset ($nom_s)){
        echo'<object width="200" height="20" id="dewplayer" data="./player/dewplayer.swf?mp3='.$ligne2['url_media'].'" type="application/x-shockwave-flash">
                    <param value="transparent" name="wmode"><param value=".player/dewplayer.swf?mp3='.$ligne2['url_media'].'" name="movie"></object>';
                   }
    else {
        echo ('<b>Interview prochainement disponible</b>');
    }
}
}
 mysql_close($connexion);


Modifié par blobi (15 Aug 2011 - 19:16)