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

Langage PHP Discussion :

passage Mysql à Sql Serveur [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut passage Mysql à Sql Serveur
    Bonjour
    Avant j'avais MySql et ce code marchait:

    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
    <?php
     
        unset($_GET);
    	if (isset($_POST['password'])) {
     
            if (!@mysql_connect('MonIp', 'monUser', 'MonPasse')) { error(1); }
     
    		echo '<?xml version="1.0"?>'."\n";
            echo "<login>\n";
     
    	    if (!mysql_select_db('MaBase')) { error(2); }
     
                $pass  = $_POST['password'];
     
    			unset($_POST);
     
    			$kid = login( $pass);
    			if($kid == -1) { 
    				error(3); 
    			} else {
    				printf('    <user id="%d"/>'."\n",$kid); // $kid contient le user_id donc le numéro de version
    				// printf -> Affiche une chaîne de caractères formatée. Ex ici : %d --> integer
    			}
     
            echo "</login>";
     
        }
     
        function error($ec) {
            printf('    <error value="%d"/>'."\n".'</login>',$ec);
            die();
    	}
     
        function login($pass) {
            $select = "
    		    SELECT user_id 
    		    FROM tblAuth 
    		    WHERE password = '%s' 
    			 " ;
     
    		$query = sprintf($select, $pass);
            $result = mysql_query($query);
            if(mysql_num_rows($result) != 1) { return -1; }    
            $row = mysql_fetch_row($result);
            return $row[0];
        }
     
    ?>
    Il est activé depuis Android qui lui envoie un mot de passe, si le mot de passe est bon il renvoie le premier champ du premier enregistrement de tblAuth

    Maintenant:
    j'ai wampserveur d'installé sur ma machine avec sql server, je dois donc me servir de l'instruction sqlsvr

    Voila ce que j'ai fait:

    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
    <?php
        unset($_GET);
     
        $serverName = "Monserveur\SQLEXPRESS"; //serverName\instanceName
    	$connectionInfo = array( "Database"=>"MaBase", "UID"=>"MonUser", "PWD"=>"MonPass");
    	$conn = sqlsrv_connect( $serverName, $connectionInfo);
     
    	if (isset($_POST['password'])) {
     
            if (!@$conn) { error(1); }
     
    		echo '<?xml version="1.0"?>'."\n";
            echo "<login>\n";
     
     
                $pass  = $_POST['password'];
     
    			unset($_POST);
     
    			$kid = login( $pass);
    			if($kid == -1) { 
    				error(3); 
    			} else {
    				printf('    <user id="%d"/>'."\n",$kid); // $kid contient le user_id donc le numéro de version
    				// printf -> Affiche une chaîne de caractères formatée. Ex ici : %d --> integer
    			}
     
            echo "</login>";
     
        }
     
        function error($ec) {
            printf('    <error value="%d"/>'."\n".'</login>',$ec);
            die();
    	}
     
        function login($pass) {
            $sql = "
    		    SELECT user_id 
    		    FROM tblAuth 
    		    WHERE password = ? 
    			 " ;
     
    $params = array('%s');
    //$params = array();
     
     
     
            $result =sqlsrv_query( $conn, $sql, $params);
     
     
    }
            //if(sqlsrv_num_rows($result) != 1) { return -1; }    
          //Ici je ne sais pas comment remplacer ces deux lignes mais de toute maniere le code n'arrive pas jusque la
             // $row = mysql_fetch_row($result);
                 //return $row[0];
     
        }
     
    ?>
    Il n'y a pas de soucis sur la connexion qui se fait entre php et sql server (j'ai testé)

    J'ai l'impression que le code php ne s'execute pas du tout il doit il y avoir une erreur de syntaxe quelque part.
    Cette syntaxe est elle bonne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['password'])) {
    Merci d'avance de votre aide.

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    j'ai envie de dire tout ça pour ça.

    oui la ligne de code est syntaxiquement valable et se rencontre habituellement quand on veut verifier qu'un client a envoyé une variable de nom password via la methode post.

    j'aime pas: unset($_GET); pour moi c'est le genre de variable qu'on ne devrait pas modifier. On la passe dans un filtre et on utilise la copie filtrée, voilà la bonne manière.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Merci de ta réponse

    Tu ne vois rien d'autre comme erreur de syntaxe qui pourrait faire que le code ne fonctionne pas?

    Je n'ai meme pas d'erreur puisque c'est android qui doit doit recevoir la reponse.

    Je pense a une erreur de syntaxe ou une instruction qui ne va pas car je n'ai meme pas la connexion qui s'ouvre sur sql server.
    Par contre si je met tout en vert et ne laisse que la conexion alors elle s'ouvre correctement sur le server sql

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    erreur de syntaxe
    euuuh erreur de syntaxe = message d'erreur du compilateur.

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    Je n'ai meme pas d'erreur puisque c'est android qui doit doit recevoir la reponse.
    qu'est ce qui t'empeche de visiter une page avec autre chose qu'un androïd? tu peux préciser ton besoin et ta plateforme?

    j'aime pas ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (!@$conn) { error(1); }
    d'abord @ ne sert à rien ici, ensuite c'est une pratique qui est déplorable et pour la forme & pour les performances. par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( $conn === FALSE ){
     error(1);
    }
    vu que tu testes une ressource, je jouerai pas avec le transtypage automatique.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    je vais mieux t'expliquer ce qu'il se passe.

    Ce code fonctionne avec un serveur apache et une base Mysql.

    Il sert a vérifier le mot de passe entré sur android et s'il est bon renvoie le numéro de version qui est dans la table tblAuth.


    J'ai besoin de passer la base sur SQL Server (car il est capable d'exectuer des requetes SQL compliqué)

    j'ai donc installé sur ma machine SQL Server express et wampserver
    puis j'ai mis les fichiers php dans wampserver.

    l'instruction mysql_connect n'est donc plus valide et j'ai du la remplacer par sqlsrv_connect

    la connexion a la base se fait bien car je la voie dans les logs du server sql

    par contre, il doit il y avoir autre chose qui ne va pas dans le php car actuellement en laissant le code comme cela je n'ai pas la connexion a la base qui devrait pourtant se faire au debut. C'est ce qui me fait penser que le code php plante sur une erreur de compilation.

    Mais comment faire pour connaitre l'erreur, vu que le fichier est sensé recevoir le mot de passe.
    Pour moi le fichier php plante donc ne renvoie rien, du coup je ne connais pas l'erreur.

    J'ai remplacé sur tes conseils le test mais c'est pareil.

    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
     
    <?php
        unset($_GET);
     
        $serverName = "Monserveur\SQLEXPRESS"; //serverName\instanceName
    	$connectionInfo = array( "Database"=>"MaBase", "UID"=>"MonUser", "PWD"=>"MonPass");
    	$conn = sqlsrv_connect( $serverName, $connectionInfo);
     
    if (isset($_POST['password']))	{
     
     
     if ( $conn === FALSE ){
     error(1);
    }
     
     
    		echo '<?xml version="1.0"?>'."\n";
            echo "<login>\n";
     
     
                $pass  = $_POST['password'];
     
    			unset($_POST);
     
    			$kid = login( $pass);
    			if($kid == -1) { 
    				error(3); 
    			} else {
    				printf('    <user id="%d"/>'."\n",$kid); // $kid contient le user_id donc le numéro de version
    				// printf -> Affiche une chaîne de caractères formatée. Ex ici : %d --> integer
    			}
     
            echo "</login>";
     
        }
     
        function error($ec) {
            printf('    <error value="%d"/>'."\n".'</login>',$ec);
            die();
    	}
     
        function login($pass) {
            $sql = "
    		    SELECT user_id 
    		    FROM tblAuth 
    		    WHERE password = ? 
    			 " ;
     
    $params = array('%s');
    //$params = array();
     
     
     
            $result =sqlsrv_query( $conn, $sql, $params);
     
     
    }
            //if(sqlsrv_num_rows($result) != 1) { return -1; }    
          //Ici je ne sais pas comment remplacer ces deux lignes mais de toute maniere le code n'arrive pas jusque la
             // $row = mysql_fetch_row($result);
                 //return $row[0];
     
        }
    ?>
    edit: la base du code vient d'ici:
    http://dsilvera.developpez.com/tutor...es-script-php/

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Dans les log d'apache tu n'a aucune erreurs ?

    Si tu utilise WAMP server il te suffit de faire un clique gauche sur l'icône wamp server => Apache => Apache error log.

    Il t'ouvrira le fichier de log d'apache tu descend tout en bas et tu regarde les dernières erreurs ça devrait t'aider un peu plus.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Merci de ton aide

    Je viens juste de finir une page qui envoie sur mon php pour voir l'erreur, et ton message arrive.
    Du coup je vois les erreurs sur le log apache.
    Hormis la premiere erreur ou il fallait enlever le dernier }

    Voici celle que j'ai maintenant sur le log apache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Tue Oct 23 19:27:03 2012] [error] [client 192.168.0.1] PHP Warning:  sqlsrv_query() expects parameter 1 to be resource, null given in C:\\wamp\\www\\Android\\connect.php on line 48
    voici ce que j'ai dans la page que j'ai faites (ok c'est un peu pareil )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ( ! ) Warning: sqlsrv_query() expects parameter 1 to be resource, null given in C:\wamp\www\Android\connect.php on line 48
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0012	147376	{main}( )	..\connect.php:0
    2	0.0244	150328	login( )	..\connect.php:18
    3	0.0245	151136	sqlsrv_query ( )	..\connect.php:48
    Au passage il a fallu que je remette @ devant $conn car sinon celui de la ligne 48 devennait une variable inconnue.

    Voici ou j'en suis
    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
    <?php
    	@$conn = sqlsrv_connect( $serverName, $connectionInfo);
         unset($_GET);
    	if (isset($_POST['password']))	{ if ( @$conn === TRUE ){ error(1);}
     
    		echo '<?xml version="1.0"?>'."\n";
            echo "<login>\n";
     
     
                $pass  = $_POST['password'];
     echo $pass;
    			unset($_POST);
     
    			$kid = login( $pass);
    			if($kid == -1) { 	error(3);}
     
    			 else {
    				printf('    <user id="%d"/>'."\n",$kid); // $kid contient le user_id donc le numéro de version
    				// printf -> Affiche une chaîne de caractères formatée. Ex ici : %d --> integer
    			}
     
            echo "</login>";
     
        }
     
        function error($ec) {
            printf('    <error value="%d"/>'."\n".'</login>',$ec);
            die();
    	}
     
        function login($pass) {
            $sql = "
    		    SELECT user_id 
    		    FROM tblAuth 
    		    WHERE password = ? 
    			 " ;
     
    			 $params = array('$pass');
    			//$params = array('%s');
    			//$params = array();
     
     
     
            $result =sqlsrv_query( @$conn, $sql, $params);
     
     
    }
    A quoi sert le

    Merci

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Bonjour

    Juste pour vous remercier de votre aide a tous j'ai réussi a faire tourner le code.

    Il fallait bien enlever le @, mais surtout remettre le code de connexion dans la fonction login.

    Les logs apache m'ont bien servi pour déppanner.

    par contre le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['password']))	{ if ( $conn === TRUE ){ error(1);}
    ne me renvoie pas d'erreur !!!
    alors que la connexion se fait bien et que password existe et n'est pas null

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['password']))	
    {
      if ( $conn === TRUE )
       { 
       error(1);
       }
    }

    ahhhhhh!


    $conn est une ressource dans le cas ou ça se passe bien, FALSE sinon. Typage faible en php. N'oublie pas! donc le test sur $conn est un bouléen vrai (===TRUE) ne peut jamais marcher. éventuellement on peut tester avec is_ressource(), c'est pour ça que je testais dans le cas ou ça va mal. Relis le manuel

    ensuite teste ce p'tit truc dans un script vide:

    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 
     
    echo __FILE__,':', __LINE__,' ', isset($var)?'var is set':'var is not set'; //isset est la seule fonction (avec empty() à ne jamais se plaindre si une variable n'est pas définie !!!!)
    $var = '';
    echo __FILE__,':', __LINE__,' ', isset($var)?'var is set':'var is not set';
    echo __FILE__,':', __LINE__,' ', empty($var)?'var is empty':'var is not empty';
    $var = 'sdklfjskldj';
    echo __FILE__,':', __LINE__,' ', isset($var)?'var is set':'var is not set';
    echo __FILE__,':', __LINE__,' ', empty($var)?'var is empty':'var is not empty';
    $var = 0;
    echo __FILE__,':', __LINE__,' ', isset($var)?'var is set':'var is not set';
    echo __FILE__,':', __LINE__,' ', empty($var)?'var is empty':'var is not empty';
    unset($var);
    echo __FILE__,':', __LINE__,' ', isset($var)?'var is set':'var is not set';
    echo __FILE__,':', __LINE__,' ', empty($var)?'var is empty':'var is not empty';

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    désolé je suis débutant je pensais tester si cela fonctionnait en mettant TRUE.

    Avec tes explications je viens de comprendre qu'il ne peux que prendre la valeur FALSE.

    De plus j'ai volontairement mis une erreur dans le login afin que la connexion se puisse pas se faire et j'ai bien le retour d'erreur.


    j'ai testé ton bout de code, d'aprés ce que j'ai compris isset sert a tester si une variable est null ou vide mais ne retournera pas d'erreur si c'est le cas.
    Et unset permet de forcer la variable à vide (donc non NULL).

    Tu me dis ca pour le
    qu'il faut que j'enleve, car je ne me sers pas de GET, c'est ca?

  12. #12
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    J'ai besoin de passer la base sur SQL Server (car il est capable d'exectuer des requetes SQL compliqué)
    On pourrait avoir un exemple de ce que tu as besoin de faire que mysql ne permet pas ?

    Sinon , pour la culture , tu aurais pu(du ) utiliser PDO qui t'aurais permis de n'avoir à changer que la ligne de connexion en fonction de la base et de ne pas tout réécrire.

    Méfiance également avec les drivers/fonctions sqlserver qui ne sont pas toujours dispo selon la version de php.

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    merci de ta participation grunk

    A vrai dire j'ai regardé quel était l'équivalent de Mysql_connect, ayant trouvé sqlsrv_connect, et étant débutant je n'ai pas cherché plus loin. Mais effectivement je n'ai pas regardé PDO qui apparement a l'avantage de tourner sur tous les php.

    On pourrait avoir un exemple de ce que tu as besoin de faire que mysql ne permet pas ?
    Je dois remettre en forme selon certaines conditions, les données provenant de plusieurs tables, puis les placer dans une autre table.

    Cette autre table sera interrogé par Android.
    Android doit pouvoir executer le code permettant la mise en forme avant d'aller lire la table (afin d'etre sur que les données lu sont a jour).

    Tu vas me dire que j'aurais pu écrire le code en php?
    La réponse est: oui surement mais l'année prochaine je serais probablement encore dessus.

    Pour te donner une idée, sous vb.net le code de la fonction fait plus de 600 lignes.

    SQL a l'avantage (je pense) de pouvoir écrire des requetes qui contienne des sous requetes, pouvant elle meme faire appelle a des fonctions.

    Résultat: j'ai une requête INSERT principale pleine de sous requetes qui font appel a des fonctions pour choisir les champs.
    Et mon code fait moins de 100 lignes.

    Dernière chose PHP est un enfer a déboguer.

    Voila ma raison, n'hesite pas a donner ton avis, si tu penses le contraire.

  14. #14
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Je dois remettre en forme selon certaines conditions, les données provenant de plusieurs tables, puis les placer dans une autre table.
    Dit comme ça, ça ressemble terriblement à une VIEW.

    Après faudrait voir le code SQL mais à mon avis rien n'empèche de le faire en Mysql plutôt que sql server. Mais si tu es plus à l'aise avec sql server autant continuer avec

    Dernière chose PHP est un enfer a déboguer.
    Ba moi j'ai un mode pas à pas , des espions de variables , bref tout ce que n'importe quel autre langage sait faire et le tout sans quitter mon ide

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Tu as quoi comme ide?
    Et tu te sers de quoi pour déboguer php?


    Pour le code, c'est un peu compliqué (mais je peux te le faire passer si tu veux).

    par exemple je fais:

    -extraction de toutes les factures non entierement réglé par client.
    -differencier ce qui sont au prelevement de ceux qui paye par cheque.
    Ceux au prelevement => récupérer la date de prelevement y enlever 5 jours ouvré envoyer la date dans la table.

    Dans la table qu'android va lire, les données sont sous cette forme:

    client NumFacture1 Numfacture2 NumFacture3 DateRelance


    Je suis donc obligé de faire un premier traitement pour extraire les factures (des tables clients, factures et relances) dont j'ai besoin et les mettre dans une table temporaire.
    Puis un deuxieme traitement qui va me remettre tout ca en forme finale.


    Mais si tu es plus à l'aise avec sql server autant continuer avec
    Il y a 10 jours je ne connaissais pas ce langage et mon choix à été fait suite a cette discution avec Pol63:
    http://www.developpez.net/forums/d12...ql-datareader/

  16. #16
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    Tu as quoi comme ide?
    Et tu te sers de quoi pour déboguer php?
    Netbeans + Xdebug

    Citation Envoyé par gilles_906 Voir le message
    -extraction de toutes les factures non entierement réglé par client.
    -differencier ce qui sont au prelevement de ceux qui paye par cheque.
    Ceux au prelevement => récupérer la date de prelevement y enlever 5 jours ouvré envoyer la date dans la table.

    Dans la table qu'android va lire, les données sont sous cette forme:

    client NumFacture1 Numfacture2 NumFacture3 DateRelance


    Je suis donc obligé de faire un premier traitement pour extraire les factures (des tables clients, factures et relances) dont j'ai besoin et les mettre dans une table temporaire.
    Puis un deuxieme traitement qui va me remettre tout ca en forme finale.
    Faudrait te tourner du coté du forum SQL pour être certains mais ce que tu fais doit pouvoir tenir dans une vue (view).

    une vue en SQL c'est une sorte de table temporaire qui sert généralement à cacher la complexité d'un modèle de données.

    Par exemple imagines les tables commandes , clients, adresses.
    On pourrait faire une vue avec un champs date, un champs nom et un champ adresses qui serait la résultante d'une jointure parmis les 3 tables.

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Netbeans + Xdebug
    Je n'ai pas trouvé le prix, il est gratuit?

    Si effectivement j'ai des outils correct de développement, cela peut me faire réviser ma position vis a vis de php.


    une vue en SQL c'est une sorte de table temporaire qui sert généralement à cacher la complexité d'un modèle de données.
    Quand tu dis en SQL,
    Si tu as un server web qui heberge des pages php (qui contienne le code)
    Une base Mysql qui contient les tables

    Tu veux dire qu'on peut écrire du code SQL (dans le fichier php) qui va créer une table temporaire sur la base MySQL?

    Je pensais que justement la view on ne pouvait l'avoir que sur SQLserveur.
    Meme si je n'ai pas fait comme ca, j'ai préféré passer par des procedures stocker qui ont besoin de faire des calculs.

  18. #18
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    Je n'ai pas trouvé le prix, il est gratuit?
    Oui tout est gratuit.



    Citation Envoyé par gilles_906 Voir le message
    Quand tu dis en SQL,
    Si tu as un server web qui heberge des pages php (qui contienne le code)
    Une base Mysql qui contient les tables

    Tu veux dire qu'on peut écrire du code SQL (dans le fichier php) qui va créer une table temporaire sur la base MySQL?

    Je pensais que justement la view on ne pouvait l'avoir que sur SQLserveur.
    Meme si je n'ai pas fait comme ca, j'ai préféré passer par des procedures stocker qui ont besoin de faire des calculs.
    Quand je dis SQL c'est la norme plus ou moins bien supporté/interprété par sql server ou mySQL.
    Une vue en général tu la créer directement dans ton SGBD via une requête , tu passes pas par un *sql_query(); pour le faire puisque tu la créer une fois pour toute. Mais c'est possible de le faire en PHP aussi.

    Un peu de doc sur le sujet :
    http://stackoverflow.com/questions/1278521/why-do-you-create-a-view-in-a-database
    http://msdn.microsoft.com/fr-fr/library/ms187956.aspx

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Points : 122
    Points
    122
    Par défaut
    Ok je ne savais pas qu'on pouvait créer des vues sur MySQL.

    Quelques petits inconvénients quand meme:

    Il n'est pas possible de créer un index sur une vue.
    La vue ne peut pas contenir de sous-requêtes dans la clause FROM du SELECT.
    Il n'est pas possible d'utiliser de variables dans une vue.
    Les objets (tables et vues) nécessaires à la création de la vue doivent exister avant de la créer.
    Si un objet référencé par la vue est effacé, la vue n'est alors plus accessible.
    Une vue ne peut référencer une table temporaire (TEMPORARY TABLE).
    Il n'est pas possible de créer des vues temporaires.
    Il n'est pas possible d'associer un trigger à une vue.
    La définition d'une vue est "gelée" dans une requête préparée.
    Le gros avantage surtout est le prix de MySQL par rapport a SQLserver.

    Effectivement en faisant des vues, je peux énormément alléger le code PHP.
    je vais y réfléchir

    Merci pour tes conseils

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

Discussions similaires

  1. passage de sql à mysql
    Par zabdaniel dans le forum Outils
    Réponses: 5
    Dernier message: 16/01/2008, 09h01
  2. MySQL--SQL Serveur -- DataReader "universel"
    Par TheBlackReverand dans le forum C#
    Réponses: 9
    Dernier message: 02/12/2007, 15h52
  3. Importer une BDD de MySQL à Sql serveur 2005 ?
    Par housni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/06/2007, 19h06
  4. Différence entre MySql et sql serveur
    Par nina_2006 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 30/10/2006, 16h12
  5. de Mysql à sql serveur
    Par zola dans le forum JDBC
    Réponses: 3
    Dernier message: 08/11/2004, 18h02

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