Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2006, 23h08   #1
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Par défaut [SQL] Moteur de recherche ultra simple ?

Bonsoir,

Ma question est en fait 2 questions:

1° Comment afficher une liste de films en faisant passer la 1ère lettre du film ? Est-ce possible par SQL svp ?

2° Est-ce possible de faire un mini moteur de recherche simple à mettre en place avec des capacités limitées ça va sans dire

J'aurais aimé proposé un début de code ou de SQL mais j'avou ne jamais avoir fais ça donc je ne sais pas du tout comment commencer...

Quelqu'un peut m'aider svp ?

Merci d'avance...
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2006, 23h14   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Alors tu peux faire comme ceci si tu as la première lettre :
Code :
SELECT titre, id FROM table_film WHERE titre LIKE talettre%
C'est purement du sql. et le LIKE talettre% recherche tous les enregistrements commencant par talettre
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2006, 23h16   #3
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Jiraiya42
1° Comment afficher une liste de films en faisant passer la 1ère lettre du film ? Est-ce possible par SQL svp ?
La requête suivante te sortira les films dont la première lettre est 'M' :
Code :
SELECT * from `films` WHERE `titre` LIKE "M%"
Ca devrait t'aider à démarrer ? (c'est insensible à la casse)
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2006, 23h18   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Et je rajoute ceci : La clause WHERE

Qui te donnera des informations supplémentaires sur les possibilités de recherche
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 10h27   #5
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Merci pour les réponses dsl pour le retard dans la réponse mais je me suis apperçu d'un autre petit soucis en me heurtant au problème de moteur de recherche.

J'ai une base qui devient conséquente et jusqu'à présent je créais des fichiers "films.php" où j'affichais 10 résultats "films2.php" encore 10 "films3.php"... ma base grossi donc ça devient ingérable non ? Il me semblait avoir lu quelque part que l'on pouvait gérer ça autrement, me trompe-je svp ?
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h04   #6
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Le plus simple c'est de faire un seul fichier film.php et de faire un système de pages.
Par exemple dans ta page film.php tu fais un lien sur le mot "suivant" qui pointe vers ta page film.php. Tu passe en paramètre un numéro de page (par exemple le numéro de la page courante que tu stockes dans une variable) incrémenté de 1 et tu mets à jour ta variable page courante. Ensuite tu créées une instruction sql qui tienne compte de ta page en cours (exemple: si page = 2 alors affiche les enregistrement ($page_courante*10) à ($page_courante*10)+10)
De même avec d'autres liens (page précédente, première page, dernière page).
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h07   #7
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par nicoaix
Le plus simple c'est de faire un seul fichier film.php et de faire un système de pages.
Par exemple dans ta page film.php tu fais un lien sur le mot "suivant" qui pointe vers ta page film.php. Tu passe en paramètre un numéro de page (par exemple le numéro de la page courante que tu stockes dans une variable) incrémenté de 1 et tu mets à jour ta variable page courante. Ensuite tu créées une instruction sql qui tienne compte de ta page en cours (exemple: si page = 2 alors affiche les enregistrement ($page_courante*10) à ($page_courante*10)+10)
De même avec d'autres liens (page précédente, première page, dernière page).
Est-ce que ça ressemblerait à ça svp ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
<?PHP
	// on définit le numéro de la page
	if(!isset($_GET['page']) || $_GET['page'] < 2)
 		{
 			$page = 1; 
		}
	else 
		{
 			$page = $_GET['page']; 
		}
 
	// on définit le nombre de résultats max par page
	$nombre_resultats = 30;
 
	// on détermine l'index du 1er resultat que l'on veut (0, 30, 60)
	$debut = ($page-1)*$nombre_resultats;
 
	// on effectue la requete
	$requete = "SELECT SQL_CALC_FOUND_ROWS * FROM films ORDER BY nomfilm DESC LIMIT $debut, $nombre_resultats;";
 
	// on détermine le nombre d'entrées totales correspondant à la requete
	$num_rows = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);
 
	// on affiche les 'page précédente' et 'page suivante
	if($_GET['page'] != 1)	
		{
 			echo '<a href="films.php?page='.$_GET['page']-1.'">Page précédente</a>';
		}
	if($page*$nombre_resultats < $num_rows)
		{
 			echo '<a href="films.php?page='.$_GET['page']+1.'">Page suivante</a>'; 
		} 
