Probleme de connexion à une base mysql (fonctionnait avant)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme de connexion à une base mysql (fonctionnait avant)

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

par stealth35 » 09 mars 2010, 22:01

check quand même pour voir comment résout ton alias "localhost", c'est pas normal cette histoire #-o (Sinon ça peut pas avoir un rapport avec tes modifs ipv6 ?)
ouai c'etait bien ca (ipv6) ma version 5.3.0 etais ipv6 disabled, et ma 5.3.1 est enabled, je regarderais ce que j'avais sur l'ordi du boulot pour voir si j'ai mis l'ipv6 dans le host
:wink:

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

par Calimero » 09 mars 2010, 20:10

check quand même pour voir comment résout ton alias "localhost", c'est pas normal cette histoire #-o (Sinon ça peut pas avoir un rapport avec tes modifs ipv6 ?)

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

par stealth35 » 09 mars 2010, 19:13

sous XP, ca marchait bien <= 5.3.0, par contre pas de prob sur mac ou linux avec les nouvelles version de php

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

par Calimero » 09 mars 2010, 18:24

juste pour info moi depuis la version 5.3.1 je peux pas me connecter à mysql (mysql, mysqli, PDO) via "localhost" mais uniquement avec l'ip "127.0.0.1"
Sous quel OS tournes-tu ?

Il me semble que sous les dernières versions de windows l'alias "localhost" n'est pas défini dans /etc/hosts (il faut aller le mettre soi-même), ce serait pas ça ton souci par hasard ?

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

par stealth35 » 09 mars 2010, 17:51

juste pour info moi depuis la version 5.3.1 je peux pas me connecter à mysql (mysql, mysqli, PDO) via "localhost" mais uniquement avec l'ip "127.0.0.1"

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

par zeus » 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.

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

par stealth35 » 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...

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

par bkophp » 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é.

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

par Calimero » 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 :) )

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

par ouckileou » 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.

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

par bkophp » 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 ?

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

par Calimero » 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 ;)

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

par bkophp » 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 !

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

par ouckileou » 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 :)

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

par Calimero » 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.