Problème de pagination

Répondre
rafale69300
le 03/07/2009 à 15:11
rafale69300
Oui puisque l'id du formulaire est site donc normalement oui. Je viens de tester que si je mets la balise </form> après le <select> cela me donne toujours pas le résultat voulu.
Jérémy
LA GLOBULE
le 03/07/2009 à 15:30
LA GLOBULE
C'est juste que le navigateur ne tient pas compte du query_string contenu dans l'action du formulaire.
rafale69300
le 03/07/2009 à 15:35
rafale69300
J'ai testé sur 3 navigateurs (IE,FF, Chrome) et cela ne marche pas mieux
Jérémy
LupusMic
le 04/07/2009 à 07:41
LupusMic
Pourquoi fais-tu référence à un objet global (document.forms) alors que tu as déjà tout ce qu'il faut dans le le onchange ?

<select name="choix" onchange="this.form.submit();">


En fait, le bout de code de l'attribut onchange sert de corps de fonction, fonction appliquée sur l'objet Javascript correspondant à l'élément lui-même détenteur de l'attribut HTML onchange.

En gros, le code suivant est exécuté lors du onchange :
function (event)
{
// Contenu de l'attribut onchange
this.form.submit();
}
.call(element, onchangeEvent) ;


Donc ici, element correspond à l'élément HTML que tu as équipé d'un onchange. Dans notre cas, element, qui dans la fonction sera this, est un objet prototypé à partir de HTMLSelectElement. Cet objet à des propriétés, dont un attribut (d'objet, pas d'élément) form, qui donne accès au formulaire auquel est lié ton élément select.

Au fait, c'est onchange et non onChange.

Si le fonctionnement n'est toujours pas celui attendu, c'est qu'il y a une erreur javascript qui casse tout. Donc il faut premièrement regarder la console d'erreurs de ton navigateur.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
rafale69300
le 06/07/2009 à 09:23
rafale69300
il n'y a aucune erreur javascript, j'ai vérifié à la console d'erreur.
Jérémy
rafale69300
le 06/07/2009 à 14:43
rafale69300
J'ai réussi à corrigé mon erreur à moitié, je m'explique : j'ai gardé ma varicable $_POST en session mais maintenant je n'arrive pas à la détruire au bon endroit dans mon code je pense qu'il faut utiliser unset($_SESSION['choix']);mais je ne vois pas où le placé peut être que je me suis trompé sur la syntaxe aussi. Merci pour votre aide, je vous laisse mon code.

<form name="formulaire" action="./index.php?page=test&categorie=search" method="post" id="site">
</p>
<p align="center"><?php $requete='SELECT id_site,lib_site FROM sites order by lib_site';
$resultat= mysql_query($requete);?>
<select name="choix" onChange="document.forms['site'].submit();">
<option value="0">Choisissez un site</option>
<?php
while ($donnees = mysql_fetch_array($resultat)){
echo '<option value='.$donnees[0].'>';
echo $donnees[1];
echo'</option>';
}
?>
</select> </form>
<?php
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
if(isset($_POST['choix']))
$_SESSION['choix'] = $_POST['choix'] ;{
$sql = 'SELECT count(*) FROM batiments where id_site = '.$_SESSION['choix'].' ';

// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo '&nbsp;&nbsp;&nbsp;&nbsp;Aucune r&eacute;ponse trouv&eacute;e';
}
else { ?>
<p align="center">
<p align="center">
<p align="center">
<?php if(isset($_POST['choix']))
$_SESSION['choix'] = $_POST['choix'] ;{
$requete2="SELECT lib_site FROM sites
WHERE id_site ='".$_SESSION['choix']."'
";
$resultat2=mysql_query($requete2);
while ($donnees2 = mysql_fetch_array($resultat2)){
?>

Voici tous les b&acirc;timents du site suivant : <strong><?php echo $donnees2['lib_site'];?></strong><br><br>Pour plus d'informations sur un b&acirc;timent, cliquez sur son nom.<br><br><?php }

echo '<div align="center"><table width="500px" border="1" align="center">
<tr>
<td><div align="center"><strong>Code B&acirc;timent</strong></div></td>
<td><div align="center"><strong>Nom B&acirc;timent</strong></div></td>
<td><div align="center"><strong>Nb Etage B&acirc;timent</strong></div></td>
<td><div align="center"><strong>Fonction B&acirc;timent</strong></div></td>
</tr>';

// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 1;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT code_bat, nom_bat, nbEtage_bat, fct_bat, id_bat, lib_site FROM batiments B, sites S
WHERE B.id_site='.$_SESSION['choix'].'
AND S.id_site = B.id_site
ORDER BY code_bat ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;


// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on affiches les résultats dans la <table> ?>
<tr><td><div align="center"><?php echo $data['code_bat'];?></div></td><td><div align="center"><?php
echo '<a href="./index.php?page=info_bat&categorie=batiment&choix='.$data['id_bat'].'">'.$data['nom_bat'].'</a>';?></div></td><td><div align="center"><?php
echo $data['nbEtage_bat'];?></div></td><td><div align="center"><?php
echo $data['fct_bat'];?></div></td></tr><?php
}

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
echo '</table><br />';

// on affiche enfin notre barre
echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 1).'</span>';

}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);

echo '</table><br />';
}
?>
</div></p>
<?php }
?>
Jérémy
kouas
le 03/09/2009 à 17:34
kouas
<?php 
//demarrage dune session
session_start() ;
include("connect.php");
// include your code to connect to DB.
include('paginate.php');

//Connexion
connexion1 () ;
$city=$_POST['city'];
$category=$_POST['category'];

/* Calcul du nombre total d'entrées $total dans la table posts */
$query = "SELECT count(*) FROM a WHERE ville = '$city' AND rubrique = '$category'";
$res = mysql_query($query);
$row = mysql_fetch_row($res);
$total = $row[0];
/* Libération du résultat */
mysql_free_result($res);
/* Déclaration des variables */
$epp = 3; // nombre d'entrées à afficher par page (entries per page)
$countp = ceil($total/$epp); // calcul du nombre de pages $countp (on arrondit à l'entier supérieur avec la fonction ceil() )
/* Récupération du numéro de la page courante depuis l'URL avec la méthode GET */
if(!isset($_GET['p']) || !is_numeric($_GET['p']) ) // si $_GET['p'] n'existe pas OU $_GET['p'] n'est pas un nombre (petite sécurité supplémentaire)
$current = 1; // la page courante devient 1
else
{
$page = intval($_GET['p']); // stockage de la valeur entière uniquement
if ($page < 1) $current=1; // cas où le numéro de page est inférieure 1 : on affecte 1 à la page courante
elseif ($page > $countp) $current=$countp; //cas où le numéro de page est supérieur au nombre total de pages : on affecte le numéro de la dernière page à la page courante
else $current=$page; // sinon la page courante est bien celle indiquée dans l'URL
}
/* $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante) */
$start = ($current * $epp - $epp);
/* Récupération des données à afficher pour la page courante */
$qry = "SELECT id FROM a WHERE ville = '$city' AND rubrique = '$category' LIMIT $start, $epp";
$res = mysql_query($qry);
if ($res)
{
/* Affichage des données */
echo "<ul>\n";
while($item = mysql_fetch_array($res)) {
echo "<li>" .$item['id']. "</li>\n";
echo "<li>" .$item['ville']. "</li>\n";
echo "<li>" .$item['quartier']. "</li>\n";

}
echo "</ul>\n";
/* Libération du résultat */
mysql_free_result($res);
}
else { die ("Erreur dans le query: $qry " .mysql_error());
}
?>
<?php
/* Appel de la fonction */
echo paginate($_SERVER['PHP_SELF'], '?p=', $countp, $current);
?>


Merci d'utiliser le BB-Code, ca fait plaisir de voir que peu de personnes lisent les conditions d'utilisation des forums
cyril
kouas
le 03/09/2009 à 17:39
kouas
Salut a tous , j'ai un gros souci , j'ai recupérer ce script de pagination; jai beau le tourner dans les sens il n'ya que la page une qui s'affiche sur la page 2 j'ai :
////////////////////////
Erreur dans le query: SELECT id FROM a WHERE ville = '' AND rubrique = '' LIMIT -3, 3 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 '-3, 3' at line 1
/////////

je voudrais selectioner seulement les lignes qui correspondent a une ceratine ville et rubrique et pas fair un count sur toute ma table /
UN PEU DAIDE SVP A VOUS LES SPECIALITES
cyril
driman
le 06/04/2010 à 09:47
driman
Salut rafale69300, alors tu as trouvé la solution pour la pagination...J'ai exactement le même problème. J'ai épuisé toutes armes que j'avais en main.

Si tu peux me donner une piste, ça serait cool ;). Merci d'avance.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours