Suis-je seul au monde avec MAMP et Mysql ?

manolo06

Membre confirmé
22 Mars 2008
25
0
Vallauris (06)
Bonsoir à tous,
Je vous contact dans un dernier souffle d'espoir. :nailbiting::mouais:
J'ai passé des heures avec un soucis sur MAMP/Mysql à chercher au fin fond du web et là : rien ...
Suis-je le seul au monde à avoir ce problème :
Pour faire cours : Tout est au vert sur MAMP.
Dans mon phpMyAdmin, j'ai créé différentes Bases en fonction de mes différents sites.
Dernièrement, je créé un Base "SunGlass" qui comprend 4 tables.

Je créé un fichier de configuration, "config.php" que je place dans un dossier "includes" :
Bloc de code:
<?
// CONNECTION WEB
$host = "localhost:8889";
$user = "root";
$password = "root";
$base = "SunGlass";

mysql_connect ($hote, $user, $password) or die ("erreur de connexion à localhost")

/* CONNECTION A LA BDD */
mysql_select_db("$base") or die('Echec de la connexion à la base de données');

?>

Je créé, ensuite, un fichier index.php de base, juste pour voir si tout ce passe bien et dans lequel je crée une requête pour aller compter combien il y a d'enregistrements dans la table "Formes" et d'écrire ce nombre (Normalement c'est 4 le bon résultat, :siffle:) :
Bloc de code:
<?
include 'includes/config.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>...</title>
</head>

<body>
<?
$sqlformes = mysql_query("SELECT * FROM Formes ORDER BY id_Formes");
$NbreFormes=mysql_num_rows($sqlformes);

echo "Nombre : $NbreFormes";
?>
</body>
</html>
Et bien, croyez moi ou non, la page index.php est totalement vierge, même pas un message d'erreur de connection rien, même pas le texte HTML "Nombre :" ...
Alors j'essaye de bidouiller, je me dis que ça pointe pas vers la base ... mais rien n'y fait ...
Je vais même jusqu'à mettre en commentaire la ligne :
Bloc de code:
mysql_select_db("$base") or die('Echec de la connexion à la base de données');
de mon fichier "config.php"
Et bien là, le texte HTML "Nombre :" s'affiche mais pas la valeur de la variable.:mouais:

Je suis totalement perdu :rose:

Quelqu'un pourrait il me dire où le bas blesse ? :affraid:
Super Gracias.
Bonne soirée.
 
Déjà tu déclare une variable $host et tu utilise $hote dans mysql_connect. Mais bon ça devrait executer le die().

Ensuite pourquoi dans mysql_connect tu utilise la variables directement et dans mysql_select_db tu met la variable entre guillemets double ? Retire ces guillements (pas gênants à priori mais ils ne servent à rien).

Sinon je ne vois pas trop ce que ça pourrait être... :-/ Tu es sûr des noms de ta base, ta table et ton champs ?


Et juste au hasard, essaye d'ouvrir ton php avec <?php et pas <?...
 
Déjà tu déclare une variable $host et tu utilise $hote dans mysql_connect. Mais bon ça devrait executer le die().

Ensuite pourquoi dans mysql_connect tu utilise la variables directement et dans mysql_select_db tu met la variable entre guillemets double ? Retire ces guillements (pas gênants à priori mais ils ne servent à rien).

Sinon je ne vois pas trop ce que ça pourrait être... :-/ Tu es sûr des noms de ta base, ta table et ton champs ?


Et juste au hasard, essaye d'ouvrir ton php avec <?php et pas <?...

Merci p4bl0,
Je viens de faire les changements ... ?
Y'a du mieux, car les codes HTML s'affichent mais tout ce qui est requête : Rien ... :siffle:

Pour être vraiment sûr de mon histoire, j'ai fait un test à l'ancienne : Transfert des bases sur un vrai serveur.
Transfert des fichiers sur un vrai serveur et là, magie de l'informatique, tout fonctionne ... :rose:

De quoi se tirer une balle dans le slip ... :mad:
Depuis que je suis passé sur Mac, MAMP ne me fait que des misères.
Genre passage de variables entre 2 fichiers, connexion ...

2 solutions, soit je suis Noir, soit je suis une buze ou 3ème possibilité : les 2.
A mon époque PC, avec EasyPHP, je n'avais aucun soucis ...:confused:

Je vais quand même pas retourner chez Bill Gates ... Mais j'avoue que pour le développement de site ça me démange fortement ... J'en ai un peu marre de me taper un Ftp pour tester la moindre virgule changée dans un script ...:hein:
Et pour te donner un exemple, actuellement, j'en suis à 8h00 sur ce ##?#@?!!! de problème de connexion.

Est-ce que tu aurais un script de connexion bien propre à me filer ?
Histoire de partir avec quelquechose de sain ...
j'avoue que je sais plus quoi faire ...:confused:
 
P4bl0 à tiré le premier... ;)

