affichage des données de ma base

Eléphanteau du PHP | 32 Messages

05 août 2005, 17:30

bonjour j'ai encore besoin d'aide, je cherche a afficher les resultats 5 par page
et voici l ebout de code
<?
require_once("connexion.php");
$connexion = mysql_connect($server, $user, $motdepasse);
if ($connexion) echo "Connexion au serveur réussie";
else echo "Connexion au serveur ratée";
$connexion2 = mysql_select_db($base);
if ($connexion2) echo "Connexion à la base réussie";
else echo "Connexion à la base ratée";

$resultat=mysql_query($requete,$connexion) or die ('Erreur : '.mysql_error() );
echo $requete; 
$nb_resultats = mysql_num_rows($resultat); // compte le nombre de résultats de la requète
echo $nb_resultats;

$debut=0;
$requete='select * from produit where nomf="toto" order by nomproduit ASC LIMIT $debut,5';
$resultat=mysql_query($requete,$connexion);
$nb_resultats = mysql_num_rows($resultat); // compte le nombre de résultats de la requète-->

echo $nb_resultats;

if($debut == "0")
# si la variable "$debut" est égal à zéro, c'est que l'on est au début des résultats, alors on affiche
# seulement le bouton "suivants"
    {
    $debut = $debut + 5; // on ajoute 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[suivants >>]</a>";
    }

elseif($nb_resultats == "5" AND $debut != "0")
# si le nombre de résultats est égal à 5 ET que la variable de début est différente de zéro, alors c'est que 
# l'on est ni au début ni à la fin des résultats, donc on affiche les boutons "suivants" et précédents à la foi
    {
    $debut = $debut - 5; // on retire 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[<< précédents]</a>&nbsp;";
    $debut = $debut + 10; // ici, on rajoute 10 à "$debut", forcément car on à retiré 5 a cette variable deux lignes plus haut!
    echo "<a href='titi.php?debut=$debut'>[suivants >>]</a>";
    }

elseif($nb_resultats < "5")
# si le nombre de résultats est inférieur à 5, alors c'est que l'on a atteint
# la fin des résultats, donc on affiche seulement le bouton "précedents"
    {	--> ligne 45
    $debut = $debut - 5; // on retire 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[<< précédents]</a>";
    }

while ($ligne = mysql_fetch_array($resultat)) 
{
?>
	<table border="1" bordercolor="#000000">  		
			<tr>
				<td bgcolor="#00CC33">Nom Produit </td> <td><?php echo $ligne["nomproduit"];?></td>							
				<? if ($ligne["description"]!= "") //si le champ application de la table produit est vide 			
				{ ?>
					<td bgcolor="#00CC33">Description </td> <td><?php echo($ligne ["description"]);?></td>
			<? 	}?> 
			</tr>
	</table>
	
<?	if($debut == "0")
# si la variable "$debut" est égal à zéro, c'est que l'on est au début des résultats, alors on affiche
# seulement le bouton "suivants"
    {
    $debut = $debut + 5; // on ajoute 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[suivants >>]</a>";
    }

elseif($nb_resultats == "5" AND $debut != "0")
# si le nombre de résultats est égal à 5 ET que la variable de début est différente de zéro, alors c'est que 
# l'on est ni au début ni à la fin des résultats, donc on affiche les boutons "suivants" et précédents à la foi
    {
    $debut = $debut - 5; // on retire 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[<< précédents]</a>&nbsp;";
    $debut = $debut + 10; // ici, on rajoute 10 à "$debut", forcément car on à retiré 5 a cette variable deux lignes plus haut!
    echo "<a href='titi.php?debut=$debut'>[suivants >>]</a>";
    }

elseif($nb_resultats < "5")
# si le nombre de résultats est inférieur à 5, alors c'est que l'on a atteint
# la fin des résultats, donc on affiche seulement le bouton "précedents"
    {
    $debut = $debut - 5; // on retire 5 à la variable "$debut"
    echo "<a href='titi.php?debut=$debut'>[<< précédents]</a>";
    }

}

mysql_close();

?>
et c'est ce message d'erreur qui s'affiche
Connexion au serveur réussieConnexion à la base réussieErreur : Erreur de syntaxe près de '$debut, 5' à la ligne 1

si quelqu'un peut m'aider je veux bien
merci d'avance

Mammouth du PHP | 19672 Messages

05 août 2005, 18:15

Ok, un peu d'optimisation et une correction dans le début de ton code:
<?
require_once("connexion.php");

$connexion = mysql_connect($server, $user, $motdepasse);
echo "Connexion au serveur ". $connexion ? "réussie": "ratée";

$connexion2 = mysql_select_db($base);
echo "Connexion à la base ". $connexion2 ? "réussie": "ratée";

$resultat=mysql_query($requete,$connexion) or die ('Erreur : '.mysql_error() );
echo $requete;
$nb_resultats = mysql_num_rows($resultat); // compte le nombre de résultats de la requète
echo $nb_resultats;

