IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Connexion apache windows vers apache linux. [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Connexion apache windows vers apache linux.
    Bonjour

    J'ai un programme qui fonctionne sous un environnement entièrement Windows. Ce programme dispose d'une classe pour la partie base de donnée.

    La connexion se fait de cette manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class BD {
     
    	// ---- Partie Privé : Les propriétés --------
    	var $connexion, $connectBase, $db;
     
     
    	// ---- Constructeur de la class -------------
     
    	function BD() {
     
    		//paramètres de connexion
    		if(file_exists("config/config.inc.php"))
    			include("config/config.inc.php");
    		elseif(file_exists("../config/config.inc.php"))
    			include("../config/config.inc.php");	
    		$dsn = "DRIVER={SQL Server}; SERVER={$MSSQL_SERVER};UID={$MSSQL_LOGIN};PWD={$MSSQL_PASS}; DATABASE={$MSSQL_BASE}";
     
    		$db = new COM("ADODB.Connection");
    		$this->db = $db;
    		$db->Open($dsn);
    		$db->debug=true;
                    //Fin du constructeur
    	        }
    Jusque là pas de souci, ça fonctionne impeccablement.
    Par contre je dois désormais passer sous un Apache linux. La base de donnée reste du sql server

    Je ne sais pas trop comment adapter ce code .

    Pour la partie new COM (ligne 18) qui n'est pas pris en charge par linux, je sais que je peux l'écrire sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db=new PDO('dblib:host=$MSSQL_SERVER;Dbnname=$MSSQL_BASE', '$MSSQL_LOGIN', '$MSSQL_PASS');
    Seulement j'obtiens le message d'erreur PHP Fatal error: Call to undefined method PDO::Open()

    Comment dois-je adapter les lignes 16 et sans doute 20 ?

    Merci d'avance pour votre aide

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Du coup ceci semble correct (en tout cas je n'ai plus de message d'erreur php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function BD() {
     
    		//paramètres de connexion
    		if(file_exists("config/config.inc.php"))
    			include("config/config.inc.php");
    		elseif(file_exists("../config/config.inc.php"))
    			include("../config/config.inc.php");	
    		$db=new PDO('dblib:host=$MSSQL_SERVER;Dbnname=$MSSQL_BASE', '$MSSQL_LOGIN', '$MSSQL_PASS');
    		$this->db = $db;
    		$db->debug=true;
     
    	//Fin du constructeur
    	}
    Mais désormais je n'arrive pas exécuter ma requête.

    Dans ma class j'ai la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Méthode éxécution des requètes
    	function exereq($requete) {
     
     
    		$resultat = $this->db->query($requete) or die("Erreur lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
     
    		//test de la requete
    		if(!$resultat) {
    				$this->message("Problème lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
    		}
     
    		return $resultat;
    	}
    Dans le fichier index.php j'ai ceci qui appelle ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select_order 		= "SELECT ORDER_NUMBER FROM $MSSQL_DB_PREFIXE.EP_ORDER WHERE $MSSQL_DB_PREFIXE.EP_ORDER.ORDER_ID = ".$_GET['ORDER_ID'];
    	$res_select_order 	= $bd->exereq($select_order);
    et j'obtiens le message :

    Erreur lors de l'execution de la requête :
    SELECT ORDER_NUMBER FROM [50004].EP_ORDER WHERE [50004].EP_ORDER.ORDER_ID = 4
    Array

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je pense que c'est bon avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function exereq($requete) {
     
     
    		$resultat = $this->db->prepare($requete) or die("Erreur lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
    		$resultat->execute();
    		//test de la requete
    		if(!$resultat) {
    				$this->message("Problème lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
    		}
     
    		return $resultat;
    	}

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bon en fait je me perds....ça ne fonctionne pas non plus ....

    Je pense que ça vient de la déclaration de l'objet BD dans l'index. Le code complet est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    require_once("config/config.inc.php");
    require_once("includes/bd.class.php");
    require_once("includes/functions.php");
     
    global $bd;
    $bd = new BD();
     
    if(isset($_GET['ORDER_ID']) && $_GET['ORDER_ID'] != '') {
     
    	$select_order 		= "SELECT ORDER_NUMBER FROM EP_ORDER WHERE EP_ORDER.ORDER_ID = ".$_GET['ORDER_ID'];
    	$res_select_order 	= $bd->exereq($select_order);
    	$res_select_order 	= exereq($select_order);
    ...
    Et dans la classe bd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
     
    class BD {
     
    	// ---- Partie Privé : Les propriétés --------
    	var $connexion, $connectBase, $db;
     
     
    	// ---- Constructeur de la class -------------
     
    	function BD() {
     
    		//paramètres de connexion
    		if(file_exists("config/config.inc.php"))
    			include("config/config.inc.php");
    		elseif(file_exists("../config/config.inc.php"))
    			include("../config/config.inc.php");	
     
    		$db=new PDO("dblib:host=$MSSQL_SERVER;dbname=$MSSQL_BASE", '$MSSQL_LOGIN', '$MSSQL_PASS');
    		$this->db = $db;
    		$db->debug=true;
     
    	//Fin du constructeur
    	}
     
    	// ---- Partie Privé : Les méthodes -------------------------------------------------------------------------
     
    	//Métode pour afficher les méssages
    	function message($message) {
    		echo "<b><u>Erreur :</u></b> ".$message."<br>\n";
    	}
     
    	// ---- Partie Public ---------------------------------------------------------------------------------------
     
    	//Méthode éxécution des requètes
     
     
    	function exereq($requete) {
     
     
    		$resultat = $this->$db->query($requete) or die("Erreur lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
    		//test de la requete
    		if(!$resultat) {
    				$this->message("Problème lors de l'execution de la requ&ecirc;te : <br>".$requete."<br>".$this->db->errorInfo());
    		}
     
    		return $resultat;
    	}
     
    	//Accès a la ligne sous forme de tableau
    	function fetch($resultat) {
     
    		$fetch_array = array();
    		$i = 0;
    		while(!$resultat->EOF) {
    			$domainObject = $resultat->Fields;
     
    			while ($obj = $domainObject->Next($resultat)) {
    				$fetch_array[$i][$obj->Name] = $obj->Value;
    			}
     
    			$i++;
    			$resultat->MoveNext();
    		}
    		$resultat->Close();
     
    		return $fetch_array;
    	}
     
    	//nombre de lignes correspondant a la requete
    	function num($resultat) {
     
    		$cpt = 0;
    		while(!$resultat->EOF) {
    			$cpt++;
    			$resultat->MoveNext();
    		}
     
    		return $cpt;
    	}
     
    	//Déconnexion de la base
    	function quitter() {
    		 $this->db->Close();
    	}
     
    }	// ---- Fin de la class
     
    ?>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Mon problème n'étant finalement pas lié à PHP et SQL-Server je vais clore ce post et en ouvrir un dans la catégorie adéquate :

    https://www.developpez.net/forums/d1.../#post10736498

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Migration Serveur IIS vers Apache - Windows
    Par mak1311 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/07/2017, 14h38
  2. wchar_t "Windows" vers wchar_t "Linux"
    Par geek-59600 dans le forum Linux
    Réponses: 2
    Dernier message: 20/02/2012, 13h36
  3. migrer une base volumineuse depuis 9i windows vers 11g Linux
    Par mathlouthi dans le forum Import/Export
    Réponses: 0
    Dernier message: 29/12/2009, 10h27
  4. Communication serveur windows vers serveur linux
    Par samson_02 dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 28/05/2009, 15h13
  5. partage de connexion depuis windows vers linux
    Par hansaplast dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/10/2006, 20h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo