galerie photo

Eléphant du PHP | 254 Messages

17 avr. 2006, 18:02

deja je vois pas trop ce qu'un sprintf() vient faire ici, mais c'est surement une question de gout ... les egouts et les couleurs ca ne se discute pas :lol:

tout le code que je t'ai mis te permet de creer une variable qui va contenir la requete MySQL.


bon sang, j'ai vraiment du mal avec ton script, j'ai rarement vu ca ... bon, j'arrete de faire ma mauvaise tete et je te file ce que je pense etre la bonne reponse ... :?:



$currentPage = $_SERVER["PHP_SELF"];

// On affecte la valeur de $_POST si elle existe, sinon celle de $_GET si elle existe, sinon on laisse vide :
$colname_affichageimage = (isSet($_POST['pays'])) ? $_POST['pays'] : ((isSet($_GET['pays'])) ? $_GET['pays'] : "");
$colname2_affichageimage = (isSet($_POST['site'])) ? $_POST['site'] : ((isSet($_GET['site'])) ? $_GET['site'] : "");


$maxRows_affichageimage = 4;
$pageNum_affichageimage = 0;
if (isset($_GET['pageNum_affichageimage'])) {
  $pageNum_affichageimage = $_GET['pageNum_affichageimage'];
}
$startRow_affichageimage = $pageNum_affichageimage * $maxRows_affichageimage;

mysql_select_db($database_pays, $pays);


$w1 = '';
$w2 = '';
if( $colname_affichageimage ){
    $w1 = "bpays.site LIKE '$colname_affichageimage'";
}
if( $colname2_affichageimage ){
    $w2 = $w1 ? " AND bpays.pays LIKE '$colname2_affichageimage'" : "bpays.pays LIKE '$colname2_affichageimage'";
}

if( $w1 || $w2 ){
    $query_affichageimage = "SELECT * FROM bpays WHERE $w1 $w2 ORDER BY bpays.pays";
}else{
    $query_affichageimage = "SELECT * FROM bpays ORDER BY bpays.pays";
}


$query_limit_affichageimage = sprintf("%s LIMIT %d, %d", $query_affichageimage, $startRow_affichageimage, $maxRows_affichageimage);
$affichageimage = mysql_query($query_limit_affichageimage, $pays) or die(mysql_error());
$row_affichageimage = mysql_fetch_assoc($affichageimage);

if (isset($_GET['totalRows_affichageimage'])) {
  $totalRows_affichageimage = $_GET['totalRows_affichageimage'];
} else {
  $all_affichageimage = mysql_query($query_affichageimage);
  $totalRows_affichageimage = mysql_num_rows($all_affichageimage);
}
$totalPages_affichageimage = ceil($totalRows_affichageimage/$maxRows_affichageimage)-1;

$queryString_affichageimage = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_affichageimage") == false &&
        stristr($param, "totalRows_affichageimage") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_affichageimage = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_affichageimage = sprintf("&totalRows_affichageimage=%d%s", $totalRows_affichageimage, $queryString_affichageimage);


Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 avr. 2006, 18:06

deja je vois pas trop ce qu'un sprintf() vient faire ici, mais c'est surement une question de gout ... les egouts et les couleurs ca ne se discute pas :lol:
qu'un mot "Dreamweaver" :lol:

Ce code est une autre soluce mais la mienne est courte :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 254 Messages

17 avr. 2006, 18:11

oups, j'ai oublié de dire qu'il faut absolument proteger les chaines qui viennent de l'exterieur contre les attaques, betises et autres ....

donc tu dois utiliser mysql_real_escape_string() ou mysql_escape_string() voir meme un addslashes() pour proteger les chaines avant de les inserer dans la requete

---------------

qu'un mot "Dreamweaver" ?

