Bonjour, je cherche comment convertir ce code de PDO à MSQLI , parceque avec PDO le site ne marche que sur localhost , quand je mets mon adresse IP , ça ne marche pas , du coup je me suis dis que c'est du à ça ! j'ai raison ou pas ?
voici la déclaration de la connexion :
<?php
class BDD {
var $localhost = "", $user = "", $password = "";
function getBdd() {
if ("127.0.0.1" == $_SERVER['HTTP_HOST']){
//__variable locale lié à la classe
$localhost = 'mysql:host=127.0.0.1;dbname=mapbdd;charset=utf8';
$user = 'root';
$password = '';
} elseif ("domaine-distant" == $_SERVER['HTTP_HOST']){
//__variable OVH lié à la classe
$localhost = 'mysql:host=HOST;dbname=BDNAME;charset=utf8';
$user = 'USER';
$password = 'PASSWORD';
}
$bdd = new PDO($localhost, $user, $password);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $bdd;
}
}
$BDD = new BDD();
et voici la classe qui l'appelle pour afficher la Map:
<?php
class Map extends BDD{
//__Affiche tous les points actifs sur une Google Maps
function getAllMarkersActif($markerActif = "Oui", $iconeActif = "Oui" ) {
$bdd = parent::getBdd();
$sql = "SELECT * ";
$sql .= "FROM `markers` as MK, `markers_icone` as MKI ";
$sql .= "WHERE MK.marker_categorie = MKI.icone_id ";
$sql .= "AND `marker_actif` = '".$markerActif."' ";
$sql .= "AND `icone_actif` = '".$iconeActif."' ";
$datas = $bdd->query($sql);
while ($resultat = $datas->fetch(PDO::FETCH_OBJ)) {
$count[] = $resultat;
}
return $count; // Accès au résultat
}
//__Affiche les points actifs selon la catégorie
function getMarkersCategory($markerActif = "Oui", $iconeActif = "Oui", $category= "" ) {
$bdd = parent::getBdd();
$sql = "SELECT * ";
$sql .= "FROM `markers` as MK, `markers_icone` as MKI ";
$sql .= "WHERE MK.marker_categorie = MKI.icone_id ";
$sql .= "AND `icone_categorie` = '".$category."'";
$sql .= "AND `marker_actif` = 'Oui' ";
$sql .= "AND `icone_actif` = 'Oui'";
$datas = $bdd->query($sql);
while ($resultat = $datas->fetch(PDO::FETCH_OBJ)) {
$count[] = $resultat;
}
return $count; // Accès au résultat
}
//__Affiche les informations pour les catégories
function getAllCategory( ) {
$bdd = parent::getBdd( );
$sql = "SELECT * ";
$sql .= "FROM `markers_icone` as MKI ";
$sql .= "WHERE MKI.icone_actif = 'Oui' ";
$datas = $bdd->query($sql);
while ($resultat = $datas->fetch(PDO::FETCH_OBJ)) {
$count[] = $resultat;
}
return $count; // Accès au résultat
}
}
<?php
class BDD {
private $host = "localhost"
,$user = ""
,$password = ""
,$dbName = "";
/**
* Variables privées pour effectuer les requêtes
*/
private $bdd = NULL
,$prepare=NULL
,$res=NULL;
function __construct(){
if ("127.0.0.1" == $_SERVER['HTTP_HOST']){
//__variable locale lié à la classe
$this->host = '127.0.0.1';
$this->user = 'root';
$this->password = '';
$this->dbName = 'mapbdd';
} elseif ("domaine-distant" == $_SERVER['HTTP_HOST']){
//__variable OVH lié à la classe
$this->host = 'HOST';
$this->user = 'USER';
$this->password = 'PASSWORD';
$this->dbName = 'BDNAME';
}
//ouverture de la connexion à la bdd
$this->getBdd();
}
private function getBdd() {
$dsn = 'mysql:host='.$this->host.';dbname='.$this->dbName.';charset=utf8';
try{
$bdd = new PDO($dsn, $this->user, $this->password);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
$this->bdd = $bdd;
}
/**
* Execute une requête SQL
*/
private function dbQuery($sql,$datas=NULL){
try{
$this->prepare = $this->bdd->prepare($sql) ;
$this->res = $this->prepare->execute($datas) ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
echo " Les datas : " ;
print_r($datas);
}
}
/**
* Fait une requête SELECT et retourne tous les résultats dans un array
*/
public function db_All($sql,$datas=NULL){
$this->dbQuery($sql,$datas);
return $this->prepare->fetchAll();
}
/**
* Fait une requête SELECT et retourne une ligne de résultats dans un array
*/
public function db_One($sql,$datas=NULL){
$this->dbQuery($sql,$datas);
return $this->prepare->fetch();
}
/**
* Fait une requête INSERT et retourne l'id de l'élement inséré
*/
public function db_Insert($sql,$datas=NULL,$returnId=TRUE){
$this->dbQuery($sql,$datas);
return $returnId ? $this->bdd->lastInsertId() : $this->res;
}
/**
* Pour les requêtes DELETE / UPDATE ou autre
* @return : Le nombre de lignes impactées par la requête
*/
public function db_Exec($sql,$datas=NULL){
$this->dbQuery($sql,$datas);
return array('result'=>$this->res,'rowCount'=>$this->prepare->rowCount());
}
//----- FIN DE LA CLASS ------------//
}
<?php
class Map extends BDD{
function __construct(){
//appel le consutrateur de BDD
parent::__construct();
}
//__Affiche tous les points actifs sur une Google Maps
public function getAllMarkersActif($markerActif = "Oui", $iconeActif = "Oui" ) {
$sql = "SELECT *
FROM `markers` as MK, `markers_icone` as MKI
WHERE MK.marker_categorie = MKI.icone_id
AND `marker_actif` = :markerActif
AND `icone_actif` = :iconeActif ";
$datas = array(':markerActif'=>$markerActif,':iconeActif'=>$iconeActif);
return parent::db_All($sql,$datas);
}
//__Affiche les points actifs selon la catégorie
public function getMarkersCategory($markerActif = "Oui", $iconeActif = "Oui", $category= "" ) {
$sql = "SELECT *
FROM `markers` as MK, `markers_icone` as MKI
WHERE MK.marker_categorie = MKI.icone_id
AND `icone_categorie` = :category
AND `marker_actif` = :markerActif
AND `icone_actif` = :iconeActif";
$datas = array(':markerActif'=>$markerActif,':iconeActif'=>$iconeActif,':category'=>$category);
return parent::db_All($sql);
}
//__Affiche les informations pour les catégories
public function getAllCategory( ) {
$sql = "SELECT *
FROM `markers_icone` as MKI
WHERE MKI.icone_actif = 'Oui' ";
return parent::db_All($sql);
}
}
Bonjour, ca donne ça
Parse error: syntax error, unexpected '';charset=utf8'' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp\www\map-bdd\model\BDD.php on line 35
C'est le problème quand on écrit de tête sans tester .....
Comme tu peux le voir par toi même .... c'est dsn qu'il aurait fallut écrire et non dns.
Je te laisse corriger de ton côté.
Je vais aller corriger sur le code d'origine.
et en fait jordane , tout ça n'a pas résolu le problème que je dois toujours me connecter avec localhost , l'adresse IP/ le projet n'ouvre pas la page de la map
Tu pourrais expliqué un peu plus en détail ton souci ???
l'adresse IP/ le projet n'ouvre pas la page de la map
Ca veut dire quoi ça ?
Tu divises l'adresse IP par le projet ?....... ^^
Donc :
Tu remplis quels champs avec quelles données
Tu vas sur quelle page (url)
As tu un message d'erreur ? As tu au moins activé l'affichage des erreurs PHP ?
D'où vient ta variable $categories ? (quel code te sert à l'initialiser et à la remplir ??? )
Si tu en fais un
print_r($categories);
... qu'est ce que ça t'affiche ?
bref... des détails.... sinon nous ne pourrons rien pour toi !
normalement , ce qui fait marcher mon projet maintenant c'est l'url http://localhost/map-bdd ou 127.0.0.1/map-bdd, moi je veux faire en sorte que mon adresse IP 10.1.2... remplace le localhost pour que je puisse accéder a mon projet via d'autre ordinateurs sur le même réseau , voila ce que ça donne le code de la classe Map.php et la page vueindex qui appelle les catégories affichées a droite de l'écran comme ça on peut trié ce qui s'affiche sur la Map par catégorie , qui sont stockées sur la base :
Si je comprend bien... tu veux héberger ton site sur ton PC local... et y accéder depuis d'autres ordi de ton réseau....
Dans ce cas... il faut mettre le site en ligne. cela se passe au niveau de ton apache....
Quel rapport avec ton code ???
A la limite... tu vires le IF de ta connexion et tu entres les identifiants en "dur". A part ça... ce n'est que du paramétrage à faire et donc aucun rapport avec le forum PHP.
mais quand ca sera paramétré , avec quoi l'utilisateur de l'autre ordinateur va accéder a mon projet ? via mon adresse IP ou bien via localhost ? j'ai vu plusieurs tuto sur la configuration , mais de 1 je ne trouve pas les lignes qui doivent être modifié dans le fichier httpconf de Apache , et de 2 e n'ai pas osé faire des modifications sur le fichier Hosts de Windows , 'ai pas voulu foiré tout sur le pc du boulot
Ne confond pas les identifiants qui permettent à ton code PHP de se connecter à ta bdd ( Ca .. ça ne changera jamais... peut importe que l'utilisateur soit directement sur ton pc ou depuis un pc distant ) et les informations pour accéder à ton site depuis un pc distant.
Ta question concerne le paramétrage de ton apache et/ou de ton réseau.... mais en AUCUN CAS le code PHP ... seul et unique thème abordé par ce forum.
Pour ta demande... trouve un forum (qui n'existe pas sur codes-sources ) traitant de ces paramétrages....
Bonjour, Jordane , a part la configuration sur appache y'a un autre souci qui concerne a 100 % le code , parce que quand je fais ça :
class BDD {
var $localhost = "", $user = "", $password = "";
//__Effectue la connexion à la BDD
//__Instancie et renvoie l'objet PDO associé
function getBdd() {
if ("127.0.0.1" == $_SERVER['HTTP_HOST']){
//__variable locale lié à la classe
$localhost = 'mysql:host=127.0.0.1;dbname=mapbdd;charset=utf8';
$user = 'root';
$password = '';
} elseif ("domaine-distant" == $_SERVER['HTTP_HOST']){
//__variable OVH lié à la classe
$localhost = 'mysql:host=HOST;dbname=BDNAME;charset=utf8';
$user = 'USER';
$password = 'PASSWORD';
}
$bdd = new PDO($localhost, $user, $password);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $bdd;
}
}
$BDD = new BDD();
toute les pages marchent , alors que quand je mets mon adresse IP a la place de localhost , la première page qui affiche la Map , donne l'erreur indiqué dans la page VueErreur que j'ai déjà posté avant , mais les autres pages de login et administration ... marchent bien , donc le problème est dans la déclaration de la connexion dans cette page , stp aide moi
11 mai 2018 à 12:21
qui est dans une page appelé vueErreur