Kniva

Inscris le 28/05/2010 à 14:51
  • Nombre de sujets
    2
  • Nombre de messages
    31
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

Kniva
le 29/05/2010 à 14:16
problème pagination ( mysql)
Pourtant j'ai marqué le calcul pour la pagination:
<?php
function barre_naviguation($nb_total, $nb_affichage_par_page, $debut, $nb_liens_ds_la_barre)
{
$barre='';
/*on récupère l'URL courante munie de ses paramètres auxquels on ajoute le paramètre 'début' qui jouera le rôle du premier élément
de notre LIMIT*/
if($_SERVER['QUERY_STRING']== "")
{
$query=$_SERVER['PHP_SELF'].'?debut=';
}
else
{
$tableau=explode("debut=", $_SERVER['SUERY_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 calcule le numéro de la page active
$page_active=floor(($debut/$nb_affichage_par_page)+1);
//on calcule le nombre de pages totales que va prendre notre affichage
$nb_pages_tolal=ceil($nb_total/$nb_affichage_par_page);
//on calcule le premier numero qui va s'afficher, ainsi que le dernier($cpt_deb et $cpt_fin)
if($nb_liens_ds_la_barre%2==0)
{
$cpt_deb1=$page_active-($nb_liens_ds_la_barre/2)+1;
$cpt_fin1=$page_active+($nb_liens_ds_la_barre/2);
}
else
{
$cpt_deb1=$page_active-floor(($nb_liens_ds_la_barre/2));
$cpt_fin1=$page_active+floor(($nb_liens_ds_la_barre/2));
}
if($cpt_deb1<=1)
{
$cpt_deb=1;
$cpt_fin=$nb_liens_ds_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_ds_la_barre)+1;
$cpt_fin=$nb_pages_total;
}
if($nb_pages_total<=$nb_liens_ds_la_barre)
{
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}
//si les 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 ts les liens ds notre barre, tt en vérifiant de ne pas mettre de lien pr la page active
for($cpt=$cpt_deb;$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>&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 naviguation, on affiche un >> qui sera un lien vers la dernière page
de naviguation.*/
if($cpt_fin!=$nb_pages_total)
{
$cible=$query.$fin;
$lien='&nbsp;&nbsp;<a href="' .$cible. '">&gt;&gt;</a>';
}
else
{
$lien='';
}
$barre .=$lien;
return $barre;
}
?>
Kniva
le 29/05/2010 à 13:08
problème pagination ( mysql)
Merci beaucoup, j'ai vraiment pas les yeux en face des trous.
J'ai encore deux questions:

Pourquoi j'ai encore
dvdTitre dvdImage
dvdDate
dvdEditeur
dvdDescription
qui s'affiche su ma page? Et apparemment mon code au dessus pour la pagination ne fonctionne pas.


Ma deuxième question est juste de savoir si c'était possible de pouvoir stocker dans la base de donnée du code HTML. J aimerai mettre le lien d'une image hébergée dans la base, mais je ne sais pas si c'est possible
Kniva
le 29/05/2010 à 11:59
problème pagination ( mysql)
Désolé avec toutes ces questions, mais je ne vois pas cette parenthèse de trop.
Je suis vraiment trop sur ce code je crois ( si rêver de ligne de code signifie folie, je suis bonne pour l'asile)
Kniva
le 29/05/2010 à 09:30
problème pagination ( mysql)
Merci beaucoup mais ça ne marche toujours pas.
Voici le code dernièrement changé
<?php
include("inf.php");
//on se connecte à notre base
$base=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$base);
/*on prépare une requête permettant de calculer le nbre total d'éléments qu'il faudra afficher sur
nos différentes pages*/
$sql='SELECT count(*) FROM DVD';
//on exécute cette requête
$resultat=mysql_query($sql,$base) or die ('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
//on récupère le nombre d'élements à afficher
$nb_total=mysql_fetch_array($resultat);
//on teste si ce nombre ne vaut pas 0
if(($nb_total=$nb_total[0])==0)
{
echo"Aucune réponse trouvée";
}
else
{
echo'<center><table border="1" width="600">
<tr><td>dvdTitre</td><td rowspan="4">dvdImage</td></tr>
<tr><td>dvdDate</td></tr>
<tr><td>dvdEditeur</td></tr>
<tr><td>dvdDescription</td></tr>
</table></center>';
}
/*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=3;
//preparation de la requete avec le LIMIT
$sql='SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage) FROM DVD ORDER BY dvdDate DESC LIMIT '
. $_GET['debut'] . ','. $nb_affichage_par_page;
//on exécute la requete
$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 affiche les résultats ds la <table>
echo'<center><table border="1" width="600"><tr><td>'. htmlentities (trim($data['dvdTitre'])).'</td></tr>';
echo'<tr><td>'. htmlentities (trim($data['dvdImage'])).'</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdDate'])) .'</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdEditeur'])). '</td></tr>';
echo'<tr><td>' . htmlentities (trim($data['dvdDescription'])). '</td></tr>';
}
//on libere l'espace memoire alloué pour cette requete
mysql_free_result($req);
echo'</table></center><br><br>';
//on affiche enfin notre barre
echo'<span class="gras">' . barre_naviguation($nb_total,$nb_affichage_par_page, $_GET['debut'], 5) . '</span>';
}
//on libère l'espace memoire alloué pour cette reuqête
mysql_free_result($resultat);
echo'</table><br/>';
?>



et j'obtiens ceci

dvdTitre dvdImage
dvdDate
dvdEditeur
dvdDescription
Erreur SQL!
SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage) FROM DVD ORDER BY dvdDate DESC LIMIT 0,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 ') FROM DVD ORDER BY dvdDate DESC LIMIT 0,3' at line 1
Kniva
le 28/05/2010 à 23:32
problème pagination ( mysql)
Ne pas voir que j'ai mis 3 rrr, j'ai vraiment plus les yeux en face des trous.

J'ai donc rechanger mon code, et j'ai mis
<?php
$base=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$base);
/*on prépare une requête permettant de calculer le nbre total d'éléments qu'il faudra afficher sur
nos différentes pages*/
$sql='SELECT count (*) FROM CD';
//on exécute cette requête
$resultat=mysql_query($sql,$base) or die ('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
//on récupère le nombre d'élements à afficher
$nb_total=mysql_fetch_array($resultat);
?>


Mais malheureusement, j'ai ça maintenant:


Erreur SQL!
SELECT count (*) FROM CD
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 '*) FROM CD' at line 1
Kniva
le 28/05/2010 à 20:12
problème pagination ( mysql)
Merci beaucoup pour ton aide.
Encore une petite question et normalement j'arrête avec mes questions.

J'ai une vieille erreur qui resurgit à cette ligne

?php
$resultat=mysql_query($sql,$base) or die ('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_errror());
?>


J'ai cette erreur qui apparait

Fatal error: Call to undefined function mysql_errror() in /mnt/web9/31/99/52403599/htdocs/DVD.php on line 251
Kniva
le 28/05/2010 à 17:33
problème pagination ( mysql)
Je t'embrasserais presque ( pardon, je m'emporte, mais ça fait 24h que je bosse la dessus, et à la fin, on ne vois même plus les lignes justes des lignes fausses).

Bon c'est mieux que tout à l'heure, j 'ai quelque chose qui s'affiche, mais pas comme je voudrais. J'ai:

Aucune réponse trouvée
.....
Et ensuite le nom, la date la description du premier article, mais pas la suite, alors qu'il y a plusieurs articles
Kniva
le 28/05/2010 à 17:18
problème pagination ( mysql)
je ne remontre pas toute la page de code, juste les lignes qui posent problème

<?php
if(!isset ($_GET['debut']))
{
$_GET['debut']=0;
$nb_affichage_par_page=1;
//preparation de la requete avec le LIMIT
$sql='SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC ' . $_GET['debut'] . ','. $nb_affichage_par_page;
//on exécute la requete
$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))?>


Et j'ai toujours la même erreur

Aucune réponse trouvéeErreur SQL!
SELECT dvdTitre, dvdDate, dvdEditeur, dvdDescription, dvdImage FROM DVD ORDER BY dvdDate DESC 0,1
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 '0,1' at line 1
Kniva
le 28/05/2010 à 16:47
problème pagination ( mysql)
C'est fait, mais ça ne change rien.
Je sais que j'avais retirer ce qui suivait mon DESC, tout ce qui était dans ma base de données s'affichait, mais je n'avait aucune pagination
Kniva
le 28/05/2010 à 15:52
problème pagination ( mysql)
Mais il y a déjà un espace entre le DESC et le 0, j'ai même fait un saut à la ligne pour avoir tout de visible sur mon écran
LoadingChargement en cours