j'ai pas compris, mais ca doit etre normal, j'ai pas encore dormi et il est presque 18h et j'ai encore tout le menage a faire ce qui me stresse d'avance :(

Invité
Invité n'ayant pas de compte PHPfrance

17 avr. 2006, 18:17

Merci pour le code Lorenzo, mais je l'ai mis
en place, mais ca ne marche plus :)
je ne pense pas avoir oublié qlq chose, car j'ai fait
betement un copier/coller.
pas de message d'erreur, mais pas de données !

Eléphant du PHP | 254 Messages

17 avr. 2006, 18:19

la je ne peux plus t'aider vu que je n'ai pas la librairie mysql ....

tu vas devoir tester avec des echo a differents endroits de ton script pour voir si tu as bien les valeurs que tu attends ...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 avr. 2006, 18:23

Argh mon post à du passer inaperçu alors je le remet...
bah j'ai oublié le principal avec l'utilisation de LIKE... le %.

j'ai confondu avec celui de sprintf()

Donc ça donnerait:
$query_affichageimage = sprintf("SELECT * FROM bpays WHERE bpays.pays LIKE '%s%' AND bpays.site LIKE '%s%' ORDER BY bpays.pays", $colname_affichageimage,$colname2_affichageimage);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 297 Messages

17 avr. 2006, 18:34

si , j'avais bien vu ton code Truc,
je l'avais appliqué :
$query_affichageimage = sprintf("SELECT * FROM bpays WHERE bpays.pays LIKE '%s%' AND bpays.site LIKE '%s%' ORDER BY bpays.pays", $colname_affichageimage,$colname2_affichageimage);
mais lorsque je fais la requete j'ai ce message d'erreur :

Code : Tout sélectionner

Warning: sprintf(): Too few arguments in ......./affichageimag.php on line 18 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 4' at line 1
et la ligne 18 c'est celle la :cry:
pour repondre a Lorenzo, je veux bien croire que mon script est bizarre ! a l'origine c'est du dreamweaver, puis retouché peu a peu avec vous pour qu'il reponde a mon besoin :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 avr. 2006, 19:08

a l'origine c'est du dreamweaver
le revoilà mon mot :lol:

En effet encore sprintf() qu'il ne veux pas comme le echo() :
$query_affichageimage = sprintf("SELECT * FROM bpays WHERE bpays.pays LIKE '%s\%' AND bpays.site LIKE '%s\%' ORDER BY bpays.pays", $colname_affichageimage,$colname2_affichageimage);
essaie en échappant les % avec \

Sinon repasse en mode plus courant:
$query_affichageimage = "SELECT * FROM bpays WHERE bpays.pays LIKE '".$colname_affichageimage."%' AND bpays.site LIKE '".$colname2_affichageimage."%' ORDER BY bpays.pays");

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 254 Messages

17 avr. 2006, 20:47

ATTENTION : dans un sprintf, tous les % litteral doivent etre echappé par un % donc si tu veux renvoyer un % tu doit mettre %%

Eléphant du PHP | 297 Messages

17 avr. 2006, 21:33

:D avec la soluce de Truc et la remarque de Lorenzo, ca marche tres bien !! donc en resumé :
$query_affichageimage = sprintf("SELECT * FROM bpays WHERE bpays.pays LIKE '%s%%' AND bpays.site LIKE '%s%%' ORDER BY bpays.pays", $colname_affichageimage,$colname2_affichageimage); 
merci beaucoup a vous deux :wink:

Invité
Invité n'ayant pas de compte PHPfrance

18 avr. 2006, 07:16

ATTENTION : dans un sprintf, tous les % litteral doivent etre echappé par un % donc si tu veux renvoyer un % tu doit mettre %%

Eléphant du PHP | 254 Messages

18 avr. 2006, 07:32

bordel, encore invité :?
ya qu'a moi que le forum en veut ? :)


donc tu aurais du mettre LIKE '%%%s%%' .... tu commence a comprendre pourquoi le sprintf n'est peut etre pas a sa bonne place ?