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 :

[SQL] Syntaxe pas claire !


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 30
    Points : 21
    Points
    21
    Par défaut [SQL] Syntaxe pas claire !
    J'ai besoin d'éclaircissement sur cette syntaxe svp :

    " %s?pageNum_auto=%d%s "

    Extrait de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <td width="31%" align="center"><?php if ($pageNum_auto > 0) { 
    	// Si ce n'est pas la première page ?>
    	<a href="<?php printf("%s?pageNum_auto=%d%s", $currentPage, max(0, $pageNum_auto - 1), $queryString_auto); ?>">
    	<img src="/CEnew/img/img_new/Previous.gif" alt="pr&eacute;c&eacute;dente" width="14" height="13" border="0" /></a>
    	 <?php } ?> </td>
    Il s'agit d'un morceau de code permettant l'affichage d'une requete SQL avec limitation du nombre d'affichage par page... J'aimerais comprendre exactement comment est construit le morceau ci-dessus, c'est à dire je comprends bien le %s, mais que signifie le ? et pourquoi n'y a t-il pas de $ devant pageNum_auto et aussi pourquoi %d et %s sont-ils collés après le = ??? ...
    Merci d'avance !

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Les %s ou %d sont remplacés par les paramètres qui suivent dans le printf.

    Le résultat obtenu c'est une URL avec un passage de paramètre, et une URL de ce genre est de la forme

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Salut Amara,
    Je comprends ce que tu m'écris, mais je ne vois toujours pas le résultat obtenu :
    ça donnerait une url proche de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0?pageNum_ato=0Select * from ....
    J'avoue que je suis un peu largé...

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Oui enfin après ça dépend de ce que tu as dans tes variables forcément... mais c'est le principe en effet.

    Le mieux c'est de tester et de regarder la tronche des URL générées (par contre je suis très dubitatif quant à la tranmission de requête SQL directement dans l'URL...).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Oui c'es certain, en fait tout fonctionne parfaitement...
    Je vais te montrer le code de page en entier... tu verras c'est un code généré automatiquement par dreamweaver, j'y ai mis mon grain de sel pour essayer d'en faciliter la compréhension ainsi que de commentaires pour m'aider à suivre la logique, mais justement sur la partie qui nous concerne, je suis rester comme une poule devant une fourchette
    Bref, jette un oeil, si ça peut t'aider à m'éclairer, alors merci encore d'avance..

    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
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    <?php include('Connections/annonces.php'); ?>
    <?php
    $currentPage = $_SERVER["PHP_SELF"]; //fait référence à la page courante, évite des màj en cas de renomage du script
     
    //Mise en place des limites d'affichage à la lecture 
    $maxRows_auto = 3; //maximum 3 annonces par page affichée
    $pageNum_auto = 0; //initialisation de $pageNum_auto
    if (isset($_GET['pageNum_auto'])) /* si $pageNum_auto est définie, ce qui est le cas */{
      $pageNum_auto = $_GET['pageNum_auto']; //elle prend la valeur de pageNum_auto soit 01 au début
    }
    $startRow_auto = $pageNum_auto * $maxRows_auto; // $strRow_auto = 0 * 3 = 0
     
    $colname_auto = "-1"; //initialisation
    if (isset($_GET['rubrique'])) /* si rubrique est définie ce qui est le cas au clic */ {
    	//structure alternative = si magic_quotes alors, sinon...
      $colname_auto = (get_magic_quotes_gpc()) ? $_GET['rubrique'] : addslashes($_GET['rubrique']);
      //alors colname_auto = rubrique sans les magic quotes sinon avec (pour selection sql plus loin)
    }
    mysql_select_db($database_annonces, $annonces);
    //%s indique d'une chaîne de caractère va être placée à cet endroit
    $query_auto = sprintf("SELECT * FROM auto WHERE type_vehicule = '%s'", $colname_auto);
    //%d indique d'un entier va être placé à cet endroit
    $query_limit_auto = sprintf("%s LIMIT %d, %d", $query_auto, $startRow_auto, $maxRows_auto);
    //ici on a donc "SELECT * FROM auto WHERE type_vehicule = .... LIMIT x,y"
    $auto = mysql_query($query_limit_auto, $annonces) or die(mysql_error());
     
    //une fois définie la limite d'affichage, lecture dans la table
    $row_auto = mysql_fetch_assoc($auto);
     
    if (isset($_GET['totalRows_auto'])) {
      $totalRows_auto = $_GET['totalRows_auto'];
    } else {
      $all_auto = mysql_query($query_auto);
      $totalRows_auto = mysql_num_rows($all_auto);
    }
    //ceil() retourne l'entier supérieur
    $totalPages_auto = ceil($totalRows_auto/$maxRows_auto)-1;
     
    $queryString_auto = "";
    if (!empty($_SERVER['QUERY_STRING']))/* si GET retourne des infos */ {
    	// explode retourne un tableau avec les partie de la chaîne séparées par un caractère
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      //parcous du tableau
      foreach ($params as $param) /* pour chaque $param du tableau*/{
      	//stristr retourne la partie de $param qui commence à pageNum_auto sinon false
        if (stristr($param, "pageNum_auto") == false && //si erreur
            stristr($param, "totalRows_auto") == false) {
    		//array_push insère des éléments ($param) dans le tableau ici $newParams
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
      	//implode() identique à fonction join() : réuni dans un string les éléments du tableau séparés par & (ici)
    	//donc si on a inséré des éléments, on les place maintenant dans $queryString_auto
        $queryString_auto = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_auto = sprintf("&totalRows_auto=%d%s", $totalRows_auto, $queryString_auto);
    ?><html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Lire une annonce</title>
      <script language="javascript" src="js/base.js"></script>
      <script language="javascript">getVieCaisseCss();</script>
      <link href="css/ce800.css" rel="stylesheet" type="text/css" />
     
      <style type="text/css">
    <!--
    .Style1 {color: #FFD442}
    -->
      </style>
      </head>
     
    <body>
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td nowrap height="60" width="384" valign="top" bgcolor="#ffffff" align="left"><script language="javascript">ImgAccueil("maire.jpg");</script></td>
        <td nowrap height="60" width="30%" align="center" valign="middle" bgcolor="#ffffff" class="CE"><div align="left"><span class="CE2">C</span>omit&eacute; d'<span class="CE2">E</span>ntreprise</div></td>
        <td nowrap height="60" width="94" align="left" bgcolor="#3366CC"><img src="img/bp3.gif" width"94" height="60" /></td>
        <td nowrap height="60" width="107" bgcolor="#3366CC" class="Espace"><script language="javascript">
    <!--
        Espace("ctri.gif")
    // -->
    </script></td></tr>
    </table>
    <!-- table du chemin -->
    <table width="100%" cellpadding="0" cellspacing="0" class="Progression">
      <tr>
        <td valign="top"><script language="javascript">Progression2("http://" + getAccueil(), "Retour &agrave; l'accueil de notre Intranet", "Accueil", "http://55.54.217.33/CEnew/index.php", "Comite d'Entreprise", "Comité d'Entreprise", "annonces.php","Les annonces","Les annonces","visuannonces.php","Lire une annonce","Lire une annonce","");</script>  
      </tr>
    </table>
     
    <!-- début tab fond de page -->
    <!-- table du corps entier -->
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><!-- table menu + boite idées + flash -->
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td bgcolor="#FF9999"><?php include "menu_deroulant.inc.php" ?></td>
              <td height="100%" rowspan="2" align = "left" valign="top"><? include "retrouveznous.inc.php";?></td>
            </tr>
            <tr>
              <td width="640" align="center" valign="top"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                  <td colspan="3" ><a href="annonces.php"><img src="img/img_new/entetesousmainannonces.png" width="640" border="0" /></a></td>
                  </tr>
                <tr>
                  <td rowspan="2" align="left" valign="top"><img src="img/img_new/barregauchejaune.png" /></td>
                  <td  rowspan="3" valign="top"><div align="center">
    			    <?php do { ?>
    			      <table width="98%" border="1" align="center" cellpadding="1" cellspacing="0" bordercolor="#FFD444">
    					  <tr>
    						<td width="25%" class="Style1"><div align="center">TYPE</div></td>
    						<td width="25%" class="Style1"><div align="center">MARQUE</div></td>
    						<td width="25%" class="Style1"><div align="center">ANNEE</div></td>
    						<td width="25%" class="Style1"><div align="center">KM</div></td>
    					  </tr>
    					  <tr>
    					    <td width="25%"><div align="center"><?php echo $row_auto['type_vehicule']; ?></div></td>
    						<td width="25%"><div align="center"><?php echo $row_auto['marque']; ?></div></td>
    						<td width="25%"><div align="center"><?php echo $row_auto['annee']; ?></div></td>
    						<td width="25%"><div align="center"><?php echo $row_auto['km']; ?></div></td>
    					    </tr>
    					  <tr>
    						<td colspan="4"><?php echo $row_auto['libelle_auto']; ?></td>
    						</tr>
    					  <tr>
    						<td class="Style1">PRIX : </td>
    						<td colspan="3"><div align="left"><?php echo $row_auto['prix_auto'].' &euro;'; ?></div></td>
    						</tr>
    					</table><br />
    			      <?php } while ($row_auto = mysql_fetch_assoc($auto)); /*tant que non EOF */ ?>
                    <table border="0" width="50%" align="center">
                      <tr>
                        <td width="23%" align="center"><?php if ($pageNum_auto > 0) { 
    						// Si ce n'est pas la première page ?>
    						<a href="<?php printf("%s?pageNum_auto=%d%s", $currentPage, 0, $queryString_auto); ?>">
    						<img src="/CEnew/img/img_new/First.gif" alt="d&eacute;but" width="18" height="13" border="0" /></a>
    						<?php } ?> </td>
     
    					<td width="31%" align="center"><?php if ($pageNum_auto > 0) { 
    						// Si ce n'est pas la première page ?>
    						<a href="<?php printf("%s?pageNum_auto=%d%s", $currentPage, max(0, $pageNum_auto - 1), $queryString_auto); ?>">
    						<img src="/CEnew/img/img_new/Previous.gif" alt="pr&eacute;c&eacute;dente" width="14" height="13" border="0" /></a>
    						 <?php } ?> </td>
     
    					<td width="23%" align="center"><?php if ($pageNum_auto < $totalPages_auto) {
    						 // si pas dernière page ?>
    						 <a href="<?php printf("%s?pageNum_auto=%d%s", $currentPage, min($totalPages_auto, $pageNum_auto + 1), $queryString_auto); ?>">
    						 <img src="/CEnew/img/img_new/Next.gif" alt="suivant" width="14" height="13" border="0" /></a>
    						 <?php } ?> </td>
     
    					<td width="23%" align="center"><?php if ($pageNum_auto < $totalPages_auto) { 
    						 // si pas dernière page ?>
    						 <a href="<?php printf("%s?pageNum_auto=%d%s", $currentPage, $totalPages_auto, $queryString_auto); ?>">
    						 <img src="/CEnew/img/img_new/Last.gif" alt="dernier" width="18" height="13" border="0" /></a>
    						 <?php } ?> </td>
                      </tr>
                    </table><br />
                  </div>
    			  </td>
                  <td valign="top"><div align="right"><img src="img/img_new/barredroitejaune.png" /></div></td>
                </tr>
                <tr>
                  <td height="304" valign="top" class="boutdepied"></td>
                </tr>
                <tr>
                  <td colspan="3" ><img src="img/img_new/piedsousmainrouge.png" /></td>
                  </tr>
              </table></td>
            </tr>
    	  </table>
    	</td>
      </tr>
    </table>
    </body>
    </html>
    <?php
    mysql_free_result($auto);
    ?>

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans $queryString_auto ce n'est pas une requête que tu as mais une suite de paramètres pour URL (un truc du style "&param=valeur&param2=valeur2...").

    Dans $currentPage tu as le nom de ta page courante.

    Donc au final ton print va te sortir un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pagecourante.php?0&valeur=param&valeur2=param2...
    Le 0 après le ? c'est une feinte pour pas avoir à jongler avec les ? et & ensuite, c'est juste une question pratique (pas d'utilisation derrière).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Amara .... MERCI !!!
    Voilà qui est plus clair, j'ai compris, et la lumière fut !
    Bravo...

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par dlamo Voir le message
    Amara .... MERCI !!!
    Voilà qui est plus clair, j'ai compris, et la lumière fut !
    Bravo...
    Y'a pas de quoi, bon courage pour la suite (surtout avec Dreamweaver lol)...

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

Discussions similaires

  1. Syntaxe pas claire
    Par Guitoudugte dans le forum Fortran
    Réponses: 1
    Dernier message: 17/05/2007, 16h42
  2. [SQL*Net] pas de listener : TNS-12547
    Par aline dans le forum Oracle
    Réponses: 2
    Dernier message: 30/05/2005, 11h05
  3. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  4. aide PL/SQL syntaxes [debutant] [mauvaise doc]
    Par sdeb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/01/2004, 12h59
  5. Trucs pas claire
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 09/07/2003, 21h10

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