[PHP/MySQL] Erreur aléatoire...?

Résolu/Fermé
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 - 25 avril 2005 à 20:05
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 26 avril 2005 à 15:19
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 :

<?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:

27 réponses

roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
25 avril 2005 à 23:02
je viens de rajouter
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.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
25 avril 2005 à 23:10
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...
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
25 avril 2005 à 23:03
Bon ben c'est la requete peut être, la base ?

cherchons un peu...
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
25 avril 2005 à 23:05
Ta variable $titre, elle est mise à jours dans le fichier inclut (celui de connexion) j'imagine.
Tu peux nous le faire voir stp.
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2 > kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
25 avril 2005 à 23:12
$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>";
			?>
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
25 avril 2005 à 23:08
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)
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
25 avril 2005 à 23:20
je viens d'effectuer un nouvel essai, j'ai remplacé la boule while par :
$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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
26 avril 2005 à 08:51
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..
0
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
26 avril 2005 à 10:43
J'ai trouvé la solution !!!!

Dans ma base de données, tous les titres contenant le signe "+" appelé par $lien_titre ne fonctionnaient pas. J'ai enlevé tous les "+" et les ai remplacé par des "-" et tout fonctionne.

Je vous remercie tous. Roukmouth...
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
26 avril 2005 à 15:19
Ben c'est du beai ca tiens ! Tout ce temps perdu pour rien, dorénavant tu saurra qu'il ne faut jamais nommé en commencant par des signe de ponctuation ou autre !

Ravi que ce soit bon.
++
0