$debut = 0;
$requete = "SELECT * FROM produit WHERE nomf='toto' ORDER BY nomproduit ASC LIMIT ". $debut .",5";
La simplification, regarde les lignes après la connexion au serveur : deux lignes au lieu de 12, sympa non ?

Bon, ensuite l'erreur : observe bien la requête SQL, j'y ai fait un changement, pas gros en apparence, mais majeur dans la réussite du fonctionnement.
Connexion au serveur réussieConnexion à la base réussieErreur : Erreur de syntaxe près de '$debut, 5' à la ligne 1
Ça veut dire que ta requête envoyait non pas la valeur de la variable $debut mais "$debut" tel quel. Pourquoi ? parce que tu avais encadré ta requête d'apostrophes et tu n'as pas fait la séparation des langages PHP/SQL dans une concaténation. Résultat, la variable a été traitée comme une chaine de caractère normale.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

05 août 2005, 18:17

merci beaucoup
je teste et je te mets au courant

Invité
Invité n'ayant pas de compte PHPfrance

05 août 2005, 18:37

j'ai changé la requete il m'affihe les resultats qui sont normalement au nombre de 7 mais il ya que 5 enregistremenst qui sont affichés
et au début il affiche cette phrase

réussieréussie5[suivants >>]

et aussi quand je clique sur le lien suivant c'est la meme page qui s'affiche

Mammouth du PHP | 19672 Messages

05 août 2005, 19:25

C'est un progrès et pour la première page, tout fonctionne donc bien. Maintenant, il faut avoir les enregistrements suivants dans la page suivante.
Tu vas donc remplacer une ligne : là où il y a
$debut = 0;
tu vas mettre :
$debut = isset($_GET['debut']) ? $_GET['debut'] : 0;
Et là, ça devrait t'afficher la suite normalement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

05 août 2005, 19:36

c'est formidable, ça marcheeeeeeeee fantastique

depuis hier je bute sur ça et voila que vous m'avez aidé, je vous remercie

Mammouth du PHP | 19672 Messages

05 août 2005, 19:39

[Résolu] alors :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

08 août 2005, 08:42

bonjour Cyrano,
en fin de compte, quand j'arrive au dernier enregistrement, il m'affiche quand meme suivant alors qu'il n'était pas censé le faire et quand je clique sur le lien il n'affiche pas d'erreur mais une page vide
merci
je penserai à mettre le résolu

Mammouth du PHP | 19672 Messages

08 août 2005, 08:56

Bien, alors il faut ajouter une alternative: lors de la requête, tu peux récupérer le nombre total de lignes et définir le nombre de pages. À partir de là, tu peux faire en sorte d'afficher ou non "Page suivante" ou "Page précédente"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

08 août 2005, 09:04

j'aiffiche 1 résultat par page et voici les conditions
<? elseif($nb_resultats < "1")
# si le nombre de résultats est inférieur à 1, alors c'est que l'on a atteint
# la fin des résultats, donc on affiche seulement le bouton "précedents"
    {
    $debut = $debut - 1; // on retire 1 à la variable "$debut"
    echo "<a href='page.php?debut=$debut'>[<< précédents]</a>";?>
    }

Mammouth du PHP | 19672 Messages

08 août 2005, 09:06

heu... oui, et.... ? Ça fonctionne ou pas ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

08 août 2005, 09:21

Non il m'affiche toujours suivant meme a la derniere page

Mammouth du PHP | 19672 Messages

08 août 2005, 10:08

Bon, je vais te mettre un extrait d'un de mes codes. Ne fais pas trop attention aux méthodes d'accès aux données, j'y utilise une classe objet maison, mais regarde bien le reste en suivant les commentaires, ça devrait t'aider à comprendre comment faire.
<?php
/* Construction de la requête de vérification */
$requete = "SELECT id_media, multimedia.id_type, multimedia.id_img, nom_img, larg_a, haut_a, larg_v, haut_v, montant, titre_mult, desc_mult ".
"FROM multimedia, prix, images, typemedia ".
"WHERE multimedia.id_type = typemedia.id_type ".
"AND multimedia.id_img = images.id_img ".
"AND multimedia.id_prix = prix.id_prix ".
"AND typemedia.nom_type = 'cd' ".
"ORDER BY id_media DESC";
/* Connexion au serveur MySQL */
$connectcd = new connexion($requete);
$connectcd->connecter();