Moi ce qui me gène c'est ça
Bloc de code:
echo "Nombre : $NbreFormes";

Pas sur que tu affiches grand chose avec ça...
et la fonction count est d'une grande utilité en débuggage

remplace par
Bloc de code:
echo 'Nombre : ' . $NbreFormes ;
;)
 
Effectivement c'est pas coule de devoir tester sur un ftp :(.

T'as essayer d'executer ta requête SQL dans PHPMyAdmin puisque celui ci fonctionne ?

Bloc de code:
<?php
if ($con = mysql_connect('localhost', 'root', 'root')) {
    mysql_select_db('LunettesDeSoleils');
    //do your stuff here
    mysql_close($con);
} else {
    echo '<p class="error">Désolé, une erreur est survenue lors de la connexion à la base de données.</p>';
}
?>
 
@fredmac75 :

Ouaiye j'ai pas pris la peinde de tout relever, il y a aussi le fait que dans die() il utilise une fois des guillemets simple et une autre fois des doubles. Rien de grave mais bon.

Pour le count() de MySQL, je l'ai pas relevé par ce que le ORDER BY n'aurait aucun sens dans ce cas là, donc j'ai supposé qu'en fait ce n'est qu'un bout de son script (et que le résultats de la requête est utilisé si jamais mysql_num_rows renvoit une valeur > 0). Mais je suis peut-être complètement à côté de la plaque :D.


Sinon à priori on a le droit de mettre des variables directement dans une chaine faite avec des double quote (pourquoi je l'écrit en engliche maintenant..?), je ne sais pas ce qui est plus long : laisser php se demerder avec une chaine double quote ou lui faire faire une concatenation...
À priori ça devrait être la concatenation le plus rapide vu qu'il doit en faire une dans le deux cas je dirais, mais c'est pas sûr que ça ne soit pas fiat de manière différente pour des raisons d'optimisation... Enfin ça m'étonnerai pas trop quoi :).
 
Tu as raisons pour partie, mais dans le cas d'un débuggage, je préfère mais ça n'engage que moi, limiter les sources potentielles d'erreurs ou de conflits avec une écriture cannonique.

De plus, comme il lance une requête SQL autant l'utiliser à fond.

Mais c'est peut-être mois qui suit à coté de la plaque. A 13h30 je suis pas bien réveillé :D
 
Oula, je sors fumer une clope ... et vlan ...
Les gars s'emballent ...
ça se voit que c'est de début d'après midi ... le développeur sort de sa torpeur ... :D

je vais tester tout ça et me servir de ces critiques constructives ... Je reviens avec mes réponses ...

@FredMac75 :
la fonction count est d'une grande utilité en débuggage
Tu pourrais m'expliquer l'utilisation de count dans le débugage ...
moi j'utilise : $NbreFormes=mysql_num_rows($sqlformes);
C'est différent j'imagine ...

Merci les gars ...
 
Alors voilà ou j'en suis :

Fichier config.php :
Bloc de code:
<?php
if ($con = mysql_connect('localhost', 'root', 'root')) {
    mysql_select_db('SunGlass', $con);
    //do your stuff here
    mysql_close($con);
    echo '<p class="error">La connexion à la base de données est OK.</p>';
} else {
    echo '<p class="error">Désolé, une erreur est survenue lors de la connexion à la base de données.</p>';
}
?>
Fichier de test, test.php :
Bloc de code:
<?
include 'includes/config.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Je teinte mes vitres ...</title>
<link href="includes/sunglass.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?
$sqlformes = mysql_query("SELECT * FROM sg_Formes ORDER BY Nom_Forme ASC");
$NbreFormes=mysql_num_rows($sqlformes);
echo 'Nombre : ' . $NbreFormes .' - ' ;
?>
</body>
</html>
(A vouais, j'ai passé le nom des tables avec sg_NomdeTable pour voir et surtout éviter les conflits entre tables histoire d'être sûr sûr sûr ... :siffle:)
Et ben à l'affichage j'ai seulement :

