Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2007, 10h21   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 8
Points : 8
Envoyer un message via MSN à dlamo
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 :
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 !
dlamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 10h27   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 11h45   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 8
Points : 8
Envoyer un message via MSN à dlamo
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 :
0?pageNum_ato=0Select * from ....
J'avoue que je suis un peu largé...
dlamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h24   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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...).
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h35   #5
Invité régulier
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 8
Points : 8
Envoyer un message via MSN à dlamo
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 :
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);
?>
dlamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h55   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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 :
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).
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 13h57   #7
Invité régulier
 
Inscription : octobre 2006
Messages : 30
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2006
Messages : 30
Points : 8
Points : 8
Envoyer un message via MSN à dlamo
Amara .... MERCI !!!
Voilà qui est plus clair, j'ai compris, et la lumière fut !
Bravo...
dlamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 14h02   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h19.


 
 
 
 
Partenaires

Hébergement Web