/* Récupération du nombre total de lignes */
$resultat = $connectcd->nombre_ligne();
$connectcd->deconnecter();
if($resultat != false && $resultat > 0)
{
    // echo($resultat);
    /* A partir de ce point, on compte le nombre de livres enregistrés pour déterminer le nombre de pages. */
    if($nbcdparpage != 0)
    {
        $nbpages = ceil($resultat/$nbcdparpage);
    }
    // echo($nbpages);
    /* on enlève 1 au nombre de pages, car la 1ere page est celle
    affichée et ne fait pas partie des pages suivantes */
    $nbautrespages = $nbpages - 1;
    // Récupération du numéro de la page affichée.
    if(isset($_GET['num_page']))
    {
        $num_page = $_GET['num_page'];
    }
    else
    {
        $num_page = 0;
    }

    // si la variable numéro de page a une valeur ou est différente de 0
    if(isset($num_page) || $num_page != '0' )
    {
        // on multiplie votre limite par le numero de la page passée par l'url
        $limite_mysql = $nbcdparpage * $num_page;
    }
    else
    {
        // pas de variable numero_page
        $limite_mysql = '0'; // la limite est de 0
    }
    $suivant = $num_page + 1;
    $precedent = $num_page - 1;
    // si le nombre de page n'est pas 0 et si la variable numero_page n'est pas définie
    if( $nbautrespages != '0' && $nbpages != '0' && empty($num_page))
    {
        // page courante
        print "<p style=\"text-align: center; font-size: smaller\">page ".$suivant." sur ".$nbpages."&nbsp;";
        // on passe la variable numero page à 1
        print "<a href=\"index.php?page=livre&num_page=".$suivant."\"> - Suivante - >></a></p>";
    }

    // dans cette condition, la variable numero_page est incrémentée et est inférieure à $nbautrespages
    /********************************************************************************************************************/
    /* ajouter les catégories d'affichage */
    /********************************************************************************************************************/
    elseif($nbautrespages != 0 && isset($num_page) && $num_page < $nbautrespages)
    {
        // retour page précédente
        print "<p style=\"text-align: center; font-size: smaller\"><a href=\"index.php?page=livre&num_page=".$precedent."\"><< - Précédente - </a>";
        // page courante
        print "&nbsp;page ".$suivant." sur ".$nbpages."&nbsp;";
        //le lien pour la page suivante
        print "<a href=\"index.php?page=livre&num_page=".$suivant."\"> - Suivante - >></a></p>";
    }

    // dans cette condition, le lien qui sera affiché lorsque le nombre de page a été atteint
    elseif( $nbautrespages != 0 && isset($num_page) && $nbpages != 0 && $num_page >= $nbautrespages )
    {
        print "<p style=\"text-align: center; font-size: smaller\"><a href=\"index.php?page=livre&num_page=".$precedent."\"><< - Précédente - </a>";
        // page courante
        print "&nbsp;page ".$suivant." sur ".$nbpages."</p>";
    }
    elseif ($nbpages == 0 )
    {
        print "<p style=\"text-align: center; font-size: smaller\">Il n'y a pour le moment aucun ouvrage disponible au catalogue.</p>";
    }
    
    /* Maintenant la partie importante : */ 
    $requete = $requete." Limit ".$limite_mysql .", ".$nbcdparpage; 
    /* En clair, on ré-utilise la même requête, mais on y ajoute une clause LIMIT : la variable (ici $nbcdparpage) est 
       définie dans un fichier de configuration */
    //... reste de l'affichage de la page catalogue normale
}
else
{
?>
<div class="livre" style="clear: both">
<h2>Cette galerie est actuellement vide</h2>
<p>Aucun titre n'est pour l'instant disponible, des ajouts doivent cependant être ajoutés très rapidement, revenez visiter cette page sans tarder.<br />
Merci pour votre patience.</p>
</div>
<?php
}

?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

08 août 2005, 10:13

d'accord merci

Eléphanteau du PHP | 32 Messages

08 août 2005, 17:15

je vous remercie Cyrano pour le code que vous m'avez filé
mais le seul souci est que nous n'avons pas le meme code, depuis ce matin j'essaie de l'adapter au mien mais c'est plus compliqué
je remets le bout du code ou je fais les tests peut etre que avec ça vous pourrez m'aider comme d'habitude
là ou ça pose probleme c'est quand il ya un seul resultat, il affiche quand meme suivant et aussi arrivé au dernier résultat.
encore merci
<?
if($debut == "0")
# si la variable "$debut" est égal à zéro, c'est que l'on est au début des résultats, alors on affiche
# seulement le bouton "suivants"
    {
    $debut = $debut + 1; // on ajoute 5 à la variable "$debut"
    echo "<a href='page.php?debut=$debut'> Suivant</a>";
    }

elseif($nb_resultats == "1" AND $debut != "0")
# si le nombre de résultats est égal à 5 ET que la variable de début est différente de zéro, alors c'est que 
# l'on est ni au début ni à la fin des résultats, donc on affiche les boutons "suivants" et précédents à la foi
    {
    $debut = $debut - 1; // on retire 5 à la variable "$debut"
    echo "<a href='page.php?debut=$debut'>Précédent </a>&nbsp;&nbsp;";
    $debut = $debut + 2; // ici, on rajoute 10 à "$debut", forcément car on à retiré 5 a cette variable deux lignes plus haut!
    echo "<a href='page.php?debut=$debut'>Suivant</a>";
    }

elseif($nb_resultats < "1")
# si le nombre de résultats est inférieur à 5, alors c'est que l'on a atteint
# la fin des résultats, donc on affiche seulement le bouton "précedents"
    {
    $debut = $debut - 1; // on retire 5 à la variable "$debut"
    echo "<a href='page.php?debut=$debut'>Précédent</a>";
    }

}

mysql_close();

?>