Nombre : -

Grr ... je suis une buze ...
 
Alors voilà ou j'en suis :
(...)
Fichier config.php :
Bloc de code:
    (...)
    mysql_close($con);
    ?>
Fichier de test, test.php :
Bloc de code:
<?
include 'includes/config.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
(...)
$sqlformes = mysql_query("SELECT * FROM sg_Formes ORDER BY Nom_Forme ASC");
$NbreFormes=mysql_num_rows($sqlformes);
(...)


La connexion étant fermée dans le fichier inclus avant la requête mysql_query, c'est normal que mysql ne réponde rien
De toutes façons, les connexions seront fermées à la fin de l'exécution de la page, donc pour ce test, sauf si la base est très sollicitée, pas la peine de fermer la connexion courante.
 
Merci Padbrest,

Quand je disais que j'étais une buze ... :rose:
C'est clair que si je ferme la connexion avant toute requête, ça risque pas d'afficher quelque chose ... :siffle:

Là, on à l'air bon ...
Je pousse un peu plus loin et je vous tiens au courant ...
 
Merci Padbrest,

Quand je disais que j'étais une buze ... :rose:
C'est clair que si je ferme la connexion avant toute requête, ça risque pas d'afficher quelque chose ... :siffle:

Là, on à l'air bon ...
Je pousse un peu plus loin et je vous tiens au courant ...
Pour count :

Bloc de code:
$foo = mysql_query("SELECT count(*) as monCompteur FROM `maTable`;");
$bar = mysql_fetch_array($foo);
echo $bar['monCompteur'];


http://dev.mysql.com/doc/ :)
 
Merci P4bl0, je vais voir ça ...
(Au fait, Grand moment que la street session de Massilia ...)


Par contre, juste une petite question toute bête :rose: :
La méthode POST est bien acceptée sur MAMP ?

je sais pas, je crois que j'ai un petit soucis avec ça ...
j'ai l'impression que le variable postée n'est pas passée ...

Où alors il faut que je la déclare en GLOBAL ?
 
Oui c'était vraiment la folie la session Massilia !
Par contre Lux B nous a quitté il y a deux jours :'(.
...

Retour au sujet :
tu ne devrais pas voir de problème avec la méthode POST, c'est bizarre...
$_POST est une superglobal, c'est à dire une global qu'on a pas besoin de déclarer, et qui est accessible vraiment partout ! (comme $_GET, $_SESSION, $_COOKIE, $_SERVER, $_ENV...).
 
Oui c'était vraiment la folie la session Massilia !
Par contre Lux B nous a quitté il y a deux jours :'(.
...

Retour au sujet :
tu ne devrais pas voir de problème avec la méthode POST, c'est bizarre...
$_POST est une superglobal, c'est à dire une global qu'on a pas besoin de déclarer, et qui est accessible vraiment partout ! (comme $_GET, $_SESSION, $_COOKIE, $_SERVER, $_ENV...).