?>
Mais j'obtiens ce message d'erreur:

Code :
1
2
 
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in c:\program files\easyphp1-7\www\films\films_a.php on line 91
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h31   #8
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Oui ça doit ressembler à ça. A partir de ce principe on a chacun notre manière de programmer... l'essentiel c'est que ça fonctionne ;-)

C'est laquelle ta ligne 91?
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 11h37   #9
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par nicoaix
Oui ça doit ressembler à ça. A partir de ce principe on a chacun notre manière de programmer... l'essentiel c'est que ça fonctionne ;-)

C'est laquelle ta ligne 91?
Ah oui pardon j'ai oublié,

Ligne 91
Code :
1
2
 
echo '<a href="films.php?page='.$_GET['page']-1.'">Page précédente</a>';
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 12h16   #10
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
$_GET['page']-1 doit être entre parenthèse. Essaie comme ça:

Citation:
<?PHP
// on définit le numéro de la page
if(!isset($_GET['page']) || $_GET['page'] < 2)
{
$page = 1;
}
else
{
$page = $_GET['page'];
}

// on définit le nombre de résultats max par page
$nombre_resultats = 30;

// on détermine l'index du 1er resultat que l'on veut (0, 30, 60)
$debut = ($page-1)*$nombre_resultats;

// on effectue la requete
$requete = "SELECT SQL_CALC_FOUND_ROWS * FROM films ORDER BY nomfilm DESC LIMIT $debut, $nombre_resultats;";

// on détermine le nombre d'entrées totales correspondant à la requete
$num_rows = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);

// on affiche les 'page précédente' et 'page suivante
if($_GET['page'] != 1)
{
echo
'<a href="films.php?page='.($_GET['page']-1).'">Page précédente</a>';
}
if(
$page*$nombre_resultats < $num_rows)
{
echo
'<a href="films.php?page='.($_GET['page']+1).'">Page suivante</a>';
}
?>
Colorez votre code PHP sur les forums grâce à Developpez.com
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 12h30   #11
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par nicoaix
$_GET['page']-1 doit être entre parenthèse. Essaie comme ça:

