Affichage page par page ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage page par page ?

Re: re:

par Berzemus » 13 févr. 2008, 11:26

Code : Tout sélectionner

SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi='' LIMIT 0,15'; SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi='St Florent' LIMIT 0,15';
L'art de résoudre les erreurs SQL, c'est de lire les messages.
Rien ne te heurte dans ces requêtes ?

Moi, il me semble que dans la première, il manque quelque chôse, et que dans les deux y'a comme qui dirait un apostrophe en trop quelque part..

re:

par albius » 13 févr. 2008, 10:58

Petite évolution : il semblerait qu'il y ait eu une erreur de syntaxe dans la seconde requête:
$sql = 'SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi=\''.$BassinEmploi.'\' LIMIT '.$limite.','.$nombre.'\';';
Il manquait un \ après $BassinEmploi. Ce qui fait réagir le serveur maintenant dès l'affichage de la page
Erreur SQL! Impossible de communiquer avec la base de données.
SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi='' LIMIT 0,15';
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 ''' at line 1
Si je choisi en second temps une valeur dans la liste déroulante:
Erreur SQL! Impossible de communiquer avec la base de données.
SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi='St Florent' LIMIT 0,15';
You have an error in your SQL syntax;...
merci,

par d0m » 13 févr. 2008, 10:26

et en testant ta requête directement dans phpMyadmin (ou autre) y a t il des résultats?

re:

par albius » 13 févr. 2008, 10:23

Bonjour,

Non, c'est ça que je ne comprends pas, je n'ai rien venant du serveur...

par d0m » 13 févr. 2008, 09:50

l'exécution de la requête te renvoie elle un message d'erreur?

re:

par albius » 12 févr. 2008, 18:50

Bonsoir,

J'ai passé quelque tests d'affichage sur les requêtes. La première est pleinement opérationnelle:
// requête qui sélectionne le total des enregistrements à afficher pour $BassinEmploi
$select = 'SELECT count(IDZG) FROM zonegeographique WHERE BassinEmploi=\''.$BassinEmploi.'\';';
$result = mysql_query($select) or die ('Erreur : '.mysql_error());
$row = mysql_fetch_row($result);
$total = $row[0];
echo $total;
$total m'affiche bien le nombre de résultats en fonction de $BassinEmploi. En revanche, c'est la requête d'affichage limité qui ne vas pas du tout.
$sql = 'SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi=\''.$BassinEmploi.'LIMIT '.$limite.','.$nombre.'\';';
$result = mysql_query($sql) or die('Erreur SQL! Impossible de communiquer avec la base de données.<br>'.$sql.'<br>'.mysql_error());
Soit c'est la fonction 'limit' qui ne vas pas, soit c'est la requête. Mais je ne vois vraiment pas où peut se trouver l'erreur...

par d0m » 12 févr. 2008, 11:12

Si rien du tout n'est affiché c'est soit que :
- il y a un gros problème de syntaxe
- aucune instruction d'affichage est effectuée

Pour vérifier met un simple
echo 'ok'
par exemple à la fin de ton code, pas dans une condition ou une boucle.

Si ça marche alors tu es dans le 2ème cas :
Or tu n'affiches qu'à 2 endroits :
if($requete = mysql_query($select)){
// si on a récupéré un resultat on l'affiche dans un boucle
  if($total) { 
    while($data = mysql_fetch_array($requete)) {
//ici
      echo'<br><a href=\'javascript:popup("formZg.php?IdZg='.$data['IDZG'].'")\'>'.$data['Commune'].' ('.$data['CodePostal'].') '.$data['BassinEmploi'].'</a>\'';
    } // fin de la boucle
  } // fin de la condition de $total
} // fin de la condition requete
else {
//et ici
  echo 'Désolé, Pas d\'enregistrements dans cette table...';
}
Le problème vient de ce résultat :
if($requete = mysql_query($select))
qui n'est pas faux si aucune ligne n'est retourné, il est faux si la requête a échouée ce qui est différent!
Pour tester le nombre de lignes retourné il y a mysql_num_rows

PS : pense à incrémenter ton code c'est beaucoup plus lisible pour toi comme pour les autres.

Affichage page par page ?

par albius » 12 févr. 2008, 10:43

Bonjour,
J'essaye d'appliquer le tuto du même nom issu de PHP débutant. Mais malgré la qualité pédagogique, rien n'y fait. Rien ne se passe (le serveur ne me renvoie même pas d'erreur) Pourtant, il doit bien y en avoir puisque je n'ai aucun affichage. Le code:
//Système d'affichage page par page pour les résultats du choix des menus
// Nbre de résultats par page
$nombre = 15;

// Fonction qui vérifie la validité de $limite, variable servant à l'argument 'LIMIT' de la requête
function verifLimite($limite,$total,$nombre) {
if(is_numeric($limite)) {
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}

if (!$limite){
$limite = 0; // si on arrive sur la page pour la première fois, on met limite à 0
}

// On récupère le nom de la page qui sera utilisée dans les liens.
$path_parts = pathinfo($PHP_SELF);
$page = $path_parts["basename"];

// requête qui sélectionne le total des enregistrements à afficher pour $BassinEmploi ($BassinEmploi est une valeur provenant d'une liste déroulante)
$select = 'SELECT count(IDZG) FROM zonegeographique WHERE BassinEmploi=\''.$BassinEmploi.'\';';
$requete = mysql_query($select) or die('Erreur SQL! Nous avons un problème avec la base de données. Il sera résolu dans peu de temps <br>'.$select.'<br>'.mysql_error());
$result = mysql_fetch_row($requete);
$total = $result[0];

// emploi de la fonction verifLimite
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à Zéro
if(!$verifLimite) {
$limite = 0;
}

//Affichage limité du choix des menus
//Pour le bassin d'emploi
//requête
$select = 'SELECT IDZG, Commune, CodePostal, BassinEmploi FROM zonegeographique WHERE BassinEmploi=\''.$BassinEmploi.'LIMIT '.$limite.','.$nombre.'\';';
$requete = mysql_query($select) or die('Erreur SQL! Nous avons un problème avec la base de données. Il sera résolu dans peu de temps <br>'.$select.'<br>'.mysql_error());

//affichage des résultats de la requête avec le lien pointant sur la pop up pour modifier les données
if($requete = mysql_query($select)){
// si on a récupéré un resultat on l'affiche dans un boucle
if($total) {
while($data = mysql_fetch_array($requete)) {
echo'<br><a href=\'javascript:popup("formZg.php?IdZg='.$data['IDZG'].'")\'>'.$data['Commune'].' ('.$data['CodePostal'].') '.$data['BassinEmploi'].'</a>\'';
} // fin de la boucle
} // fin de la condition de $total
} // fin de la condition requete
else {
echo 'Désolé, Pas d\'enregistrements dans cette table...';
}
Merci de m'aider à y voir clair...