Lien qui lancent sur une page + ordre

Eléphanteau du PHP | 29 Messages

17 mars 2005, 16:06

Alors voila on a mangas.tbl et dedans on a:
(id INT not null AUTO_INCREMENT, nom VARCHAR (50) not null , description VARCHAR (90) not null , Histoire LONGTEXT not null , PRIMARY KEY (id))

J'aimerais savoir comment faire ceci:

A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z

1°)Quand on clique sur le A on obtient alors tous les noms commençant par la lettre A. De même pour les autres lettres. Si il n'y a encore aucun nom alors cela écrit ceci en dessous : Pas encore de livre de cette lettre.

2°)Quand on clique sur le A, les livres s'affichent donc cependant ce qui s'affiche c'est seulement le nom avec la description.Si on clique sur le nom du livre alors on arrive sur une autre page contenant:
NOM
====>Description
_Histoire_


J'éspère avoir été clair :?
Merci déjà de répondre :)
.. Noobbbb ..
.. Cherche une idée de site ..

Eléphant du PHP | 200 Messages

17 mars 2005, 16:18

pour recuperer les nom commencant par A tu dois parametrer ta requetes SQL avec :

SELECT tes_champs FROM ta_table WHERE nom like 'a%' ORDER by NOM

et ainsi de suite ....
Univers divided by 0 - cucumber error - reboot

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 mars 2005, 16:22

1. t'as besoin d'une requête SQL comme :
$sql ="SELECT id, nom, description FROM ta_table WHERE nom LIKE '$lettre%' ORDER BY nom";

que tu exécute pour avoir la liste des livres dont le nom commence par la lettre "$lettre" choisie dans ta page d'indexes

2. il faut attacher un lien hypertexte au nom affiché dans le résultat.
Quand on clic sur un nom son id est transmis par GET sous forme de $id.
Une deuxième requête dans la deuxième page cherche le livre correspondant à $id :

$sql= "SELECT * from ta_table WHERE id = $id ";
après exécution tu affiches les champs nom, description et histoire

REMARQUE: sous php, utilise le test : if (mysql_num_rows($resultat) >0 )
pour savoir si une requête a retourné des lignes ou pas
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 29 Messages

17 mars 2005, 17:19

désolé je suis débutant et pour comprendre faudrait mettre les lignes dans le contexte :cry: désolé heu tu pourrais mettre qq lignes autour pour que je comprenne ? merci bcp
.. Noobbbb ..
.. Cherche une idée de site ..

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 mars 2005, 18:27

Je te propose alors de lire cet exemple, le code php est commenté
Bonne lecture.

La page principale : livres.php qui affiche l'index des lettres et cherche les livres correspondant à une lettre choisie.
<table width="100%">
<tr>
<td><A HREF="livres.php?lettre=A">A</A>
<td><A HREF="livres.php?lettre=P">P</A>
<td><A HREF="livres.php?lettre=V">V</A>
</table>
<hr>
<?
//Reception de la lettre choisie
$lettre = isset($_GET["lettre"]) ? $_GET["lettre"] : null;

if ($lettre != null){
	//Chercher les livres dont le nom commence par la lettre choisie
	$sql ="SELECT id, nom, description FROM livre WHERE nom LIKE '$lettre%' ORDER BY nom";
	//connecter au serveur mysql
	$serveur = mysql_connect("localhost","root","");
	//ouvrir la base de données "biblio"
	mysql_select_db ("biblio", $serveur);
	//exécuter la requête
	$resultat = mysql_query($sql, $serveur);
	//tester si la requête a trouvé des livres
	if (mysql_num_rows($resultat) <= 0) echo "Aucun livre!";
	else {
	    //afficher la liste des livres trouvés
		echo "<h3>Liste des livres</h3>
			<table border=1><tr><th>Nom <th>Description";
		//lire le resultat ligne par ligne
		while ($ligne = mysql_fetch_assoc($resultat)){
	    	$id = $ligne["id"];
	    	$nom = $ligne["nom"];
	    	$description = $ligne["description"];
			//le champ "nom" est sous forme de lien hypertexte (au clic il envoi l'id)
			echo "<tr>
				<td><A HREF='page2.php?id=$id'>$nom</A>
				<td>$description";
		}
		echo "</table>";
	}
}else "Choisir une lettre";

?>
Et la page2.php : qui affiche la fiche livre
<?
//Reception de l'id d'un livre selectionné
$id = isset($_GET["id"]) ? $_GET["id"] : null;

if ($id != null){
	//Chercher le livre de l'id choisi
	$sql ="SELECT * FROM livre WHERE id = $id ";
	//connecter au serveur mysql
	$serveur = mysql_connect("localhost","root","");
	//ouvrir la base de données "biblio"
	mysql_select_db ("biblio", $serveur);
	//exécuter la requête
	$resultat = mysql_query($sql, $serveur);
	//tester si la requête a trouvé des livres
	if (mysql_num_rows($resultat) <= 0) echo "Aucun livre!";
	else {
	    //lire le resultat qui ne contient qu'une ligne (pas besoin de boucle while)
		$ligne = mysql_fetch_assoc($resultat);
	    $id = $ligne["id"];
	    $nom = $ligne["nom"];
	    $description = $ligne["description"];
	    $histoire = $ligne["histoire"];
		//afficher l'dentité du livre trouvé
		echo "<h3>Fiche livre</h3>
			<table>
			<tr><td>$nom
			<tr><td>$description
			<tr><td>$histoire
			</table>";
	}
}else "Choisir un id";

?>
La base de données mysql utilisée s'appelle "biblio" et contient une table appellée "livre" dont la structure est la suivante :

Code : Tout sélectionner

-- -- Structure de la table `livre` -- CREATE TABLE `livre` ( `id` int(11) NOT NULL auto_increment, `nom` varchar(30) NOT NULL default '', `description` varchar(50) NOT NULL default '', `histoire` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 29 Messages

17 mars 2005, 19:35

ah ok ... jcrois que j'ai compris jvais voir
déjà merci d'avance ;)
.. Noobbbb ..
.. Cherche une idée de site ..

Eléphanteau du PHP | 29 Messages

17 mars 2005, 19:42

heu dans la creation de la db y a une erreur la derniere ligne est utile ?
.. Noobbbb ..
.. Cherche une idée de site ..

Eléphanteau du PHP | 29 Messages

17 mars 2005, 20:09

Cela ne fontionne pas:
http://inact.atomysk.com/test.htm ==> ajouter puis il y a ce que vous avez enregistre et allez au lien en bas de page ..
.. Noobbbb ..
.. Cherche une idée de site ..