Colorez votre code PHP sur les forums grâce à Developpez.com
Merci pour ta réponse, je n'ai plus de message d'erreur mais ça m'affiche tous les films, je sais pas comment intégrer ce bout de code dans mon script en entier, quelqu'un peut m'aider svp ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<HTML>

      <HEAD>
            <TITLE></TITLE>      
            <link href="style.css" rel="stylesheet" type="text/css">
      </HEAD>
      
      <BODY>
      <div class="squelette">
                  <div class="barre">
                        <P align=center><FONT face="Comic Sans MS" size="6" color="white">Gestion des Films</FONT>
                        <form method="post" action="func_recherche.php">
                              <p align=center><font color="white">Chercher:
                              <input type="text" name="mot" size="15">
                              <input type="submit" value="Go !" alt="Lancer la recherche!"></p>
                        </form>
                  </div>
                  <div class="centre">
                        <P align=center><FONT face="Comic Sans MS" size="3" color=#000000>Liste des films</FONT>
                        <TABLE border=1 cellspacing=10>
                              <?PHP
                                    // on se connecte à MySQL et on sélectionne la base
                                    require ("./connect.php");
                                    mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                                       mysql_select_db (BASE) or die(mysql_error);

                                    // on crée larequete pour remplir tableau (nom, genre, position)
                                    $select = "SELECT * from `films` ORDER BY nomfilm LIMIT 0, 10;";
                                    $sel = mysql_query($select) or die('Erreur SQL !<br>'.$select.'<br>'.mysql_error());

                                    // on fait une boucle qui va faire un tour pour chaque enregistrement
                                    while($data = mysql_fetch_assoc($sel))
                                          {
                                                // on affiche les informations dans un tableau
                              ?>
                                                <TR>
                                                      <TD><?PHP echo stripslashes($data['nomfilm']); ?></TD>
                                                      <TD><?PHP echo stripslashes($data['genrefilm']); ?></TD>
                                                      <TD><?PHP echo stripslashes($data['posfilm']); ?></TD>
                                                      <TD><?PHP
                                                                  // on vérifie si le film est emprunté ou non
                                                                  $request = "SELECT nomemp FROM emprunteur e WHERE e.numfilm = '".$data['numfilm']."';";
                                                                  $resultat = mysql_query($request) or die('Erreur SQL !<br>'.$request.'<br>'.mysql_error());
                                                                  if(mysql_num_rows($resultat) === 0)
                                                                        {
                                                                                echo 'Nom emprunté';
                                                                        }
                                                                  else
                                                                        {
                                                                              while($ligne = mysql_fetch_assoc($resultat))
                                                                                    {
                                                                                          echo $ligne['nomemp'];
                                                                                    }
                                                                        }
                                                             ?>
                                                      </TD>
                                                </TR>            
                              <?PHP
                                          }
                                          // on ferme la connexion à mysql
                                          mysql_close();
                              ?>
                        </TABLE>
                        <BR>
                        <?PHP
                              // on définit le numéro de la page
                              if(!isset($_GET['page']) || $_GET['page'] < 2)
                                     {
                                           $page = 1; 
                                    }
                              else 
                                    {
                                           $page = $_GET['page']; 
                                    }

                              // on définit le nombre de résultats max par page
                              $nombre_resultats = 10;

                              // on détermine l'index du 1er resultat que l'on veut (0, 30, 60)
                              $debut = ($page-1)*$nombre_resultats;

                              // on effectue la requete
                              $requete = "SELECT SQL_CALC_FOUND_ROWS * FROM films ORDER BY nomfilm DESC LIMIT $debut, $nombre_resultats;";

                              // on détermine le nombre d'entrées totales correspondant à la requete
                              $num_rows = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);

                              // on affiche les 'page précédente' et 'page suivante
                              if($_GET['page'] != 1)
                                    {
                                          echo '<a href="films_A.php?page='.($_GET['page']-1).'">Page précédente</a>';
                                    }
                              if($page*$nombre_resultats < $num_rows)
                                    {
                                          echo '<a href="films_A.php?page='.($_GET['page']+1).'">Page suivante</a>';
                                    } 
                        ?>
                              <BR>
                  </div>      
                  <div class="colgauche">
                        <div id="navcontainer" align="center">
                              <ul id="navlist">
                                    <li id="active"><a href="form_ajout_film.php">Ajouter un Film</a></li>
                                    <li><a href="form_maj_film.php">Modifier un Film</a></li>
                                    <li><a href="form_suppression_film.php">Supprimer un Film</a></li>
                              </ul>
                        </div>
                        <div id="navcontainer" align="center">
                              <ul id="navlist">      
                                    <li><a href="films_action.php">Action</a></li>
                                    <li id="active"><a href="films_comedie.php">Comédie</a></li>
                                    <li><a href="films_drame.php">Drame</a></li>
                                    <li><a href="films_horreur.php">Horreur</a></li>
                              </ul>
                        </div>
                  </div>
            </div>      
      </div>
      
      </BODY>
      
</HTML>Colorez votre code PHP sur les forums grâce à Developpez.com
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 12h44   #12
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
A mon avis il faut que tu remplaces ta requete
$select = "SELECT * from `films` ORDER BY nomfilm;";
Par
$select = "SELECT * from `films` ORDER BY nomfilmLIMIT $debut, $nombre_resultats;";

Et il faut que tu places ton bloc php dans lequel tu calcules $debut et $nombre_resultats juste avant ta requête SELECT * from `films` ORDER BY nomfilm;
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 13h16   #13
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par nicoaix
A mon avis il faut que tu remplaces ta requete
$select = "SELECT * from `films` ORDER BY nomfilm;";
Par
$select = "SELECT * from `films` ORDER BY nomfilmLIMIT $debut, $nombre_resultats;";

