Utiliser une classe pour se connecter

Fermé
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - Modifié par maxireussite le 3/06/2014 à 04:38
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 5 juin 2014 à 13:04
Bonjour à tous,

Voilà un script de connexion qui ne marche pas, ne marche pas, ne marche pas...!

Page connexion.php à la racine :

"<?php

// Connection au serveur
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='****'; // le nom de votre base de données
$PARAM_utilisateur='****'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='****'; // mot de passe de l'utilisateur pour se connecter
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}

catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
?>"



Et ce bout de script sur une autre page :

"<?php
require_once('connexion.php');

$requete = $connexion->query("SELECT ville_id, ville FROM eg_villes") or die("Pb avec la requette ".mysql_error());
?>

Où est-ce que ça cloche ?

MErci de votre bonté.

A voir également:

15 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 10:37
Salut,

Il serait beaucoup plus facile de t'aider avec un message d'erreur php (regarde les logs ou change la configuration de php pour les afficher).

Tu peux avoir au moins deux problèmes possibles :
- connexion PDO : vérifier les infos de connexion et changer le mode d'erreur par défaut de PDO (https://www.php.net/manual/fr/pdo.error-handling.php
- problème d'inclusion du fichier connexion.php (require_once) : le chemin vers le fichier connexion est-il correct ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 3/06/2014 à 11:52
Merci.

Mais je suis hébergé, donc pas moyen de régler php.
Et je n'ai pas de message, vu que la connexion fonctionne.
En testant par exemple sans mot de passe, l'erreur s'affiche effectivement !

Mon problème vient certainement de require_once, je pense..
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 3/06/2014 à 14:17
Tu peux afficher les erreurs php pour un script en particulier en y ajoutant ce code au début :
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

// suite de ton code ...
require_once('connexion.php');

(ne fonctionne pas si tu as une erreur de syntaxe php dans le script)

Tes deux fichiers sont dans le même dossier ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 3/06/2014 à 14:33
Oui, les 2 sont dans le même dossier.

Avec ton code, voilà l'erreur que ça donne :

"Parse error: syntax error, unexpected $end in /home/******/html/lorganisation/inscriptions/connexion.php on line 17 "

Voilà le script complet de connexion.php :

<?php

// Connection au serveur
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_nom_bd='*****'; // le nom de votre base de données
$PARAM_utilisateur='***'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='****'; // mot de passe de l'utilisateur pour se connecter
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}

catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 14:58
Effectivement, tu n'as pas fermé l'accolade du bloc catch :
<?php

// Connection au serveur
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_nom_bd='*****'; // le nom de votre base de données
$PARAM_utilisateur='***'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='****'; // mot de passe de l'utilisateur pour se connecter
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}

catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
?>
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
3 juin 2014 à 15:37
Merci bcp,
mais ma requête reste désespérément vide.

Avec une connexion "normale" elle fonctionne et alimente une zone de liste qui fonctionne.

Mais avec la classe c choux gras !
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 16:15
Que veux tu dire par "connexion normale" ? Avec l'api Mysql à la place de PDO ?

La méthode query() ne fait qu'exécuter ta requête, il faut ensuite parcourir le résultat avec un fetch. Où est le code qui alimente la liste ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 3/06/2014 à 18:45
:) , j'entends par "normal" ceci :

"<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error());
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = mysql_query("SELECT ville_id, ville FROM eg_villes") or die("Pb avec la requette ".mysql_error());
?>"

Ce script de connexion (à remplacer par la classe) alimente cette zone de liste qui fonctionne à merveille :

"<select name="ville_id" style="width: 224px">

<option selected="selected">Lieu de résidence</option>

<?php
while ($valeur = mysql_fetch_array($requete)){
echo "<option value=\"". $valeur['ville_id'] ."\" cli_name=\"". $valeur['ville'] ."\">". $valeur['ville'] ."</option>n";
}
?>
</select>"
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
4 juin 2014 à 09:22
Ta classe utilise l'API PDO alors que le reste de ton code utilise l'ancienne API Mysql. Tu ne peux pas utiliser les deux API ensemble de cette façon, dans l'idéal il faut utiliser uniquement PDO et oublié l'API Mysql qui est osbolète.

Il faut donc remplacer ton mysql_fetch_array par un $connexion->fetch, mysql_error par $connexion->errorInfo(), etc...
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
4 juin 2014 à 12:26
Bon, ben même si j'ai pas tout saisi pour l'heure , je sais au moins où creuser.

Merci bcp en tout cas de ton aide précieuse.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
4 juin 2014 à 17:09
Bon, ben me revoilà !

j'ai tenté de remplacer mysql_fetch_array par un $connexion->fetch, en faisant ça :
"<?php
while ($valeur = $connexion->fetch($requete)){
echo "<option value=\"". $valeur['ville_id'] ."\" cli_name=\"". $valeur['ville'] ."\">". $valeur['ville'] ."</option>n";
}
?>"


mais ça ne donne rien ...!

Tu as bien compris que j'ai le niveau bidouille +, et qu'il faudrait me prendre par la main.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
4 juin 2014 à 17:18
Ton code semble correct, hormis le caractère n après la balise </option> qui doit être une faute de frappe je suppose.

Si ça ne donne rien, deux raisons possibles :
- ta requête ne retourne aucun résultat (ce qui est étonnant car tu fais un simple SELECT sans WHERE donc à moins que ta table soit vide tu devrais avoir un résultat)
- tu as une erreur php ou sql

Peux tu poster ton code complet stp ?
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
4 juin 2014 à 17:39
La table n'est pas vide, vu que la requête fonctionne différemment.

Voila le code php intégré à la page pour alimenter la zone de liste d'un formulaire, à moins que tu veuilles toute la page ?

"<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

require_once'connexion.php';

$requete = $connexion->query("SELECT ville_id, ville FROM eg_villes") or die("Pb avec la requette".$connexion->errorInfo());
?>
<tr>
<td class="auto-style1" colspan="2">Commune *:</td>
<td colspan="2" style="width: 460px"><select name="ville_id" style="width: 224px">

<option selected="selected">Lieu de résidence</option>

"<?php
while ($valeur = $connexion->fetch($requete))
{
echo "<option value=\"". $valeur['ville_id'] ."\" cli_name=\"". $valeur['ville'] ."\">". $valeur['ville'] ."</option>";
}
?>"
</select>
"
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
5 juin 2014 à 11:31
Essaye d'afficher le contenu de tes variables pour débuger :
- ajoute un var_dump($requete); après l'exécution de la requête
- ajoute un var_dump($valeur); dans la boucle while
et regarde le code source de ta page
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
5 juin 2014 à 13:04
Merci.
Je n'ai jamais utiliser ces expressions, mais je vais voir comment faire.
0