docfunky

Inscris le 15/11/2010 à 15:00
  • Nombre de sujets
    1
  • Nombre de messages
    2
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
docfunky
bonjour, ce sujet concerne directement le Topic suivant :
http://www.lephpfacile.com/howto/6-comment-faire-un-affichage-page-par-page-en-php

Voila, j'ai souahité reprendre ce code, mais IE 6 me reprends la totalité de mon tableau, ne m'affiche aucune pages ( j'ai juste un chiffre 1) et IE 6 me lance les erreurs suivantes :

PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 37 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 101 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 101 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 102

je vous livre cidessou le code que j'ai essayé d'adapter librement.

<?php 


// On trie les résultats pour les afficher par 50 dans des pages différentes.

function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {

$barre = '';

// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}

// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
}
else {
$lien='';
}
$barre .= $lien;

// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.'&nbsp;-&nbsp;';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {

$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
}
}
}

$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
}
else {
$lien='';
}
$barre .= $lien;

return $barre;
}

// fonction de préprod ?
//localhost-préproduction : serveur sur lequel on est
//$serverLchost= "*****";
//$bdLchost="******";
//$userIDLchost ="****";
//$passwordLchost="*****";

//NSM test DB : serveur sur lequel se situe la base de donnée NSM R11 préprod
if(!isset($bdd)){
$bdd=NULL;
}
if(!isset($attribute)){
$attribute=NULL;
}
//$serverNSM="******";
//$bdNSM="NSMADMIN"; // user admin NSM base de donnée compte admin de l'enveloppe/instance
//$userIDNSM ="*****"; // User admin NSM compte admin de la base de donnée
//$passwordNSM="******"; // Mdp


// On se connecte à SQLServer, et l'on trie les résultats par 50 suivant la page demandée


//if(page==1){
$req = "SELECT * FROM Unmanage_Table ";
// }elseif (page==2){
// $req = "SELECT * FROM Unmanage_Table LIMIT 50,100";
// }elseif (page==3){
// $req = "SELECT * FROM Unmanage_Table LIMIT 100, 150";
// }elseif (page==4){
// $req = "SELECT * FROM Unmanage_Table LIMIT 150, 200";
// }elseif (page==5){
// $req = "SELECT * FROM Unmanage_Table LIMIT 200, 250";
// }elseif (page==6){
// $req = "SELECT * FROM Unmanage_Table LIMIT 250, 300";
// }elseif (page==7){
// $req = "SELECT * FROM Unmanage_Table LIMIT 300, 350";
// }elseif (page==8){
// $req = "SELECT * FROM Unmanage_Table LIMIT 350, 400";
// }elseif (page==9){
// $req = "SELECT * FROM Unmanage_Table LIMIT 400, 450";
// }elseif (page==10){
// $req = "SELECT * FROM Unmanage_Table LIMIT 450, 500";
// }elseif (page==11){
// $req = "SELECT * FROM Unmanage_Table LIMIT 500, 550";
// }elseif (page==12){
// $req = "SELECT * FROM Unmanage_Table LIMIT 550, 600";
// }elseif (page==13){
// $req = "SELECT * FROM Unmanage_Table LIMIT 600, 650";
// }elseif (page==14){
// $req = "SELECT * FROM Unmanage_Table LIMIT 650, 700";
// }elseif (page==15){
// $req = "SELECT * FROM Unmanage_Table LIMIT 700, 750";
// }


// On se connecte à SQLServer

try {
$bdd = new PDO('mssql:host=DVATFSUP01\SDVSUP1;dbname=Unmanage', 'sa', 'catherin1');
$bdd-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// on exécute la requête
$reponse = $bdd->query($req);
// on récupère le nombre d'éléments à afficher
$nb_total = $bdd->query("SELECT O.name AS Table_Name, I.rows AS Rows_Count FROM sys.sysobjects AS O INNER JOIN sys.sysindexes AS I ON O.id = I.id WHERE (O.xtype = 'U')");

} catch(PDOException $pdoE) {
echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage();
} catch(Exception $e) {
echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage();
}


// on teste si ce nombre de vaut pas 0
?>
<div id="body" >