Et il faut que tu places ton bloc php dans lequel tu calcules $debut et $nombre_resultats juste avant ta requête SELECT * from `films` ORDER BY nomfilm;
Le code est intégré par contre il n'y a que "page précédente" qui s'affiche, page suivante ne s'affiche pas donc en gros j'ai une liste de 10 films mais le reste saute

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?PHP
                                    // on se connecte à MySQL et on sélectionne la base
                                    require ("./connect.php");
                                    mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                                       mysql_select_db (BASE) or die(mysql_error);
                                    
                                    ////////////////////////////////////// MARQUE PAGE ///////////////////////////////////////////////
                                    // on définit le numéro de la page
                                    if(!isset($_GET['page']) || $_GET['page'] < 2)
                                           {
                                                 $page = 1; 
                                          }
                                    else 
                                          {
                                                 $page = $_GET['page']; 
                                          }

                                    // on définit le nombre de résultats max par page
                                    $nombre_resultats = 10;

                                    // on détermine l'index du 1er resultat que l'on veut (0, 30, 60)
                                    $debut = ($page-1)*$nombre_resultats;

                                    // on effectue la requete
                                    $requete = "SELECT SQL_CALC_FOUND_ROWS * FROM films ORDER BY nomfilm DESC LIMIT $debut, $nombre_resultats;";

                                    // on détermine le nombre d'entrées totales correspondant à la requete
                                    $num_rows = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);

                                    // on affiche les 'page précédente' et 'page suivante
                                    if($_GET['page'] != 1)
                                          {
                                                echo '<a href="films_A.php?page='.($_GET['page']-1).'">Page précédente</a>';
                                          }
                                    if($page*$nombre_resultats < $num_rows)
                                          {
                                                echo '<a href="films_A.php?page='.($_GET['page']+1).'">Page suivante</a>';
                                          } 
                                    ///////////////////////////////////////////////////////////////////////////////////////////////////
                                    
                                    // on crée larequete pour remplir tableau (nom, genre, position)
                                    $select = "SELECT * from `films` ORDER BY nomfilm LIMIT $debut, $nombre_resultats;";
                                    $sel = mysql_query($select) or die('Erreur SQL !<br>'.$select.'<br>'.mysql_error());

                                    // on fait une boucle qui va faire un tour pour chaque enregistrement
                                    while($data = mysql_fetch_assoc($sel))
                                          {
                                                // on affiche les informations dans un tableau
                              ?>
                                                <TR>
                                                      <TD><?PHP echo stripslashes($data['nomfilm']); ?></TD>
                                                      <TD><?PHP echo stripslashes($data['genrefilm']); ?></TD>
                                                      <TD><?PHP echo stripslashes($data['posfilm']); ?></TD>
                                                      <TD><?PHP
                                                                  // on vérifie si le film est emprunté ou non
                                                                  $request = "SELECT nomemp FROM emprunteur e WHERE e.numfilm = '".$data['numfilm']."';";
                                                                  $resultat = mysql_query($request) or die('Erreur SQL !<br>'.$request.'<br>'.mysql_error());
                                                                  if(mysql_num_rows($resultat) === 0)
                                                                        {
                                                                                echo 'Nom emprunté';
                                                                        }
                                                                  else
                                                                        {
                                                                              while($ligne = mysql_fetch_assoc($resultat))
                                                                                    {
                                                                                          echo $ligne['nomemp'];
                                                                                    }
                                                                        }
                                                             ?>
                                                      </TD>
                                                </TR>            
                              <?PHP
                                          }
                                          // on ferme la connexion à mysql
                                          mysql_close();
                              ?>
Colorez votre code PHP sur les forums grâce à Developpez.com
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 13h33   #14
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Si tu veux voici ce que j'utilise pour mes pages:
J'ai 2 fichiers:
gestion_pages.inc:
Citation:
<?PHP
$pas
= $_SESSION['pas'];
$nb_page = $numrow / $pas;
$reste = $numrow % $pas;
if(
$reste > 0){$nb_page = intval(abs($nb_page)) + 1;}
if(
$page > $nb_page){
$page = $nb_page;
}elseif(
$page < 1){
$page = 1;
}else{
$pages = 1;
}
$debut = ($page * $pas) - $pas;
if(
$page == 1){$debut = 0; $fin = $debut + $pas;}else{$fin = $debut + $pas;}
if(
$debut >= $numrow){$debut = $numrow - $pas + 1;}
if(
$debut < 0){$debut = 0;}
if(
$fin >= $numrow){$fin = $numrow;}
?>
Tu peux remplacer $_SESSION['pas'] par la valeur du nombre de lignes affichées par pages que tu veux.
$numrow correspond au nombre d'enregistrement maximum de la requête.

