andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 2020
-
11 mai 2018 à 11:58
ZZZ -
1 sept. 2019 à 23:14
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
}
}
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 Modifié le 11 mai 2018 à 15:17
Bonjour,
Essaye ça :
<?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);
}
}
Cordialement,
Jordane
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 14:49
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
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 mai 2018 à 14:59
Correction faite dans le code.
Il manquait un point.
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 15:04
Undefined variable: dns in C:\wamp\www\map-bdd\model\BDD.php on line 37
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 mai 2018 à 15:17
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.
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 15:26
la map s'affiche , mais les catégories non , ça donne ca :
Trying to get property of non-object in C:\wamp\www\map-bdd\view\vueIndex.php on line 18
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 22:12
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 :
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 mai 2018 à 22:33
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.
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 mai 2018 à 22:34
NB : Pour l'accès à la bdd... les identifiants seront toujours (tant que ton site sera hébergé sur ton pc et non sur un serveur web)
$this->host = '127.0.0.1'; // ou localhost c'est pareil...
$this->user = 'root';
$this->password = '';
$this->dbName = 'mapbdd';
et ça .... peut importe l'ip avec laquelle tu vas accéder à ton site.
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 22:41
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
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 mai 2018 à 23:01
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....
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 11 mai 2018 à 23:04
11 mai 2018 à 12:21
qui est dans une page appelé vueErreur