Page 1 sur 2

Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 05 mars 2010, 11:10
par bkophp
Bonjour,

j'ai un petit site php connecté en local sur une base mysql qui tourne sous easyphp 1.8.

J'ai récemment importé avec succès la base sous easyphp 5.3.1. Le site n'arrive plus à se connecter à la base mysql, sans message d'erreur, c'est juste que je n'ai plus les données qui s'affichent.

Une idée ?
merci

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 05 mars 2010, 14:02
par ouckileou
Une idée ?
Non, comment veux-tu qu'on devine sans message d'erreur ni code :roll:

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 05 mars 2010, 14:26
par bkophp
Oui je sais bien mais il n'y a pas de message d'erreur, juste des cases vides à la place d'avoir des données.

Le code PHP et sql est bon puisque ca fonctionne impecc sous easyphp 1.8.

Je me disais qu'il y avait peut être une particularité sur les nouvelles versions de php et mysql, un paramètre à modifier dans la conf ou autre.

Edit : quand je sélectionne ma base dans phpadmin et que je vais sur l'onglet privilèges, j'ai une erreur et sql dit : #1054 - Champ 'Create_view_priv' inconnu dans field list

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 05 mars 2010, 20:37
par Dr@ke
La version PHP et SQL sont les mêmes?
Le rapport d'erreur affiche les erreurs NOTICE?
http://www.php.net/manual/fr/function.e ... orting.php

Et sinon comme dit ouckileou, il manque le code php et sql :wink:

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 06 mars 2010, 01:26
par ouckileou
Le code PHP et sql est bon puisque ca fonctionne impecc sous easyphp 1.8.
"Le code est bon"... :roll:

Manifestement non puisqu'il ne fonctionne pas !
Même après demande, pourquoi ne pas nous le donner ? Ton code fonctionne peut-être avec une version de PHP et pas avec une autre, alors l'avoir sous les yeux ça aiderait quand même

C'est incroyable ça, à croire que des fois y'en a qui ont pas envie qu'on les aide... alors même si tu as confiance en ton code, tu nous colles la partie de la connexion !

Des fois ça nous permet de voir aussi que s'il n'y a pas d'erreur, c'est qu'elles ne sont pas affichées.

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 06 mars 2010, 09:39
par Calimero
Oui je sais bien mais il n'y a pas de message d'erreur, juste des cases vides à la place d'avoir des données.

Le code PHP et sql est bon puisque ca fonctionne impecc sous easyphp 1.8.
Il y a au moins une grosse contradiction entre les deux parties en gras ( => gestion d'erreur insuffisante dans le code, à supposer qu'elle existe... ). Un code qui fait semblant de marcher mais qui te donne un résultat qui ne sert à rien, ce n'est pas un "bon" code.

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 06 mars 2010, 12:16
par ouckileou
Et j'ai oublié : sql-bases-donnees/php-sql-etapes-suivre ... 19378.html

Des trucs de base pour débugguer, genre faire afficher les messages d'erreurs :)

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 06 mars 2010, 15:57
par bkophp
Bonjour,

alors pour commencer je suis une quiche en php mais quand je dis que mon code est bon, c'est parce qu'il fonctionne sans aucun probleme avec easyphp 1.8 et que plus rien ne fonctionne sous easyphp 5.3.1 donc je suppose qu'il est bon ou au moins fonctionnel.

Sinon j'ai pris un script tout simple de moteur de recherche sur phpscript et je l'ai testé sans succès, voici le code :
<html>
<head>
<title>Résultat de la recherche</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body text="#FFFFFF" bgcolor="#000000" link="#9999FF" vlink="#6699FF" alink="#FFFF00">

<font face="Verdana" size=2>

<form action="recherche.php3" method="post">
Saisissez un ou plusieurs mots :
<input type="text" name="mot" size="20">
<input type="submit" value="Rechercher">
</form>

<?
/******************************************************************
*	VARIABLES A MODIFIER
******************************************************************/

// NOMBRE DE RESULTATS PAR PAGE
$limit=2;

// NOM DE CE SCRIPT
$script_name="recherche.php3";

// SERVEUR SQL
$sql_serveur="localhost";

// LOGIN SQL
$sql_user="root";

// MOT DE PASSE SQL
$sql_passwd="";

// BASE DE DONNEE
$sql_bdd="bddsite";

// RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
$et_ou="or";


/******************************************************************
*	PROGRAMME PRINCIPAL
******************************************************************/

$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");

$mot=strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);

$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
	{
	$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
	$texte.=" ";
	if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
	$texte.=" <b>"$mots[$z]"</b>";
	$z++;
	}

if($debut==""){$debut=0;}
$debut=$page*$limit;

// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");

$requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);

// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
else if ($mot=="") 	{echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
	
// AFFICHAGE DES RESULTATS
else {

echo "<b>$nb_total</b> r&eacute;ponse";
if ($nb_total>1) {echo "s";}
echo "<br>$texte";

$i=0;
while($i<$num)
	{
	$url=mysql_result($requete,$i,"url");
	$description=mysql_result($requete,$i,"description");
	$titre=mysql_result($requete,$i,"titre");
	echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
	$i++;
	}

echo "<br><br>";

// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
	{
	$precedent=$page-1;
	print  "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a>&nbsp;\n";
	}


// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
	{
	while($i<($nb_total/$limit))
		{
		if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>)&nbsp;";}
		else {echo "<b>($j)</b>&nbsp;";}
		$i++;$j++;
		}
	}


// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
	{
	$suivant=$page+1;
	echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
	}
}


// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>

</font>
</body>
</html>
Ensuite je tourne sous easyphp 5.3.1 a savoir mysql 5.1.4.3 et php 5.3.1.

Quand je lance la page en web local voici ce que j'ai :
"$mots[0]""; $phrase="'%$mots[0]%'"; while($z<$nombre_mots) { $phrase.=" ".$et_ou." mots like '%$mots[$z]%'"; $texte.=" "; if($et_ou=="and"){$texte.="et";}else{$texte.="ou";} $texte.=" "$mots[$z]""; $z++; } if($debut==""){$debut=0;} $debut=$page*$limit; // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link); $num=mysql_num_rows($requete); // DEFINITION DU MESSAGE A AFFICHER if ($num==0) {echo "Désolé, aucune page de ce site ne contient $mot...";} else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";} else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";} // AFFICHAGE DES RESULTATS else { echo "$nb_total réponse"; if ($nb_total>1) {echo "s";} echo "
$texte"; $i=0; while($i<$num) { $url=mysql_result($requete,$i,"url"); $description=mysql_result($requete,$i,"description"); $titre=mysql_result($requete,$i,"titre"); echo "

$titre
$description
$url\n"; $i++; } echo "

"; // AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST // (LA PREMIERE PAGES EST 0) if ($page>0) { $precedent=$page-1; print "PRECEDENT \n"; } // AFFICHAGE DES NUMEROS DE PAGE $i=0;$j=1; if($nb_total>$limit) { while($i<($nb_total/$limit)) { if($i!=$page){echo "($j) ";} else {echo "($j) ";} $i++;$j++; } } // AFFICHAGE DU LIEN SUIVANT SI BESOIN EST if($debut+$limit<$nb_total) { $suivant=$page+1; echo "SUIVANT"; } } // DECONNEXION DE LA BASE DE DONNEE mysql_close($db_link); ?>

Merci d'avance pour vos réponses !

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 06 mars 2010, 18:01
par Calimero
Aucune gestion d'erreur en effet. Ton programme part du principe qu'une connexion à mysql réussit à tous les coups (et ignore royalement le cas où ça raterait).

Il devrait à la place afficher un message d'erreur et te dire pourquoi (et à quel niveau) ça déconne au lieu de faire exactement comme si tout allait bien. Si c'était le cas tu serais en mesure de régler facilement ton souci tout seul aujourd'hui ;)

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 07 mars 2010, 11:03
par bkophp
Je ne sais plus quoi faire....

Auriez vous un code simple pour tester ma connexion avec ma base de donnée ?

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 07 mars 2010, 12:46
par ouckileou
Tu vois, déjà même ta description de problème est fausse : ce n'est même pas la connexion à la base de données qui ne se fait pas, c'est carrément tout ton code PHP qui n'est pas exécuté !!

Pourquoi ? Sûrement parceque tu utilises les shorts tags <?, dont la prise en charge est désactivée dans les dernières versions de PHP. Remplace les par <?php, ça devrait déjà mieux fonctionner. Ensuite, tu iras voir le sujet que j'ai linké pour apprendre à débugguer, et afficher les messages d'erreur comme l'a signalé Calimero.

Mais vraiment ça m'énerve, tu dis n'y connaître rien en PHP, mais tu as quand même mal décrit ton problème, et refusé de nous donner ton code en arguant qu'il était bon, alors que c'est faux. La prochaine fois tu donnes ton code et un max d'infos dès le début, ça évitera d'avoir besoin de 8 messages pour débloquer un problème tout simple. Et si les posteurs te demandent des choses, c'est qu'ils en ont besoin pour traiter ton problème, donc tu leur donnes.

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 07 mars 2010, 14:10
par Calimero
@bkophp : ouckileou t'a donné un excellent lien pour les bases de la gestion d'erreur, c'est du prêt à cliquer :
Et j'ai oublié : sql-bases-donnees/php-sql-etapes-suivre ... 19378.html

Des trucs de base pour débugguer, genre faire afficher les messages d'erreurs :)
Et en effet, il y a les short tags ( <? ) dont le support est désactivé par défaut dans les versions récentes de php, comme ouckileou l'a remarqué, et qui jouent certainement un rôle dans ton souci actuel. Tu peux activer leur support dans ton php.ini, ou tu peux les remplacer (c'est mieux, comme ça tu n'auras pas le souci une deuxième fois à la prochaine mise à jour de php).

Bon courage tout de même pour les corrections ;) L'essentiel étant que tu y arrives (et si au passage tu apprends à mieux décrire tes problèmes techniques quand tu les publies sur un forum, ce sera bien pour tout le monde. Merci pour nous :) )

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 07 mars 2010, 20:36
par bkophp
Ca venait bien de <?php

Après la moitié de mon code n'est plus compatible avec la dernière version de php, c'est la galère.

Merci de m'avoir débloqué.

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 09 mars 2010, 11:38
par stealth35
Ca venait bien de <?php

Après la moitié de mon code n'est plus compatible avec la dernière version de php, c'est la galère.

Merci de m'avoir débloqué.
il devrait être très ancien...

Re: Probleme de connexion à une base mysql (fonctionnait avant)

Posté : 09 mars 2010, 12:23
par zeus
Pas forcément. Si les short open tags sont autorisés dans le php.ini, même avec PHP 5.3, il est possible de coder comme ça.
Et si quelqu'un pompe des exemples à droite à gauche, ou apprend sur un site un peu vieux, c'est facile de se retrouver avec ça.