Et dans mes fichiers php:

Citation:
<?PHP
...
function
affiche_pages($param,$nb_page,$page){
$chaine = explode("&", $param);
while(list(
$cle,$valeur)=each($chaine)){
if(
$cle == 0){
$chaine_param = $valeur;
}else{
$chaine_param .= "&".$valeur;
}
}
if(@
$page == ''){$page = 1;}
if(@
$nb_page == ''){$nb_page = 1;}
$pgeP1 = $page + 1;
$pgeM1 = $page - 1;
echo
"
<div align=\"center\">
<a href=\""
.$_SERVER['PHP_SELF']."?page=1&".$chaine_param."\"><img src=\"images/premier.gif\" width=\"25\" height=\"10\" border=\"0\"></a>
<a href=\""
.$_SERVER['PHP_SELF']."?page=".$pgeM1."&$chaine_param\"><img src=\"images/precedent.gif\" width=\"15\" height=\"10\" border=\"0\"></a>
page "
.$page."/".$nb_page."
<a href=\""
.$_SERVER['PHP_SELF']."?page=".$pgeP1."&$chaine_param\"><img src=\"images/suivant.gif\" width=\"15\" height=\"10\" border=\"0\"></a>
<a href=\""
.$_SERVER['PHP_SELF']."?page=".$nb_page."&$chaine_param\"><img src=\"images/dernier.gif\" width=\"25\" height=\"10\" border=\"0\"></a>
</div>
"
;
}

...
@
$page = $_GET['page'];
@
$order = $_GET['order'];
if(
$order == '' ){$order = 'id desc';}
...
include(
"gestion_pages.inc");
...
?>

<div align="center"><? $param = "order=$order"; affiche_pages($param,$nb_page,$page); ?></div>
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 13h43   #15
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par nicoaix
Si tu veux voici ce que j'utilise pour mes pages:
J'ai 2 fichiers:
gestion_pages.inc:

Tu peux remplacer $_SESSION['pas'] par la valeur du nombre de lignes affichées par pages que tu veux.
$numrow correspond au nombre d'enregistrement maximum de la requête.

Et dans mes fichiers php:
Oula merci mais c'est pas le même niveau je crois, je vais essayer d'y comprendre quelque chose si c'est vraiment impossible je resterai sur ma solution pour essayer de la faire marcher
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 14h33   #16
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Voilà mon code final, il fonctionne

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?PHP
                                    // on se connecte à MySQL et on sélectionne la base
                                    require ("./connect.php");
                                    mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
                                       mysql_select_db (BASE) or die(mysql_error);
                                    
                                    ////////////////////////////////////// MARQUE PAGE ///////////////////////////////////////////////
                                    // on définit le numéro de la page
                                    if(!isset($_GET['page']) || $_GET['page'] < 2)
                                           {
                                                 $page = 1; 
                                          }
                                    else 
                                          {
                                                 $page = $_GET['page']; 
                                          }

                                    // on définit le nombre de résultats max par page
                                    $nombre_resultats = 10;

                                    // on détermine l'index du 1er resultat que l'on veut (0, 30, 60)
                                    $debut = ($page-1)*$nombre_resultats;

                                    // on effectue la requete d'affichage des films pour la 1ère page
                                    $requete = "SELECT SQL_CALC_FOUND_ROWS * FROM films ORDER BY nomfilm DESC LIMIT $debut, $nombre_resultats;";
                                    $req = @mysql_query ($requete);       
                                    
                                    // on récupère le nombre total de films
                                    $nbtotal = "SELECT * FROM films;";
                                    $nbtot = @mysql_query ($nbtotal);

                                    // on compte le nombre d'entrées totales correspondant à la requete du total des films
                                    $num_rows = mysql_num_rows($nbtot);
                                    echo $num_rows;

                                    // on affiche les 'page précédente' et 'page suivante'
                                    if($_GET['page'] != 1)
                                          {
                                                echo '<a href="films_A.php?page='.($_GET['page']-1).'">Page précédente                                      </a>';
                                          }
                                    if($page*$nombre_resultats < $num_rows)
                                          {
                                                echo '<a href="films_A.php?page='.($_GET['page']+1).'">Page suivante</a>';
                                          } 
                                    