<table id="myTable" class="tablesorter" >
<thead>
<tr>
<th><strong>Nom du serveur</strong></th>
<th>Categorie de l\'incident</th>
<th>Duree de l'incident</th>
<th>Numéro d'incident</th>
<th>Commentaire</th>
<th>Utilisateur</th>
<th>Effectué le</th>
<th>Statut</th>
</tr>
</thead>
<?php

// 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 * FROM (
SELECT TOP ".$_GET['debut']."-- actually bottom five of the top fifteen (seek 10)
*
FROM
(
SELECT TOP ".$nb_affichage_par_page."
*
FROM
Unmanage_Table
ORDER BY
date
) AS T -- why is this necessary?
ORDER BY
T.date DESC
) AS T -- why is this necessary?
ORDER BY T.date -- fix order;";

// on exécute la requête

try {
$req = $bdd->query($sql);
} catch(PDOException $pdoE) {
echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage();
} catch(Exception $e) {
echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage();
}
// on va scanner tous les tuples un par un
while ($donnees = $reponse->fetch()) {
// on affiches les résultats dans la <table>
echo "<tr>";
echo "<tr>".PHP_EOL;
echo '<th>'.$donnees['server_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['cat'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['duree'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['incident_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['motif'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['utilisateur_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['date'].' à telle heure </th>'.PHP_EOL;
echo '<th>'.$donnees['statut'].'</th>'.PHP_EOL;
echo "</tr>".PHP_EOL; //pour la lisibilite du source généré ;-)
}
// on libère l'espace mémoire alloué pour cette requête
$reponse->closeCursor();

// 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'], 3).'</span>';

// on libère l'espace mémoire alloué pour cette requête
//mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
//mysql_close ();
echo '</table><br />'; ?>


les lignes 37,101 et 102 sont les suivantes :
37:
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

101 à 105 :
$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

Voila, vu que je ne suis pas l'auteur de ce code, je n'arrive pas à en comprendre toute ses subtilitées, y compris les erreurs que me sort IE6.

Merci pour votre aide :)

Ses derniers messages sur les forums

forum
docfunky
Okay, mais j'ai du mal à l'adapter à sql server et les requètes par objet ...
en tout cas tu me dis donc que la, en continuant de la sorte je ne suis pas près d'obtenir un truc qui marche et qu'il vaut mieux recommencer ?
docfunky
bonjour, ce sujet concerne directement le Topic suivant :
http://www.lephpfacile.com/howto/6-comment-faire-un-affichage-page-par-page-en-php

Voila, j'ai souahité reprendre ce code, mais IE 6 me reprends la totalité de mon tableau, ne m'affiche aucune pages ( j'ai juste un chiffre 1) et IE 6 me lance les erreurs suivantes :

PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 37 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 101 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 101 PHP Notice: Object of class PDOStatement could not be converted to int in C:\www\Unmanage\connect.inc.php on line 102

je vous livre cidessou le code que j'ai essayé d'adapter librement.

<?php 


// On trie les résultats pour les afficher par 50 dans des pages différentes.

function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {

$barre = '';

// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}

// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
}
else {
$lien='';
}
$barre .= $lien;

// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.'&nbsp;-&nbsp;';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {

$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
}
}
}

$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
}
else {
$lien='';
}
$barre .= $lien;

return $barre;
}

// fonction de préprod ?
//localhost-préproduction : serveur sur lequel on est
//$serverLchost= "*****";
//$bdLchost="******";
//$userIDLchost ="****";
//$passwordLchost="*****";

//NSM test DB : serveur sur lequel se situe la base de donnée NSM R11 préprod
if(!isset($bdd)){
$bdd=NULL;
}
if(!isset($attribute)){
$attribute=NULL;
}
//$serverNSM="******";
//$bdNSM="NSMADMIN"; // user admin NSM base de donnée compte admin de l'enveloppe/instance
//$userIDNSM ="*****"; // User admin NSM compte admin de la base de donnée
//$passwordNSM="******"; // Mdp


// On se connecte à SQLServer, et l'on trie les résultats par 50 suivant la page demandée


