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 :

Passer de mssql_connect à PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Passer de mssql_connect à PDO
    Bonjour,

    J'avais développé il y a quelques années une page PHP qui interroge une base MSSQL sur la fréquentation d'un parc. Je ne suis pas développeur, mais ma page fonctionnait parfaitement.
    Par contre, je suis en train de migrer le serveur vers la nouvelle version de Ubuntu 16.04 qui est en php7 et non plus php5. Du coup, la fonction mssql_connect n'existe plus et d'après mes recherches, le mieux est d'utiliser PDO mais j'aimerais avoir votre aide pour convertir mes anciennes commandes en PDO car je suis un peu perdu


    voici le code actuel :
    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
     
    <?php
    //Connexion à la BDD et à la Table
    $irec = mssql_connect('server', 'user', 'pass');
    if (!$irec) die('Unable to connect!');
    if (!mssql_select_db('IREC', $irec)) die('Unable to select database!');
     
    //Liste des requetes
    //TROPICAL
    $tropical_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO'");
    $tropical_sortie = mssql_query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='TRO'");
    $tropical_fmi = mssql_query("SELECT Sa_occupation FROM Salle WHERE Sa_code='TRO'");
    //TEMPERE
    $tempere_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TEM'");
    $tempere_sortie = mssql_query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='TEM'");
    $tempere_fmi = mssql_query("SELECT Sa_occupation FROM Salle WHERE Sa_code='TEM'");
    //POLAIRE
    $polaire_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='POL'");
    $polaire_sortie = mssql_query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='POL'");
    $polaire_fmi = mssql_query("SELECT Sa_occupation FROM Salle WHERE Sa_code='POL'");
    //AUDITORIUM
    $audi_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='3D'");
    $audi_sortie = mssql_query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='3D'");
    $audi_fmi = mssql_query("SELECT Sa_occupation FROM Salle WHERE Sa_code='3D'");
    //PARC
    $parc_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='ENT'");
    $parc_sortie = mssql_query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='ENT'");
    $parc_fmi = mssql_query("SELECT Sa_occupation FROM Salle WHERE Sa_code='ENT'");
     
    //stocke les résultat numérique dans un tableau puis affiche la première case
    //TROPICAL (nmb entre-sortie-fmi)
    $res_tropical_entree = mssql_fetch_row($tropical_entree);
    $res_tropical_sortie = mssql_fetch_row($tropical_sortie);
    $res_tropical_fmi = mssql_fetch_row($tropical_fmi);
    //TEMPERE (nmb entre-sortie-fmi)
    $res_tempere_entree = mssql_fetch_row($tempere_entree);
    $res_tempere_sortie = mssql_fetch_row($tempere_sortie);
    $res_tempere_fmi = mssql_fetch_row($tempere_fmi);
    //POLAIRE (nmb entre-sortie-fmi)
    $res_polaire_entree = mssql_fetch_row($polaire_entree);
    $res_polaire_sortie = mssql_fetch_row($polaire_sortie);
    $res_polaire_fmi = mssql_fetch_row($polaire_fmi);
    //AUDITORIUM (nmb entre-sortie-fmi)
    $res_audi_entree = mssql_fetch_row($audi_entree);
    $res_audi_sortie = mssql_fetch_row($audi_sortie);
    $res_audi_fmi = mssql_fetch_row($audi_fmi);
    //PARC (nmb entre-sortie-fmi)
    $res_parc_entree = mssql_fetch_row($parc_entree);
    $res_parc_sortie = mssql_fetch_row($parc_sortie);
    $res_parc_fmi = mssql_fetch_row($parc_fmi);
     
    //Clos la connexion à la BDD
    mssql_close();
    ?>

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as rien pu écrire du tout ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    la connexion à la base sql en PDO, j'ai regardé, cela ne pose pas de soucis mais ce sont les requetes qui me posent soucis

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    donner des exemples de requête qui ne fonctionnent pas (la version mssql et la version PDO) ainsi que les erreurs générées nous permettrait de répondre spécifiquement à votre problème.
    Comprendre PDO sur dvp.
    Christophe

    Pensez à mettre quand c'est le cas.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    par exemple, j'ai cette requete SQL : SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO' qui est bonne mais la fonction utilisée est mssql_query qui n'existe plus sur php7

    Il faut donc remplacer msssql_query par une fonction utilisant PDO

    $tropical_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO'");

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Et quelle requête PDO avez-vous essayée ? Avec quelle message d'erreur ?
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est indiqué très clairement dans l'article qu'on t'a donné :
    http://fmaz.developpez.com/tutoriels...re-pdo/#LIII.b
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    je n'ai pas essayé justement car je suis incompétent en développement pour convertir ces fonctions mssql_conect en PDO

    si je remplace cette commande
    $tropical_entree = mssql_query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO'");
    par :
    $tropical_entree = $pdo->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO'");
    est-ce correct ?

    et cette commande
    $res_tropical_entree = mssql_fetch_row($tropical_entree);
    par
    $res_tropical_entree =$$tropical_entree->fetchObject();

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par mulbzh29 Voir le message
    je n'ai pas essayé justement car je suis incompétent en développement
    C'est normal d'être incompétent quand on n'essaie pas...
    Christophe

    Pensez à mettre quand c'est le cas.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Christophe P. Voir le message
    C'est normal d'être incompétent quand on n'essaie pas...
    Si je pose la question sur le forum c'est bien que j'ai fait le tour du sujet avant de poster un message et pas qu'un peu...

    je vois bien que tu ne souhaites pas m'aider, il suffit donc que tu passes ton chemin...

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je pourrais répéter ce qu'il y a d'écrit dans les liens donnés plus haut, mais je n'en vois pas l'intérêt.

    Pourquoi ne veux-tu pas essayer les exemples que tu as écrit précédemment ?
    Je ne vois ne vois pas pourquoi je devrais les tester alors que tu ne l'as pas fait toi même.
    Christophe

    Pensez à mettre quand c'est le cas.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    je ne demande pas de tester mais je pensais que quelqu'un sur le forum pourrait me confirmer la syntaxe

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1- Pour les syntaxes, t'as déjà des exemples sur le tutoriel plus haut, et il y a aussi le manuel en français. Donc commence par coder et tester, revenir ensuite en cas de problème, ça ne te pendra que quelque minutes pour coder et tester les syntaxes.

    2- Tu as des instructions dupliqués pour les requêtes, tu peux utiliser une seule requête pour récupérer les 3 colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT Sa_nombreentree , Sa_nombresortie , Sa_occupation  FROM Salle WHERE Sa_code= ? ";
    Là déjà tu ne lances la requête que 5 fois au lieu de 15 fois.
    Tu peux lancer la requête une seule fois en utilisant la clause IN et récupérer les valeurs des 3 champs par rapport au champ Sa_code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT Sa_nombreentree , Sa_nombresortie , Sa_occupation, Sa_code  FROM Salle WHERE Sa_code in (?) ";
    Tu passes "'TRO', 'TEM','POL','3D','ENT'" comme paramètre, ensuite tu parcours le résultat pour chaque valeur de tes variables.

    A+.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par andry.aime Voir le message
    ...ça ne te pendra que quelque minutes...
    @andry.aime
    Houlà ! Inutile d'en arriver à de telles extrémités !


    Le tuto Comprendre PDO (dont le lien t'a été maintes fois donné !) est bien documenté, et explique clairement les syntaxes à utiliser.
    Cliquer sur le lien, c'est bien.
    LE LIRE est un +...

    On trouve tout le nécessaire (connexion, utilisation, fonctions...) dans le Manuel PHP : PDO (PHP Data Objects)

    Enfin, TESTER est la meilleure façon d'APPRENDRE.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Alors, j'ai réussi à avancer :
    la connexion à la base se passe parfaitement
    j'ai n'ai aucune erreur sur la page

    par contre,
    je n'ai qu'une seule valeur qui s'affiche, c'est la valeur pour $res_parc_fmi



    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    <?php
    $myServer = "socvexp12";
    $myUser = "user";
    $myPass = "pass";
    $myDB = "base"; 
     
    try {
    //MS SQL Server and Sybase with PDO_DBLIB
    $dbh = new PDO("dblib:host=$myServer;dbname=$myDB", $myUser, $myPass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
        echo $e->getMessage();
    } 
     
     
     
     
    //Liste des requetes
    //TROPICAL
    $tropical_entree = $dbh->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TRO'");
    $tropical_sortie = $dbh->query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='TRO'");
    $tropical_fmi = $dbh->query("SELECT Sa_occupation FROM Salle WHERE Sa_code='TRO'");
    //TEMPERE
    $tempere_entree = $dbh->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='TEM'");
    $tempere_sortie = $dbh->query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='TEM'");
    $tempere_fmi = $dbh->query("SELECT Sa_occupation FROM Salle WHERE Sa_code='TEM'");
    //POLAIRE
    $polaire_entree = $dbh->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='POL'");
    $polaire_sortie = $dbh->query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='POL'");
    $polaire_fmi = $dbh->query("SELECT Sa_occupation FROM Salle WHERE Sa_code='POL'");
    //AUDITORIUM
    $audi_entree = $dbh->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='3D'");
    $audi_sortie = $dbh->query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='3D'");
    $audi_fmi = $dbh->query("SELECT Sa_occupation FROM Salle WHERE Sa_code='3D'");
    //PARC
    $parc_entree = $dbh->query("SELECT Sa_nombreentree FROM Salle WHERE Sa_code='ENT'");
    $parc_sortie = $dbh->query("SELECT Sa_nombresortie FROM Salle WHERE Sa_code='ENT'");
    $parc_fmi = $dbh->query("SELECT Sa_occupation FROM Salle WHERE Sa_code='ENT'");
     
     
     
    //stocke les résultat numérique dans un tableau puis affiche la première case
    //TROPICAL (nmb entre-sortie-fmi)
    $res_tropical_entree = $tropical_entree->fetch();
    $res_tropical_sortie = $tropical_sortie->fetch();
    $res_tropical_fmi = $tropical_fmi->fetch();
    //TEMPERE (nmb entre-sortie-fmi)
    $res_tempere_entree = $tempere_entree->fetch();
    $res_tempere_sortie = $tempere_sortie->fetch();
    $res_tempere_fmi = $tempere_fmi->fetch();
    //POLAIRE (nmb entre-sortie-fmi)
    $res_polaire_entree = $polaire_entree->fetch();
    $res_polaire_sortie = $polaire_sortie->fetch();
    $res_polaire_fmi = $polaire_fmi->fetch();
    //AUDITORIUM (nmb entre-sortie-fmi)
    $res_audi_entree = $audi_entree->fetch();
    $res_audi_sortie = $audi_sortie->fetch();
    $res_audi_fmi = $audi_fmi->fetch();
    //PARC (nmb entre-sortie-fmi)
    $res_parc_entree = $parc_entree->fetch();
    $res_parc_sortie = $parc_sortie->fetch();
    $res_parc_fmi = $parc_fmi->fetch();
     
    ?>
     
    //la page HTMl d'affichage des données
    <html>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<meta http-equiv="refresh" content="120" />
    	<head>
    		<title>Fréquentation Océanopolis</title>
    	</head>
    	<body BGCOLOR="#ebeced">
     
    		<table border="0" style="width: 823px; height: 289px;"> <!-- Tableau -->
    			<caption>
    				<?php
    					$date = date("d-m-Y");
    					$heure = date("H:i");
    					echo "Date : $date / Heure : $heure<br />";
     
    				?>
    			</caption>
    			<thead> <!-- En-tête du tableau -->
    				<tr style="height: 42px; text-align: center;">
    					<th></th>
    					<th style="margin-left: 117px;"><u>ENTREE</u></th>
    					<th style="margin-left: 97px;"><u>SORTIE</u></th>
    					<th style="width: 184px; margin-left: -44px;"><u>FMI</u></th>
    					<th style="margin-left: 109px; width: 177px;"><FONT color="red"><u>SEUIL D'ALERTE</u></th>
    				</tr>
    			</thead>
    			<tbody> <!-- Corps du tableau -->
    				<tr style="height: 42px; text-align: center;">
    					<td style="width: 202px;">PAVILLON TROPICAL</td>
    					<td style="margin-left: 97px; width: 161px;"> <?php echo $res_tropical_entree[0]; ?> </td>
    					<td style="width: 163px; margin-left: -14px;"> <?php echo $res_tropical_sortie[0]; ?> </td>
    					<td style="margin-left: 118px;"> <b><?php echo $res_tropical_fmi[0]; ?></b> </td>
    					<td style="width: 190px; margin-left: 182px;"><FONT color="red"><b>864</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PAVILLON TEMPERE</td>
    					<td> <?php echo $res_tempere_entree[0]; ?> </td>
    					<td> <?php echo $res_tempere_sortie[0]; ?> </td>
    					<td> <b><?php echo $res_tempere_fmi[0]; ?></b> </td>
    					<td><FONT color="red"><b>850</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PAVILLON POLAIRE</td>
    					<td> <?php echo $res_polaire_entree[0]; ?> </td>
    					<td> <?php echo $res_polaire_sortie[0]; ?> </td>
    					<td> <b><?php echo $res_polaire_fmi[0]; ?></b> </td>
    					<td><FONT color="red"><b>911</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>AUDITORIUM</td>
    					<td style="margin-left: -41px;"> <?php echo $res_audi_entree[0]; ?> </td>
    					<td style="margin-left: 76px;"> <?php echo $res_audi_sortie[0]; ?> </td>
    					<td style="margin-left: 32px;"> <b><?php echo $res_audi_fmi[0]; ?></b> </td>
    					<td style="margin-left: -43px;"><FONT color="red"><b>254</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PARC</td>
    					<td> <b style="color:#16a085;"> <u> <?php echo $res_parc_entree[0]; ?></u></b> </td>
    					<td> <?php echo $res_parc_sortie[0]; ?> </td>
    					<td> <b><?php echo $res_parc_fmi[0]; ?></b> </td>
    					<td><FONT color="red"><b>4500</b></td>
    				</tr>
    			</tbody>
    		</table>
    <!--Affichage de l'objectif du jour -->
    		<p>Objectif Previsionnel du jour :  <b style="color:#16a085;"> <?php echo $res_objectif_pre[0]; ?></b></p>
     
     
    <p style="text-align: left;"><img src="PLAN.jpg" alt="PLAN" checked="true" />
    		<br />
    		<p>Rafraichissement automatique de la page</p>
    	</body>
    </html>

  16. #16
    Invité
    Invité(e)
    Par défaut
    andry.aime t'a expliqué comment récupérer plusieurs champs avec UNE SEULE requête, au lieu de 3.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    oui j'ai lu son post mais je ne vois pas comment passer les paramètres par la suite, il a donné un début de code

    Et puis c'est une optimisation de code qu'il propose, ce qui est idéal en effet mais j'aimerais débuggé mon code et comprendre pourquoi cela ne fonctionne pas

  18. #18
    Invité
    Invité(e)
    Par défaut
    fichier de connexion PDO connexion_pdo.php (externe) :
    Code php : 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
    <?php
    	$myServer = "socvexp12";
    	$myUser = "user";
    	$myPass = "pass";
    	$myDB = "base"; 
     
    	try {
    	//MS SQL Server and Sybase with PDO_DBLIB
    	$pdo_extraParams = array(
    		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,		// rapport d'erreurs sous forme d'exceptions
    		PDO::ATTR_PERSISTENT => true, 						// Connexions persistantes
    		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 	// fetch mode par defaut
    		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"	// encodage UTF-8
    		);
    	$dbh = new PDO("dblib:host=$myServer;dbname=$myDB", $myUser, $myPass, $pdo_extraParams);
    }
    catch(PDOException $e) {
        echo $e->getMessage();
    }
    ton fichier :
    Code php : 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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    <?php
    // ----------------- 
    // fichier de connexion PDO
    require('connexion_pdo.php');
    // ----------------- 
    //Liste des requetes
    //TROPICAL
    $tropical_sql = "SELECT Sa_nombreentree, Sa_nombresortie, Sa_occupation FROM Salle WHERE Sa_code='TRO'";
    $tropical_res = $dbh->query($tropical_sql);
    $tropical_row = $tropical_res->fetch();
    //TEMPERE
    $tempere_sql = "SELECT Sa_nombreentree, Sa_nombresortie, Sa_occupation FROM Salle WHERE Sa_code='TEM'";
    $tempere_res = $dbh->query($tempere_sql);
    $tempere_row = $tempere_res->fetch();
    //POLAIRE
    $polaire_sql = "SELECT Sa_nombreentree, Sa_nombresortie, Sa_occupation FROM Salle WHERE Sa_code='POL'";
    $polaire_res = $dbh->query($polaire_sql);
    $polaire_row = $polaire_res->fetch();
    //AUDITORIUM
    $audi_sql = "SELECT Sa_nombreentree, Sa_nombresortie, Sa_occupation FROM Salle WHERE Sa_code='3D'";
    $audi_res = $dbh->query($audi_sql);
    $audi_row = $audi_res->fetch();
    //PARC
    $parc_sql = "SELECT Sa_nombreentree, Sa_nombresortie, Sa_occupation FROM Salle WHERE Sa_code='ENT'";
    $parc_res = $dbh->query($parc_sql);
    $parc_row = $parc_res->fetch();
    // -----------------
    // récupération des données + protection affichage : htmlspecialchars()
    //TROPICAL (nmb entre-sortie-fmi)
    $row_tropical_entree = htmlspecialchars( $tropical_row['Sa_nombreentree'], ENT_QUOTES, 'UTF-8' );
    $row_tropical_sortie = htmlspecialchars( $tropical_row['Sa_nombresortie'], ENT_QUOTES, 'UTF-8' );
    $row_tropical_fmi = htmlspecialchars( $tropical_row['Sa_occupation'], ENT_QUOTES, 'UTF-8' );
    //TEMPERE (nmb entre-sortie-fmi)
    $row_tempere_entree = htmlspecialchars( $tempere_rowparc['Sa_nombreentree'], ENT_QUOTES, 'UTF-8' );
    $row_tempere_sortie = htmlspecialchars( $tempere_row['Sa_nombresortie'], ENT_QUOTES, 'UTF-8' );
    $row_tempere_fmi = htmlspecialchars( $tempere_row['Sa_occupation'], ENT_QUOTES, 'UTF-8' );
    //POLAIRE (nmb entre-sortie-fmi)
    $row_polaire_entree = htmlspecialchars( $polaire_rowparc['Sa_nombreentree'], ENT_QUOTES, 'UTF-8' );
    $row_polaire_sortie = htmlspecialchars( $polaire_row['Sa_nombresortie'], ENT_QUOTES, 'UTF-8' );
    $row_polaire_fmi = htmlspecialchars( $polaire_row['Sa_occupation'], ENT_QUOTES, 'UTF-8' );
    //AUDITORIUM (nmb entre-sortie-fmi)
    $row_audi_entree = htmlspecialchars( $audi_row['Sa_nombreentree'], ENT_QUOTES, 'UTF-8' );
    $row_audi_sortie = htmlspecialchars( $audi_row['Sa_nombresortie'], ENT_QUOTES, 'UTF-8' );
    $row_audi_fmi = htmlspecialchars( $audi_row['Sa_occupation'], ENT_QUOTES, 'UTF-8' );
    //PARC (nmb entre-sortie-fmi)
    $row_parc_entree = htmlspecialchars( $parc_row['Sa_nombreentree'], ENT_QUOTES, 'UTF-8' );
    $row_parc_sortie = htmlspecialchars( $parc_row['Sa_nombresortie'], ENT_QUOTES, 'UTF-8' );
    $row_parc_fmi = htmlspecialchars( $parc_row['Sa_occupation'], ENT_QUOTES, 'UTF-8' );
    // ----------------- 
    //la page HTML d'affichage des données
    ?>
     
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    		<meta http-equiv="refresh" content="120" />
    		<title>Fréquentation Océanopolis</title>
    	</head>
    	<body BGCOLOR="#ebeced">
     
    		<table border="0" style="width: 823px; height: 289px;"> <!-- Tableau -->
    			<caption>
    				<?php
    					$date = date("d-m-Y");
    					$heure = date("H:i");
    					echo "Date : $date / Heure : $heure<br />";
     
    				?>
    			</caption>
    			<thead> <!-- En-tête du tableau -->
    				<tr style="height: 42px; text-align: center;">
    					<th></th>
    					<th style="margin-left: 117px;"><u>ENTREE</u></th>
    					<th style="margin-left: 97px;"><u>SORTIE</u></th>
    					<th style="width: 184px; margin-left: -44px;"><u>FMI</u></th>
    					<th style="margin-left: 109px; width: 177px;"><FONT color="red"><u>SEUIL D'ALERTE</u></th>
    				</tr>
    			</thead>
    			<tbody> <!-- Corps du tableau -->
    				<tr style="height: 42px; text-align: center;">
    					<td style="width: 202px;">PAVILLON TROPICAL</td>
    					<td style="margin-left: 97px; width: 161px;"> <?php echo $row_tropical_entree; ?> </td>
    					<td style="width: 163px; margin-left: -14px;"> <?php echo $row_tropical_sortie; ?> </td>
    					<td style="margin-left: 118px;"> <b><?php echo $row_tropical_fmi; ?></b> </td>
    					<td style="width: 190px; margin-left: 182px;"><FONT color="red"><b>864</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PAVILLON TEMPERE</td>
    					<td> <?php echo $row_tempere_entree; ?> </td>
    					<td> <?php echo $row_tempere_sortie; ?> </td>
    					<td> <b><?php echo $row_tempere_fmi; ?></b> </td>
    					<td><FONT color="red"><b>850</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PAVILLON POLAIRE</td>
    					<td> <?php echo $row_polaire_entree; ?> </td>
    					<td> <?php echo $row_polaire_sortie; ?> </td>
    					<td> <b><?php echo $row_polaire_fmi; ?></b> </td>
    					<td><FONT color="red"><b>911</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>AUDITORIUM</td>
    					<td style="margin-left: -41px;"> <?php echo $row_audi_entree; ?> </td>
    					<td style="margin-left: 76px;"> <?php echo $row_audi_sortie; ?> </td>
    					<td style="margin-left: 32px;"> <b><?php echo $row_audi_fmi; ?></b> </td>
    					<td style="margin-left: -43px;"><FONT color="red"><b>254</b></td>
    				</tr>
    				<tr style="height: 42px; text-align: center;">
    					<td>PARC</td>
    					<td> <b style="color:#16a085;"> <u> <?php echo $row_parc_entree; ?></u></b> </td>
    					<td> <?php echo $row_parc_sortie; ?> </td>
    					<td> <b><?php echo $row_parc_fmi; ?></b> </td>
    					<td><FONT color="red"><b>4500</b></td>
    				</tr>
    			</tbody>
    		</table>
    <!--Affichage de l'objectif du jour -->
    		<p>Objectif Previsionnel du jour :  <b style="color:#16a085;"> <?php echo $res_objectif_pre[0]; ?></b></p>
     
     
    <p style="text-align: left;"><img src="PLAN.jpg" alt="PLAN" checked="true" />
    		<br />
    		<p>Rafraichissement automatique de la page</p>
    	</body>
    </html>
    Il reste $res_objectif_pre[0] (?), dont la requête n'apparait pas dans ton code.


    QUESTIONS :

    • 1/ Pourquoi les "SEUIL D'ALERTE" ne sont pas enregistrés eux aussi en base de données ?
      (ils sont écrits "en dur" dans le code : ce n'est pas très logique, ni facile à modifier)


    • 2/ 'TRO', 'TEM', 'POL', '3D' et 'ENT' sont elles les SEULES valeurs de "Sa_code" dans la table ?
      Auquel cas il est possible de SIMPLIFIER encore le code (avec UNE SEULE requête + fetchAll() + un while pour l'affichage)
    Dernière modification par Invité ; 14/09/2016 à 12h47.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Il reste $res_objectif_pre[0] (?), dont la requête n'apparait pas dans ton code.
    oui, excuse moi, j'ai enlevé une partie du code que j'ai posté sur le forum qui est un code de connexion a une autre base MySQL cette fois-ci et qui fonctionne parfaitement bien.
    Il reste $res_objectif_pre[0] est un reste que j'ai oublié d'enlever avant de poster

    •1/ Pourquoi les "SEUIL D'ALERTE" ne sont pas enregistrés eux aussi en base de données ?
    (ils sont écrits "en dur" dans le code : ce n'est pas très logique, ni facile à modifier)
    ces seuils d'alerte sont toujours les mêmes

    •2/ 'TRO', 'TEM', 'POL', '3D' et 'ENT' sont elles les SEULES valeurs de "Sa_code" dans la table ?
    Auquel cas il est possible de SIMPLIFIER encore le code (avec UNE SEULE requête + fetchAll() + un while pour l'affichage)
    je ne peux pas te dire, c'est le prestataire qui gère la base

    je teste ta proposition

  20. #20
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    j'ai testé ta proposition, merci beaucoup

    cela fonctionne sauf pour 2 valeurs :
    Notice: Undefined variable: tempere_rowparc
    Notice: Undefined variable: polaire_rowparc

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PDO] Passer de MYSQL à PDO
    Par Belles et Butes dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 05/01/2015, 10h32
  2. [PDO] Requête SQL complexe: difficulté à passer en PDO
    Par caema dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/12/2013, 18h45
  3. [PDO] Passer un objet PDO via une variable de session
    Par gohanfaye dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 15/03/2011, 11h11
  4. [PDO] Faut il passer à PDO ?
    Par elcoyotos dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/09/2009, 21h43
  5. Passer de PDO à MySQL
    Par sajodia dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/12/2008, 17h58

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