[/quote]Colorez votre code PHP sur les forums grâce à Developpez.com
Cependant petite question tout bete, comment faire pour que "page précédente" et "page suivante" ne soit pas collés l'un à l'autre Obligé d'utiliser un pti tableau ou pas obligé svp ?
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 15h10   #17
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
C'est bon j'ai fais avec des <div> simple et ça marche bien reste à m'atteler sur le moteur de recherche maintenant
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 15h53   #18
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Code :
1
2
3
4
5
6
7
if(!isset($_GET['page']))
     $page = 1; 
        else 
            $page = (int)$_GET['page']; 

if($page < 1)  $page = 1;
Ca t'évitera des problèmes... et après dans ton code tu n'utilise plus $_GET['page'] mais $page sinon ça sert strictement à rien de déclarer une variable $page au début de ton script... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 17h41   #19
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
J'ai un problème avec mon moteur de recherche:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php 

      [/color]require ("../connect.php");
      mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
      mysql_select_db (BASE) or die(mysql_error); 

      $titre = addslashes($_POST['titre']);

      // on passe les mots recherchés en minuscules
      $recherche = strtolower($titre);

      // on remplace les ' + , :  par des espaces
      $mots = str_replace('+', ' ', trim($recherche));
      $mots = str_replace('\'', ' ', $mots);
      $mots = str_replace(',', ' ', $mots);
      $mots = str_replace(':', ' ', $mots);

      // on place les differents mots dans un tableau
      $tab = explode(' ' , $mots);

      // on compte le nombre d'éléments du tableau.
      $nb = count($tab);

      //on prépare la requête SQL.
      $sql = "SELECT * FROM films WHERE nomfilm like \'%$tab[0]%\' ";

      // on boucle pour integrer tous les mots dans la requête
      for($i = 1; $i < $nb; $i++) 
            {
                    $sql .= "$operateur nomfilm like \'%$tab[$i]%\' ";
            }

      // on execute la requête SQL.
      $result = @mysql_query ($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());      
      
      while($data = mysql_fetch_assoc($result))
            {
                  // on affiche les informations dans un tableau 
                  echo '<TABLE>'
                        . '<TR>'
                        . '<TD>stripslashes('.$data['nomfilm'].')</TD>'
                        . '<TD>stripslashes('.$data['genrefilm'].')</TD>'
                        . '<TD>stripslashes('.$data['posfilm'].')</TD>'
                        . '</TR>'
                        . '</TABLE>';
                                                
                  // on vérifie si le film est emprunté ou non
                  $request = "SELECT nomemp FROM emprunteur e WHERE e.numfilm = '".$data['numfilm']."';";
                  $resultat = mysql_query($request) or die('Erreur SQL !<br>'.$request.'<br>'.mysql_error());
                  if(mysql_num_rows($resultat) === 0)
                        {
                                echo 'Nom emprunté';
                        }
                  else
                        {
                              while($ligne = mysql_fetch_assoc($resultat))
                                    {
                                          echo $ligne['nomemp'];
                                    }
                        }
            }

?>
J'obtiens un message d'erreur que je n'arrive pas à "faire disparaitre":

Code :
1
2
 
Erreur de syntaxe près de '\'%ali%\'' à la ligne 1
Quelqu'un peut m'aider svp ?

Merci d'avance...
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 18h03   #20
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
wow... c'est un peu le bordel ta requete sql... tu peux pas faire ça comme ça...

1 tu as des simple quotes échapées pour rien dans ta requète
2 tu n'echape pas les charactères sensibles avec mysql_real_escape_string() ce qui représente un risque potentiel de sécurité
3 tu ne peux faire qu'un like sinon il va falloir utiliser les jointures (à vérifier)
4 ta boucle for génère je ne sais quoi d'autant plus que $operateur est idéfinis

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h19.


 
 
 
 
Partenaires

Hébergement Web