Transformer Code PDO à Mysqli [Résolu]

Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
- - Dernière réponse : andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
- 14 mai 2018 à 18:46
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
    }
}


Merci d'avance
Afficher la suite 

Votre réponse

3 réponses

andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
il y'a pas de message d'erreur , quand j'entre mon adresse IP / le projet ça prend cette ligne d'erreur
<?php include_once("template/vueHeader.php"); ?>

  <body>

    <?php include_once("template/vueNavbar.php"); ?>

    <div class="container">

      <div class="starter-template">
        <h1>Page d'erreur</h1>
        <p class="lead">Si cette page apparait, alors il y a une erreur.</p>
      </div>

    </div><!-- /.container -->

	<?php include_once("template/vueFooter.php"); ?>

qui est dans une page appelé vueErreur
Commenter la réponse de NHenry
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
0
Merci
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                                                                 
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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és
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
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

ça fait référence a ce fichier vueindex.php:
<?php include_once("template/vueHeader.php"); ?>

  <body>

    <?php include_once("template/vueNavbar.php"); ?>
    
    <div id="map-canvas"></div>
    
    <div id="form">
    	<form method="post" id="form" class="form-horizontal formMaps" role="form" action="index.php">
    		<h1>Recherche</h1>
    		<div class="form-group">
    			<div class="col-sm-12">
    				<?php foreach ($categories as $category) : ?>
						<div class="checkbox">
							<label>
								<input type="checkbox" value="<?php echo $category->icone_categorie ?>" name="marker[]" />
								<img src="<?php echo "common/images/marker-map/".$category->icone_icon.".png"; ?>" alt="marqueur <?php echo $category->icone_categorie ?>" />
								<?php echo $category->icone_categorie ?>
							</label>
						</div>
					<?php endforeach; ?>
    			</div>
    		</div>
    		<div class="form-group">
    			<div class="col-sm-offset-1 col-sm-11">
    				<button class="btn btn-default" type="submit" id="submit">Envoyer</button>
    			</div>
    		</div>
    	</form>
    </div>
    
    <script>
    	var marker = <?php echo $allMarkersJson ?>
    </script>

	<?php include_once("template/vueFooter.php"); ?>

	</body>
</html>
andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
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
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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 !
andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
je vais répondre par une réponse au sujet comme ça je fais une capture d'écran
Commenter la réponse de jordane45
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
0
Merci
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 :
andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
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és
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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és
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
d'accord merci beaucoup pour ton temps
andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
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
andyajram
Messages postés
128
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
12 décembre 2018
-
c'est bon j'ai résolu le problème , j'ai enlevé le IF et ça marche maintenant
Commenter la réponse de andyajram

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.