Non? RIP, perso c'est une grande perte ... Massilia c'est au moins une chanson par jour en bossant.
Massilia c'est un vraie part de notre culture sudiste.
Lux B en était un de magnifique porte-parole. :(
Avis aux Nordistes (tous ceux qui habitent au dessus d'Aix) qui ne connaissent pas encore Massilia Sound System, je vous encourage à passer un peu de temps à vous pencher sur leur oeuvre.
C'est une vraie invitation à la fiesta, la vraie, à l'amitié, à l'envie de connaitre vos voisins et surtout aux hymne aux collègues et à la famille, des vieux aux minots tous réunis à une énorme tablée dans la rue, avec chacun amenant un petit truc à boire et à manger, Massilia s'occupe de la Zik .:up:

Mais bon, Malheureusement on n'est pas sur un forum de Zik ....
Je vais regarder ce soucis de POST de plus prêt ...
Comme d'hab, je dois encore avoir placé une boulette quelque part... :rose:
 
En fait dans mon PHPINFO de MAMP, j'ai
register_globals : off off

C'est normal ça ??
ça devrait pas être à "on" normalement ?:mouais:

En tout cas ils sont à "on" sur mon serveur et le script identique passe sur le serveur mais pas sur MAMP ...

C'est bon, j'ai trouvé sur : http://forums.macg.co/developpement-web/installation-du-package-mamp-155373.html
Une habile remarque de notre cher P4bl0 qui nous explique comment faire pour "forcer" le registar_globals à ON ...

Merci à toi Ho! grand gourou du MAMP (entre autre) ...

Et comme par magie, mes variables passent de l'un à l'autre des scripts avec la fluidité de Catwoman ....
 
Ouais sauf que là j'avais conseillé ça parce que OSCom le demande, mais laisse register_globals à off, c'est mieux pour des raisons de sécurité.

En fait c'est pas dangereux en soi mais ça peut très facilement le devenir.

register_globals = On veux dire que $_GET['lala'] est accessible aussi via $lala, mais aussi que $_POST['lala'], et $_SESSION['lala'], donc ça peut foutre le boxon en plus d'être aps très securisé.


Si tu utilise bien $_POST tu ne devrais aps avoir besoin de register_globals (d'ailleurs c'est à Off chez moi).

http://fr.php.net/register_globals
http://fr.php.net/manual/en/language.variables.predefined.php



Et au sujet de ce que je disais sur les .htaccess dans le post que tu as linké, c'est faux. Faut juste mettre AllowOverride à All à la place de None dans la config du <Directory > :)
 
Ouais sauf que là j'avais conseillé ça parce que OSCom le demande, mais laisse register_globals à off, c'est mieux pour des raisons de sécurité.

En fait c'est pas dangereux en soi mais ça peut très facilement le devenir.

register_globals = On veux dire que $_GET['lala'] est accessible aussi via $lala, mais aussi que $_POST['lala'], et $_SESSION['lala'], donc ça peut foutre le boxon en plus d'être aps très securisé.


Si tu utilise bien $_POST tu ne devrais aps avoir besoin de register_globals (d'ailleurs c'est à Off chez moi).

http://fr.php.net/register_globals
http://fr.php.net/manual/en/language.variables.predefined.php



Et au sujet de ce que je disais sur les .htaccess dans le post que tu as linké, c'est faux. Faut juste mettre AllowOverride à All à la place de None dans la config du <Directory > :)

Mm ... :mouais:
Personnellement, sans changer rien à mes codes de pages, j'ai passé les REGISTAR à ON sur mon MAMP et comme par magie, les variables passent d'une page à l'autre sans problème.

Chose qui ne se faisait pas avec les REGISTAR à OFF ...
Est-ce que j'ai une coquille quelque part, je sais pas
Est-ce que je dois remettre les REGISTAR à ON ? je sais pas non plus.
Mais j'ai tellement galéré pour faire tourner mes scripts bidons sur MAMP que là, ben j'hésite vraiment à tout remettre à l'origine ...:rose:

Au fait merci à toi pour les scripts de partage de fichier et de validation de Formulaire :
je me suis empressé de les chopper ...
Je m'en sortais pas avec le fameux CAPTCHA ... une belle pinaise que tu m'enlève de la tongue.
Perso, je trouve ton principe de MisterMind pour le code largement plus cool.
Pour le partage de fichier Re-chapeau, après une petite mise en forme voici ce que ça donne (Mise en forme, très basique mais tellement pratique pour que mes clients puisse récupérer des gros fichiers) :
http://www.graphicconcept.net/transfert/
 
Merci d'utiliser mes bidules ! :)

Sinon pour tes scripts ce que tu décris n'est pas normal, comment récupèrement tu les variables "d'une page à l'autre" comme tu dis ?
Tu utilises bien un des tableaux $_GET ou $_POST ? Si oui il ne devrait pas avoir de problème avec register_globals = Off, sinon tu devrais changer ton code et les utiliser eux !