Probleme de connexion à une base mysql (fonctionnait avant)

Petit nouveau ! | 9 Messages

05 mars 2010, 11:10

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 mars 2010, 14:02

Une idée ?
Non, comment veux-tu qu'on devine sans message d'erreur ni code :roll:

Petit nouveau ! | 9 Messages

05 mars 2010, 14:26

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

Mammouth du PHP | 985 Messages

05 mars 2010, 20:37

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:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 mars 2010, 01:26

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.

ViPHP
ViPHP | 2287 Messages

06 mars 2010, 09:39

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 mars 2010, 12:16

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

Petit nouveau ! | 9 Messages

06 mars 2010, 15:57

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 !

ViPHP
ViPHP | 2287 Messages

06 mars 2010, 18:01

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 ;)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 9 Messages

07 mars 2010, 11:03

Je ne sais plus quoi faire....

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 mars 2010, 12:46

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.

ViPHP
ViPHP | 2287 Messages

07 mars 2010, 14:10

@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 :) )
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 9 Messages

07 mars 2010, 20:36

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é.

ViPHP
ViPHP | 5462 Messages

09 mars 2010, 11:38

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...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mars 2010, 12:23

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer