fonction en PHP
14 messages
• Page 1 sur 1
-

sim100 - WRInaute passionné

- Messages: 1431
- Inscription: 2 Fév 2003
fonction en PHP
Bonjour
J'ai une erreur sur cette fonction
Ca me retourne l'erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/local/apache/htdocs/sites/t/the-world-in-photos.com/index.php on line 54
Je ne comprends pas pourquoi!!!
Pourtant ma connection à la bdd et le code marche si ce n'est pas une fonction.
Quelqu'un voit le problème?
Merci
J'ai une erreur sur cette fonction
- Code: Tout sélectionner
function aff_photos($cont)
{
$query="SELECT photo_small, title FROM wpa_photo WHERE valide=1 and photo_small LIKE '%/$cont/%' ORDER BY date_ins DESC, heure_ins DESC LIMIT 2";
$res_photo=@mysql_query($query,$db);
$nbr_photo=mysql_num_rows($res_photo);
for ($i=0; $i<$nbr_photo; $i++)
{
$list_photo=@mysql_fetch_row($res_photo);
$photos.="<div align='center'><a href='$list_aff_photo[4]' target='_blank'><img src='$list_photo[0]' border='0' alt=\"$list_photo[1]\"></a><br><br></div>";
}
return $photos;
}
$cont="southeast-asia";
echo aff_photos($cont);
Ca me retourne l'erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/local/apache/htdocs/sites/t/the-world-in-photos.com/index.php on line 54
Je ne comprends pas pourquoi!!!
Pourtant ma connection à la bdd et le code marche si ce n'est pas une fonction.
Quelqu'un voit le problème?
Merci
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
global $db (par exemple)
$db est une variable locale non initialisée dans ton exemple.
$db est une variable locale non initialisée dans ton exemple.
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
Re: si
sim100 a écrit:Si elle l'est
Le programme est plus long que ça, les paramètres d'accès à la base de donnée sont initialisé au début
Au début, certes, mais en dehors de la fonction. Donc, dans la fonction, c'est bien une variable locale non initialisée.
Et +1 pour la remarque de e-kiwi sur le @.
- shrom
- WRInaute impliqué

- Messages: 865
- Inscription: 5 Juil 2004
e-kiwi a écrit:d'où l'interet de ne pas masquer les messages d'erreurs de mysql_query ^^
Ou mieux, masquer les erreurs avec @ car en production c'est pas top et utiliser une fonction qui va logguer les erreurs.
- Code: Tout sélectionner
if( ! @mysql_query( $sql ) ) {
if( defined( 'LOG_ERROR' ) && LOG_ERROR ) {
log( MYSQL_ERROR, $sql."\n".mysql_error() );
}
}
avec la fonction log qui enregistre dans un fichier texte sur lequel ou fait un tail -f pour voir les logs en temps réel.
Avantage :
- on n'a pas à aller modifier toutes les fonctions susceptibles de générer une erreur avant le passage en prod, il suffit d'ajuster la constante adéquate.
- on dispose d'un système de suivi des erreurs même en période de production
-

e-kiwi - Modérateur

- Messages: 15541
- Inscription: 23 Déc 2003
en fait moi j'ai remplacé la fonction mysql_query() par une fonction requete() qui se connecte à la bdd, execute la requete et gere les erreurs, puis referme la connexion, comme ca c'est plus optimisé, et ca gere un journal d erreur sans avoir à le gerer à chaque requete dans le code
14 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Gérer l'entête HTTP en PHP
- Référencer un site multilingue
- Le PHP et le référencement
- Les sites les plus visibles pour le mot Google
- Google ajoute la Navigation par nom dans sa Toolbar
- Le baromètre de la visibilité des sites pour le terme "Google"
- MyMaps : des cartes personnalisées avec Google Maps
- Parts de marché des produits et services Google
Consultez la description détaillée des produits ou services de Google suivants : Google Related Links
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



