Utiliser une classe pour se connecter
maxireussite
Messages postés
372
Date d'inscription
Statut
Membre
Dernière intervention
-
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
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é.
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:
- Utiliser une classe pour se connecter
- Se connecter à gmail sur téléphone - Guide
- Utiliser chromecast - Guide
- Se connecter à ma boite hotmail - Guide
- Facebook se connecter à un autre compte - Guide
- Utiliser une tablette comme ecran pc - Guide
15 réponses
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 ?
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 ?
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..
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..
Tu peux afficher les erreurs php pour un script en particulier en y ajoutant ce code au début :
(ne fonctionne pas si tu as une erreur de syntaxe php dans le script)
Tes deux fichiers sont dans le même dossier ?
<?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 ?
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();
?>
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();
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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(); } ?>
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 !
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 !
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 ?
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 ?
:) , 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>"
"<?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>"
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...
Il faut donc remplacer ton mysql_fetch_array par un $connexion->fetch, mysql_error par $connexion->errorInfo(), etc...
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.
Merci bcp en tout cas de ton aide précieuse.
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.
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.
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 ?
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 ?
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>
"
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>
"