Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/10/2014, à 18:12

thenofx68

[RESOLU] Erreur PHP-MySQL d'affichage

Bonjour,

J'ai récemment installé un serveur LAMP sur ma partition Ubuntu 13.10.
Tout fonctionne pour le mieux, il gère sans problème HTML, CSS, PHP etc... mais j'ai un problème lorsque je tente de récupérer le contenu d'une base de données MySQL hébergée sur la même partiton que mon serveur.

Voici le script qui ne marche pas, si j'enlève toute la partie qui touche à MySQL, la page s'affiche correctement.

<html>
	<head>
		<title>Test MySQL</title>
	</head>
	<body>
		<center><h1> Test MySQL</h1></center>
		
		<center>
			<?php
                        echo 'patate'
			try {
			$bdd = new PDO('mysql:host=localhost;dbname=apache2','root','passwd');
			}
			catch(Exception $e) {
				die('ERREUR : '.$e-getMessage());
			}

			$reponse = $bdd->query('SELECT title, text, link FROM news ORDER BY ID DESC LIMIT 0, 10');
			
			while($donnees=$reponse->fetch()) {
				echo '<table border="2"> <tr> <td>'.$donnees['title'].'</td></tr> <tr> <td>'.$donnees['text'].'</td></tr></table>'
			}
			$reponse->closeCursor();
			?>
</center>
	</body>
</html>

Lien du screen de ma fenêtre Firefox : http://imageshack.com/a/img661/1391/RdVQjj.png

La même page, toute la partie MySQL enlevée :

<html>
	<head>
		<title>Test MySQL</title>
	</head>
	<body>
		<center><h1> Test MySQL</h1></center>
		
		<center>
			<?php
			echo 'patate'
			?>
</center>
	</body>
</html>

Lien du screen de ma fenètre firefox : http://imageshack.com/a/img661/9973/qj826v.png

Info 1 : La page tourne bien sous windows, avec wampserver.
Info 2 : le "echo 'patate' " est là seulement pour tester.

Si quelqu'un a une solution, pourrait-il la partager? merci !

Dernière modification par thenofx68 (Le 27/10/2014, à 14:50)

Hors ligne

#2 Le 27/10/2014, à 09:31

bruno

Re : [RESOLU] Erreur PHP-MySQL d'affichage

Bonjour,

Si tu utilises ta machine à des fins de développement il faut que tu actives l’affichage des erreurs dans le navigateur en  mettant la directive display_errors = on dans le fichier /etc/php5/apache2/php.ini. Ou alors tu gardes une console ouverte qui affiche en temps réel les logs d'erreurs d'Apache, mais c'est moins pratique.

Dans le code que tu donnes, il manque un point-virgule à la fin de l'instruction echo. Ceci va forcément générer une erreur fatale de PHP, ensuite s'il y a un souci avec la connexion à la base de données il faudra regarder l'erreur retournée.

Dernière modification par bruno (Le 27/10/2014, à 09:32)

Hors ligne

#3 Le 27/10/2014, à 12:53

thenofx68

Re : [RESOLU] Erreur PHP-MySQL d'affichage

bruno a écrit :

Dans le code que tu donnes, il manque un point-virgule à la fin de l'instruction echo. Ceci va forcément générer une erreur fatale de PHP

En effet, je l'avais oublié, merci!

bruno a écrit :

Si tu utilises ta machine à des fins de développement il faut que tu actives l’affichage des erreurs dans le navigateur en  mettant la directive display_errors = on dans le fichier /etc/php5/apache2/php.ini.

J'utilise en effet un serveur local pour ne pas avoir à réup la page à chaque modification, je vais changer ça merci !

Au moment où j'écris ce message, je suis sous windows donc je ne peux pas tester, mais je ferai ça dès que je retournerai sous linux.
En tout cas, merci beaucoup. smile

Hors ligne

#4 Le 27/10/2014, à 13:19

Morgiver

Re : [RESOLU] Erreur PHP-MySQL d'affichage

Il manque un ";" à la fin de ton echo (dans les deux exemples que tu donnes).

echo 'patate';

edit : Faut pas oublier de terminer tes instructions par un ";"
edit 2 : d'ailleurs si tu regardes ton deuxième echo dans ta boucle, il manque également un ";".

Le ";" peut être manquant à partir du moment où c'est la dernière instruction de ton bloc.
http://php.net/manual/fr/language.basic … ration.php

Doc PHP a écrit :

Comme en C ou en Perl, PHP requiert que les instructions soient terminées par un point-virgule à la fin de chaque instruction. La balise fermante d'un bloc de code PHP implique automatiquement un point-virgule ; vous n'avez donc pas besoin d'utiliser un point-virgule pour terminer la dernière ligne d'un bloc PHP. La balise fermante d'un bloc inclura immédiatement un caractère de nouvelle ligne si un est présent.

Dernière modification par Morgiver (Le 27/10/2014, à 13:38)

Hors ligne

#5 Le 27/10/2014, à 13:54

mazarini

Re : [RESOLU] Erreur PHP-MySQL d'affichage

La première chose à faire est de modifier le php.ini qui est de base prévu pour de la production et non pour du développement. Remplacer display_error = Off par displai_error = On (/etc/php5/apache2/php.ini). Ca permet de voir les messages d'erreur à l'écran facilement, autrement, les message sont dans le fichier log de php.


S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)

Hors ligne

#6 Le 27/10/2014, à 14:17

Rufus T. Firefly

Re : [RESOLU] Erreur PHP-MySQL d'affichage

Salut,

Il y a un truc qui m'étonne un peu : dbname=apache2
Tu as effectivement une base qui se nomme apache2 ? Moi j'essayerais d'éviter ce genre de noms sauf nécessité logique (et encore).

Edit : dans php.ini tu peux aussi inactiver les ShortOpenTags, qui peuvent poser problème avec certaines en-têtes xml...
Le seul inconvénient c'est que ça t'oblige à commencer avec <?php et non pas avec seulement <?

Dernière modification par Rufus T. Firefly (Le 27/10/2014, à 14:26)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#7 Le 27/10/2014, à 14:46

thenofx68

Re : [RESOLU] Erreur PHP-MySQL d'affichage

Déjà merci à tous pour vos réponses, problême résolu.

bruno a écrit :

Dans le code que tu donnes, il manque un point-virgule à la fin de l'instruction echo

Morgiver a écrit :

Il manque un ";" à la fin de ton echo (dans les deux exemples que tu donnes).

Oui en effet, je l'avais oublié.

Rufus T. Firefly a écrit :

Il y a un truc qui m'étonne un peu : dbname=apache2
Tu as effectivement une base qui se nomme apache2 ? Moi j'essayerais d'éviter ce genre de noms sauf nécessité logique (et encore).

Je tiens à préciser que ce nom est temporaire, que je l'ai mis car je ne savais pas quoi mettre, et qu'il ne sert qu'aux tests.


Pour moi, c'est résolu.

Hors ligne