[PHP/MySQL] Erreur aléatoire...?
Résolu
roukmouth
Messages postés
26
Statut
Membre
-
kij_82 Messages postés 4260 Statut Contributeur -
kij_82 Messages postés 4260 Statut Contributeur -
Bonjour à tous,
j'ai un site utilisant une base de données qui me sert entre autre à contenir les chemins de fichiers à inclure (avec la fonction include( )) (je ne suis pas sûr de bien m'exprimer là???)
pour faire simple voici ma base :
table "liens" contenant :
lien_id
lien_titre
lien_page
lien_date
lien_membre
lien_categorie
lien_genre1
lien_genre2
lien_image
Voici la page qui pose problème :
Avec ce code j'obtiens aléatoirement l'erreur : Warning: main(): Failed opening '' for inclusion (include_path='/var/www/... on line 37
Pour certaines données tout se passe très bien et pour d'autres j'ai cette erreur. J'ai pensé que cela venait de ma base de données mais toutes les données contenues dans cette table sont toutes équivalentes.
Aidez-moi je vous en prie... Merci d'avance.
j'ai un site utilisant une base de données qui me sert entre autre à contenir les chemins de fichiers à inclure (avec la fonction include( )) (je ne suis pas sûr de bien m'exprimer là???)
pour faire simple voici ma base :
table "liens" contenant :
lien_id
lien_titre
lien_page
lien_date
lien_membre
lien_categorie
lien_genre1
lien_genre2
lien_image
Voici la page qui pose problème :
<?php
include("fichier de connection");
$connexion = mysql_connect($host, $user, $pass) or die ("Connexion au serveur impossible");
$db = mysql_select_db($base, $connexion) or die ("La base de données ne peut être sélectionnée");
$query = " SELECT * FROM liens
WHERE lien_titre = '$titre'"; //$titre=variable sélectionnant le lien dans la base données ajouté dans l'URL de la page
$result = mysql_query ($query) or die ("Exécution de la requête impossible");
$ligne = mysql_fetch_array ($result);
$image = $ligne['lien_image']; //j'ai voulu remplacer
$nom = $ligne['lien_titre']; //toutes variables par
$date = $ligne['lien_date']; //extract($ligne) mais cela
$membre = $ligne['lien_membre']; //n'a pas marché
$categorie = $ligne['lien_categorie'];
$genre1 = $ligne['lien_genre1'];
$genre2 = $ligne['lien_genre2'];
$download = $ligne['lien_page'];
echo " <br>
<img src='$image' border='0' align='left'>
<h3><b>$nom</b></h3>
Ajouté le $date par $membre<br>
<b>Catégorie : </b>$categorie<br />";
if ($genre2 == "")
{
echo"<b>Genre : </b>$genre1<br>";
}
else
{
echo"<b>Genre : </b>$genre1 / $genre2<br>";
}
include($download); //ligne 37
?>
Avec ce code j'obtiens aléatoirement l'erreur : Warning: main(): Failed opening '' for inclusion (include_path='/var/www/... on line 37
Pour certaines données tout se passe très bien et pour d'autres j'ai cette erreur. J'ai pensé que cela venait de ma base de données mais toutes les données contenues dans cette table sont toutes équivalentes.
Aidez-moi je vous en prie... Merci d'avance.
A voir également:
- [PHP/MySQL] Erreur aléatoire...?
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
27 réponses
je viens de rajouter
et le résultat est 0 pour les pages où cela ne fonctionnent pas et 1 pour celles qui fonctionnent.
Et en effet,
ne change rien.
echo mysql_num_rows($result)
et le résultat est 0 pour les pages où cela ne fonctionnent pas et 1 pour celles qui fonctionnent.
Et en effet,
$query = " SELECT * FROM liens WHERE lien_titre = '".$titre."'";
ne change rien.
kilian
Messages postés
8854
Statut
Modérateur
1 526
C'est à dire? Si tu executes ce mysql_num_rows avant la boucle, tu ne devrais avoir qu'un seul resultat, un chiffre de 0 à n... Mais pas un chiffre pour chaque ligne...
Bon ben c'est la requete peut être, la base ?
cherchons un peu...
cherchons un peu...
$titre n'est pas dans le fichier de connexion mais dans l'URL de la page envoyé par la page précedante. Voici son code :
<?php
include("fichier de connexion");
$connexion = mysql_connect($host, $user, $pass) or die ("Connexion au serveur impossible");
$db = mysql_select_db($base, $connexion) or die ("La base de données ne peut être sélectionnée");
$query = " SELECT * FROM liens
WHERE lien_categorie = '$cat'
ORDER BY lien_titre"; //$cat étant dans l'URL de la page
$query2 = " SELECT * FROM liens
ORDER BY lien_titre";
$result = mysql_query ($query) or die ("Exécution de la requête impossible");
$result2 = mysql_query ($query2) or die ("Exécution de la requête impossible");
$nblignes = mysql_num_rows ($result);
$nblignes2 = mysql_num_rows ($result2);
for ($i=0; $i<$nblignes; $i++)
{
$ligne = mysql_fetch_array ($result);
extract($ligne);
echo " <tr>
<td width='50%'>
<center>
<br>
<a href='fichelien_auto.php?titre=$lien_titre'> //fichelien_auto.php étant la page à problème citée plus haut
<img src='$lien_image' border='0' align='left'>
<b><h3>$lien_titre</h3></b></a>
Ajouté le $lien_date par $lien_membre
</center>
</td>";
$i++;
if ($i<$nblignes)
{
$ligne = mysql_fetch_array ($result);
extract($ligne);
echo " <td width='50%'>
<center>
<br>
<a href='fichelien_auto.php?titre=$lien_titre'>
<img src='$lien_image' border='0' align='left'>
<b><h3>$lien_titre</h3></b></a>
Ajouté le $lien_date par $lien_membre
</center>
</td>
</tr>";
}
else
{
$i--;
echo " <td width='50%'>
</td>
</tr>";
}
}
echo " </table>
<br>
<center><u>Résultat : <b>$i</b> liens sur un total de <b>$nblignes2</b></u></center>
<br>
<center><img src='retour.gif' border='0' onClick='history.go(-1)'></center>";
?>
tous les "lien_page" de la base de données sont de type : lien_*.php" où * est généralement le nom d'un lien (ex: lien_187codemeurtre.php) et tous ces fichiers sont situés au même endroit. Alors pourquoi est-ce si aléatoire??? (Mais c'est toujours les mêmes qui fonctionnent et les mêmes qui ne fonctionnent pas bien sûr)
je viens d'effectuer un nouvel essai, j'ai remplacé la boule while par :
Mais cela ne change strictement rien.
$query = " SELECT * FROM liens
WHERE lien_titre = '$titre'";
$result = mysql_query ($query) or die ("Exécution de la requête impossible");
$nblignes = mysql_num_rows ($result);
for ($i=0; $i<$nblignes; $i++)
{
$ligne = mysql_fetch_array ($result);
extract($ligne);
echo " <br>
<img src='$lien_image' border='0' align='left'>
<h3><b>$lien_titre</b></h3>
Ajouté le $lien_date par $lien_membre<br>
<b>Catégorie : </b>$lien_categorie<br />";
if ($lien_genre2 == "")
{
echo"<b>Genre : </b>$lien_genre1<br>";
}
else
{
echo"<b>Genre : </b>$lien_genre1 / $lien_genre2<br>";
}
include($lien_page);
}
Mais cela ne change strictement rien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je trouve ca quand même bizarre que tu ne mette pas ta variable de connexion quand tu fais un mysql_query. Tu ouvre une connexion ou ? Et tu la ferme ou ? Car si tu en ouvre une au début, et que tu ne la ferme qu'à la fin de toute tes pages, c'est possible qu'entre temps la connexion soit fermée si une erreur que tu n'a pas prévue (par un die("message"), arrive finalement (apres avoir affiché ta page, et de ce coup, quand tu clique sur un truc pour aller dans la page suivante, ta connexion n'étant pas effective, les requetes ne se font pas, et rien n'est affiché.
Peut etre..
Peut etre..