//if(page==1){
$req = "SELECT * FROM Unmanage_Table ";
// }elseif (page==2){
// $req = "SELECT * FROM Unmanage_Table LIMIT 50,100";
// }elseif (page==3){
// $req = "SELECT * FROM Unmanage_Table LIMIT 100, 150";
// }elseif (page==4){
// $req = "SELECT * FROM Unmanage_Table LIMIT 150, 200";
// }elseif (page==5){
// $req = "SELECT * FROM Unmanage_Table LIMIT 200, 250";
// }elseif (page==6){
// $req = "SELECT * FROM Unmanage_Table LIMIT 250, 300";
// }elseif (page==7){
// $req = "SELECT * FROM Unmanage_Table LIMIT 300, 350";
// }elseif (page==8){
// $req = "SELECT * FROM Unmanage_Table LIMIT 350, 400";
// }elseif (page==9){
// $req = "SELECT * FROM Unmanage_Table LIMIT 400, 450";
// }elseif (page==10){
// $req = "SELECT * FROM Unmanage_Table LIMIT 450, 500";
// }elseif (page==11){
// $req = "SELECT * FROM Unmanage_Table LIMIT 500, 550";
// }elseif (page==12){
// $req = "SELECT * FROM Unmanage_Table LIMIT 550, 600";
// }elseif (page==13){
// $req = "SELECT * FROM Unmanage_Table LIMIT 600, 650";
// }elseif (page==14){
// $req = "SELECT * FROM Unmanage_Table LIMIT 650, 700";
// }elseif (page==15){
// $req = "SELECT * FROM Unmanage_Table LIMIT 700, 750";
// }


// On se connecte à SQLServer

try {
$bdd = new PDO('mssql:host=DVATFSUP01\SDVSUP1;dbname=Unmanage', 'sa', 'catherin1');
$bdd-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// on exécute la requête
$reponse = $bdd->query($req);
// on récupère le nombre d'éléments à afficher
$nb_total = $bdd->query("SELECT O.name AS Table_Name, I.rows AS Rows_Count FROM sys.sysobjects AS O INNER JOIN sys.sysindexes AS I ON O.id = I.id WHERE (O.xtype = 'U')");

} catch(PDOException $pdoE) {
echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage();
} catch(Exception $e) {
echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage();
}


// on teste si ce nombre de vaut pas 0
?>
<div id="body" >

<table id="myTable" class="tablesorter" >
<thead>
<tr>
<th><strong>Nom du serveur</strong></th>
<th>Categorie de l\'incident</th>
<th>Duree de l'incident</th>
<th>Numéro d'incident</th>
<th>Commentaire</th>
<th>Utilisateur</th>
<th>Effectué le</th>
<th>Statut</th>
</tr>
</thead>
<?php

// 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 * FROM (
SELECT TOP ".$_GET['debut']."-- actually bottom five of the top fifteen (seek 10)
*
FROM
(
SELECT TOP ".$nb_affichage_par_page."
*
FROM
Unmanage_Table
ORDER BY
date
) AS T -- why is this necessary?
ORDER BY
T.date DESC
) AS T -- why is this necessary?
ORDER BY T.date -- fix order;";

// on exécute la requête

try {
$req = $bdd->query($sql);
} catch(PDOException $pdoE) {
echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage();
} catch(Exception $e) {
echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage();
}
// on va scanner tous les tuples un par un
while ($donnees = $reponse->fetch()) {
// on affiches les résultats dans la <table>
echo "<tr>";
echo "<tr>".PHP_EOL;
echo '<th>'.$donnees['server_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['cat'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['duree'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['incident_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['motif'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['utilisateur_id'].'</th>'.PHP_EOL;
echo '<th>'.$donnees['date'].' à telle heure </th>'.PHP_EOL;
echo '<th>'.$donnees['statut'].'</th>'.PHP_EOL;
echo "</tr>".PHP_EOL; //pour la lisibilite du source généré ;-)
}
// on libère l'espace mémoire alloué pour cette requête
$reponse->closeCursor();

// 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'], 3).'</span>';

// on libère l'espace mémoire alloué pour cette requête
//mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
//mysql_close ();
echo '</table><br />'; ?>


les lignes 37,101 et 102 sont les suivantes :
37:
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

101 à 105 :
$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

Voila, vu que je ne suis pas l'auteur de ce code, je n'arrive pas à en comprendre toute ses subtilitées, y compris les erreurs que me sort IE6.

Merci pour votre aide :)

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours