Ancienne extension Mysql
Résolu
LaChaux78
Messages postés
583
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà j'ai pour notre site toute une partie administration qui a été conçu avec l'ancienne extension Mysql qui est aujourd'hui obsolète. Je souhaite refaire toute cette partie avec l'extension PDO_MySQL. Mais également faire des requètes préparée.
J'ai mon fichier init.php pour la connexion à ma BDD et dans ce même fichier j'aimerai faire une fonction qui permettrai à faire mes requète sql.
Impossible de me connecter avec cette fonction..
Merci pour votre aide.
Voilà j'ai pour notre site toute une partie administration qui a été conçu avec l'ancienne extension Mysql qui est aujourd'hui obsolète. Je souhaite refaire toute cette partie avec l'extension PDO_MySQL. Mais également faire des requètes préparée.
J'ai mon fichier init.php pour la connexion à ma BDD et dans ce même fichier j'aimerai faire une fonction qui permettrai à faire mes requète sql.
Impossible de me connecter avec cette fonction..
Merci pour votre aide.
<?php session_start(); function bdd() { $PARAM_hote ='*************'; $PARAM_nom_bdd ='************'; $PARAM_utilisateur ='************'; $PARAM_mot_passe ='************'; try { $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe); $bdd->exec("SET CHARACTER SET utf8"); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { echo 'Impossible de se connecter à la base de donnée</br>'; echo 'Erreur : ' . $e->getMessage() . '<br />'; echo 'N° : ' . $e->getCode(); } return $bdd; } function executeQuery($requete,$bdd) { //exécution de la requête try { $resultat = $bdd->prepare($requete); $resultat->execute(); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $resultat; }
A voir également:
- Ancienne extension Mysql
- Splitcam ancienne version - Télécharger - Messagerie
- Changer extension fichier - Guide
- Extension .bin - Guide
- Extension dat - Guide
- Extension 7z - Guide
8 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, "Impossible de me connecter avec cette fonction": message d’erreur (lequel), comportement inattendu (lequel)?
Bonjour,
Je n'y comprends rien en fait...
lorsque je met mes deux fonctions aucun problème mais quand je rajoute la requète pour récupérer la configuration du site et là impossible de me connecter à ma BDD
Je n'y comprends rien en fait...
lorsque je met mes deux fonctions aucun problème mais quand je rajoute la requète pour récupérer la configuration du site et là impossible de me connecter à ma BDD
<?php session_start(); function bdd() { $PARAM_hote ='*******'; $PARAM_nom_bdd ='**********'; $PARAM_utilisateur ='**********'; $PARAM_mot_passe ='************'; try { $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe); $bdd->exec("SET CHARACTER SET utf8"); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { echo 'Impossible de se connecter à la base de donnée</br>'; echo 'Erreur : ' . $e->getMessage() . '<br />'; echo 'N° : ' . $e->getCode(); } return $bdd; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Variables diverses $cfg = "cdc_configsite"; $kw = "keywords.txt"; // Fichier des mots clefs $lg = 140; // Largeur des sous-menus $jours = array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'); $chars = "iso-8859-1"; // ok $sprt = "css/menusprt.css"; // Styles print ok $sscr = "css/menusscr.css"; // Styles screen ok $amail = ""; $aname = ""; // Nom de l'admin (Publisher; Sera l'auteur si non indiqué) $lastsave = 0; // Date de la dernière sauvegarde (timestamp calculé plus loin) $nbsave = 0; // Nombre de sauvegardes enregistrées $lastsql = ''; // Nom du dernier fichier de sauvegarde // Fonction qui sert à faire les requêtes SQL function executeQuery($requete,$bdd) { //exécution de la requête try { $resultat = $bdd->prepare($requete); $resultat->execute(); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $resultat; } // Récupérer la configuration du site $requete = "SELECT * FROM $cfg"; $config = executeQuery($requete,$bdd); while ($donnees = $config->fetch()) { ${$donnees->clef} = $donnees->valeur; }
Bonjour,
Voici le début de ma page où j'ai fait un var_dump de $bdd qui me retourne NULL. A priori c'est ma page de la class qui pose problème. En fait ma class me retourne mes listes déroulantes. Je n'ai aucun message d'erreur je suis dépassé. Merci pour votre aide.
Voici ma class
Voici le début de ma page où j'ai fait un var_dump de $bdd qui me retourne NULL. A priori c'est ma page de la class qui pose problème. En fait ma class me retourne mes listes déroulantes. Je n'ai aucun message d'erreur je suis dépassé. Merci pour votre aide.
var_dump($bdd); $index = 2; require("libs/init.php"); require("libs/class.liste.php"); $debug = 0; // Création des listes déroulantes à utiliser $LDpers = new liste("libs/personnes","","oblig"); $LDpaie = new liste("libs/paiements","","oblig"); $LDclas = new liste("libs/classes","","oblig"); $LDpup = new liste("libs/pupitres","","");
Voici ma class
class liste { // Attributs, propriétés de la classe var $champs = ""; var $texte = ""; var $requete = ""; var $ctrlname = ""; var $tronque = 0; var $option = ""; var $style = ""; var $onchange = ""; var $slimit = ""; var $limit = ""; var $nbrecs = 0; // Constructeur de la classe liste. // Lecture de la définition de la liste, initialisation des propriétés function liste($objet, $ctrlname="", $style="", $limit=0) { if($objet != "null") { $slimit = $limit; // sauvegarde du paramètre / fichier .def require("$objet.def.php"); $this->texte = $texte; $this->ctrlname = $ctrlname; $this->style = $style; $this->onchange = $onchange; $this->champs = $this->getfieldnames($champs); if($limit) { $this->limit = $limit; } if($lignes) { $this->texte = ""; $this->option = " multiple size=\"$lignes\""; } if($where) { $insWHERE = "WHERE $where"; } else { $insWHERE = ""; } if($group) { $insGROUP = "GROUP BY $group"; } else { $insGROUP = ""; } if($ordre) { $insORDER = "ORDER BY $ordre"; } else { $insORDER = ""; } if($limit) { $insLIMIT = "LIMIT 0,$limit"; } else { $insLIMIT = ""; } if($slimit) { $insLIMIT = "LIMIT 0,$slimit"; } else { $insLIMIT = ""; } $this->requete = "SELECT $champs FROM $table $insWHERE $insGROUP $insORDER $insLIMIT;"; global $bdd; $resultat = executeQuery($this->requete,$bdd); $this->nbrecs = $resultat->rowCount(); unset($resultat); } } function write($indice="",$text=0) { global $bdd; $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } if($this->style) { $style = " class=\"$this->style\""; } if($this->onchange) { $onchange = " onchange=\"javascript:$this->onchange\""; } $resultat = executeQuery($this->requete,$bdd); $this->nbrecs = $resultat->rowCount(); if($text && $indice) { $textonly = 1; } else { $textonly = 0; } if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } while ($donnees = $resultat->fetch()) { if($indice/1) { $idnum = 0; } else { $idnum = 1; } if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; } if (count($champs) > 2) { $texte = $donnees->$champs[1]; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { if($textonly && $thisrec) { $buffer .= " ".$donnees->$champs[$n]; $n++; } else { $texte .= " ".$donnees->$champs[$n]; $n++; } } } else { if($textonly && $thisrec) { $buffer = $donnees->$champs[1]; } else { $texte = $donnees->$champs[1]; } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".$donnees->$champs[0]."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } } function getfieldnames($champs) { $fields = explode(",", $champs); for($n=0; $n<count($fields); $n++) { if(strstr(strtolower($fields[$n]), ".")) { $nfields = explode(".", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } if(strstr(strtolower($fields[$n]), " as ")) { $nfields = explode(" ", $fields[$n]); $fields[$n] = $nfields[count($nfields)-1]; } } $rfields = $fields[0]; for($n=1; $n<count($fields); $n++) { $rfields .= ",".$fields[$n]; } return $rfields; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Toute la journée dessus pour un résultat nul.
Là j'ai fait appel à la fonction comme ça en début de chaque page.
si je met un echo avant l'appel aux fonctions cela me retourne bien ok si je met le echo juste après page vierge
Là j'ai fait appel à la fonction comme ça en début de chaque page.
$bdd = bdd(); var_dump($bdd);
si je met un echo avant l'appel aux fonctions cela me retourne bien ok si je met le echo juste après page vierge
<?php $index = 2; require("libs/init.php"); require("libs/class.liste.php"); $debug = 0; echo "ok"; // Création des listes déroulantes à utiliser // variable = new liste("nom de la liste", "nom du controle", "style"); ici, controle = "" => on laisse le nom par défaut (ex: idpers) $LDpers = new liste("libs/personnes","","oblig"); // Liste des adhérents $LDpaie = new liste("libs/paiements","","oblig"); // Liste des paiements possibles $LDclas = new liste("libs/classes","","oblig"); // Liste des classes de musiciens $LDpup = new liste("libs/pupitres","",""); // Liste des pupitres par musiciens
Bonjour,
Je viens de m'apercevoir d'un détail qui me parait anormal je vais regarder ça et te redis.
Merci
Je viens de m'apercevoir d'un détail qui me parait anormal je vais regarder ça et te redis.
Merci
Bonjour,
Affiches tu les erreurs PHP ?
Penses à paramétrer ton fichier php.ini pour cela, ou à placer ces lignes de code au début de tes scripts :
Ensuite, plutôt que d'essayer de faire des "require" dans tes class... ne connais tu pas l'héritage ( les extends ) ?
Dans l'idéal.. tu crée une CLASS pour ta bdd (en prenant le code de ton fichier init.php)
Puis tu créés ta class "liste" où tu y fais un extend de bdd
Puis, dans chacune de tes autres class, tu fais un extend de list.
Pense aussi à mettre un constructeur dans tes class, et à préfixer les différentes fonctions par private/public en fonction de tes besoins.
En gros :
Et pour finir... utilise un autoloader pour tes class ou fais les TOUS les require au début de ta page principale.
https://www.php.net/manual/fr/language.oop5.autoload.php
NB: evite de nommer tes fonctions comme le nom de tes class
NB² : la déclaration des variables dans les class se fait avec UNIQUEMENT avec les mots clés :
Voir :
https://www.php.net/manual/fr/language.oop5.visibility.php
https://www.php.net/manual/fr/language.oop5.static.php
https://www.php.net/manual/fr/language.oop5.constants.php
... tes "
D'où tes soucis d'affichage je pense.....
Affiches tu les erreurs PHP ?
Penses à paramétrer ton fichier php.ini pour cela, ou à placer ces lignes de code au début de tes scripts :
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
Ensuite, plutôt que d'essayer de faire des "require" dans tes class... ne connais tu pas l'héritage ( les extends ) ?
Dans l'idéal.. tu crée une CLASS pour ta bdd (en prenant le code de ton fichier init.php)
Puis tu créés ta class "liste" où tu y fais un extend de bdd
Puis, dans chacune de tes autres class, tu fais un extend de list.
Pense aussi à mettre un constructeur dans tes class, et à préfixer les différentes fonctions par private/public en fonction de tes besoins.
En gros :
class bddClass { public $bdd = NULL; function __construct() { $this->bdd = $this->cnxbdd(); } public function cnxbdd() { //le code de connexion à la bdd } } class listeClass extends bddClass { function __construct() { parent::__construct(); } public function liste($ctrlname="", $style="", $limit=0) { $bdd = parent::bdd; //le reste de ton code } } class personnes extends listeClass { function __construct() { parent::__construct(); } }
Et pour finir... utilise un autoloader pour tes class ou fais les TOUS les require au début de ta page principale.
https://www.php.net/manual/fr/language.oop5.autoload.php
<?php function __autoload($class_name) { include $class_name . '.php'; } $obj = new MaClasse1(); $obj2 = new MaClasse2(); ?>
NB: evite de nommer tes fonctions comme le nom de tes class
NB² : la déclaration des variables dans les class se fait avec UNIQUEMENT avec les mots clés :
public $var1 = 1; protected $var2 = 2; private $var3 = 3; static $var4 = 4; const UNECONSTANTE = 1000;
Voir :
https://www.php.net/manual/fr/language.oop5.visibility.php
https://www.php.net/manual/fr/language.oop5.static.php
https://www.php.net/manual/fr/language.oop5.constants.php
... tes "
var $truc = ..... je doute que ça fonctionne.
D'où tes soucis d'affichage je pense.....
Bonjour,
Déjà pour mon erreur j'ai fait une grosse bourde que je n'ose même pas vous dire, plusieurs jours dessus pour une connerie mais bon.....
Merci je reprends toute ma partie administration depuis le début, je vais regarder de plus près tes conseils et essayer de les adapter pour la suite.
Je clore ce sujet merci.
Déjà pour mon erreur j'ai fait une grosse bourde que je n'ose même pas vous dire, plusieurs jours dessus pour une connerie mais bon.....
Merci je reprends toute ma partie administration depuis le début, je vais regarder de plus près tes conseils et essayer de les adapter pour la suite.
Je clore ce sujet merci.