Je me noie (hp]

Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 19 août 2008 à 01:43
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 20 août 2008 à 20:49
Bonjour,
Je suis entrain de réaliser une base de données des prénoms basques comme celui-ci: https://www.euskaltzaindia.eus/index.php?option=com_ecoeoda&task=bilaketaPortada&Itemid=472&lang=eu/index.asp (en fait c'est la traduction française que je fais).

Mon problème est que je n'arrive pas a afficher la liste, il y a Pb avec le require comme vous pouvez le constater ici: http://txiki.free.fr Et pourtant c'est un script que j'avais déjà utilisé auparavant mais pour des tests et le site de l'époque n'utilisait pas les variables de sessions. Celui est tout à fait différent.
C'est très important pour moi mais je nage dans la semoule. Le code ci-dessous est le code complet de page (pas d'entête rien, (l'index est composé d'includes pour chaque sections de la page) il devrait être intégré dans le frame de txiki.free.fr mais je ne sais pas du tout comment faire.
1 pour afficher les lettres de l'alphabet en forme de liens (camp Lettre)
2 pour afficher la liste des les A par défaut éventuellement (champ Prenom) puis en cliquant sur le prénom,
3 afficher l'origine du prénom (champ Origine), l'équivalant en français s'il existe (champ nullFrencName) et la fête (champ, null aussi Ephemeride) de la table prenomsfeminins.

<h1> Liste des prénoms basques </h1>

<?
//=========================================
// includes du fichier fonctions
//=========================================

require 'fonctions.php';

//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = '';
$pass = '';
$db = 'txiki';

//=========================================
// initialisation des variables 
//=========================================

$nombre = 10;  // on va afficher 10 résultats par page.
$limite = 0;
if (!$limite);  // si limite n'existe pas on l'initialise à zéro

$path_parts = pathinfo($_SERVER['PHP_SELF']);  // on cherche le nom de la page.

$page = $path_parts["basename"];

//======================
// connection à la DB
//======================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table

//==========================================================================    
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================

$select = 'SELECT count(id) FROM prenomsfeminins';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {

    $limite = 0;
}

//=========================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//=========================================

$select = 'select Lettre,Prenom FROM prenomsfeminins ORDER BY categorie ASC limit '.$limite.','.$nombre;

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );


//=========================================    
// si on a récupéré un resultat on l'affiche.
//=========================================

if($total) {
  echo '<table width="50% bgcolor="#FFFFFF" align="center">'."\n";
// première ligne on affiche les lettres A, B,C, etc
        echo '<tr text-align="center" padding="3px">';
        echo '<td bgcolor="#669999"><strong> Lettre </strong></td>';
        echo '<td bgcolor="#669999"><strong> Prénom </strong></td>';
        echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.    
    while($row = mysql_fetch_array($result)) {
  echo '<tr>';
  echo '<td bgcolor="#F0F0F0"><strong> Lettre:      </strong>'.$row['Lettre'].'</td>'; // affiche l'alphabet/lien
  echo '</td>';
  echo '</tr>'."\n";
  echo '<tr>';
  echo '<td bgcolor="#F0F0F0"><strong> Prénom:      </strong"'.$row['Prenom'].'</td>'; // affiche la liste des prénoms
  echo '</td>';
  echo '</tr>'."\n";
 }
  echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas de prénom pour cette lettre';

// on libère le résultat
mysql_free_result($result);

//=========================================    
// si le nombre d'enregistrement à afficher est plus grand que $nombre 
//=========================================

if($total > $nombre) {

    affichePages($nombre,$page,$total);  // affichage des liens vers les pages

    displayNextPreviousButtons($limite,$total,$nombre,$page);  // affichage des boutons
}

?>


NOTE: le fichier fonctions.php se trouve dans le répertoire Php si ça peut vous aider.
Un grand merci d'avance a celui qui me guidera.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
A voir également:

7 réponses

Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 211
19 août 2008 à 11:46
"Dans le répertoire PHP" ?
require 'fonctions.php';

Il va le chercher dans le dossier courant normalement..
Il faut que tu mettes ta pages functions.php à la racine
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
19 août 2008 à 18:48
Merci Tiler, ça marche ! OUUUUF !

Maintenant j'ai un autre souci. Comment fait-on pour limiter les n° de pages, en bas, afin de les mettre sur plusieurs lignes car là, ça dépasse et donc, on a un scroll horizontal. Voir ci-dessous.
http://txiki.free.fr/index.php?page=Liste_Prenoms&lang=Fr

Autre Pb, les prénoms, Normalement devraient être des liens, or ils ne le sont pas. Ça permettrait d'afficher l'origine du prénom en cliquant dessus.

Ya quelque chose qui m'échappe là mais je ne vois pas quoi.

Merci encore pour ton truc sur require 'fonctions.php'.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 août 2008 à 19:12
Salut,

Déja je vois une erreur là:


$limite = 0;
if (!$limite); // si limite n'existe pas on l'initialise à zéro

ça veut dire que dans tous les cas tu mets $limite=0

il faut:


if (!$limite) { $limite = 0; } // si limite n'existe pas on l'initialise à zéro
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
20 août 2008 à 01:57
Merci Alain42, ça marche (mais je ne cois pas la différence quand même). Bon, ça c'est OK !

Maintenant, j'approche très près du but mais les prénoms ne sont pas des liens vers lla description de leur origine.
http://txiki.free.fr/index.php?page=Liste_Prenoms&lang=Fr

Comment fait-on pour:
1 mettre les caractères de l'alphabet (A, B, C etc) juste au dessus des prénoms pour permettre aux visiteurs d'aller directement vers le prénom qui l'interresse ?

2 l'origine est le champ suivant dans la table des prenoms (ID, Lettre, Prenom, Origine, Ephemeride (NULL), FrenchName (NULL), ces deux derniers n'étant pas forcément renseignés).
Dois-je faire une requete dans la requete ? je ne vois pas là. Voici le code ci-dessous:
//===========================================    
// si on a récupéré un resultat on l'affiche.
//===========================================

if($total) {
  echo '<table width="80% bgcolor="#FFFFFF" align="center">'."\n";
        echo '<tr height="20px">';
        echo '<td align="center" bgcolor="#E6E6E6"><strong> Prénoms féminins </strong></td>';
        echo '</tr>'."\n";
// lecture et affichage des résultats (affichage de la liste des 20 premiers prénoms (première page par défaut).    
    while($row = mysql_fetch_array($result)) {
//  echo '<tr>';
//  echo '<td bgcolor="#FFFFFF"> Lettre:'.$row['Lettre'].'</td>'; // affiche l'alphabet/lien
//  echo '</td>';
//  echo '</tr>'."\n";
  echo '<tr>';
  echo '<td bgcolor="#FFFFFF">'.$row['Prenom'].'</td>'; // affiche les prénoms/liens
  echo '</td>';
  echo '</tr>'."\n";
 }
  echo '</table>'."\n";
    // fin du tableau.
}
else echo '??????';

// on libère le résultat
mysql_free_result($result);


J'ai mis en commentaire l'echo .$row[lettre] car je ne vois pas comment faire les mettre sur une ligne au dessus des prénoms et sous forme de lien.

Merci encore à tous ! car je démarre et pour une fois, après bien des galères, j'approche tout près et j'en serais très fier mais sans aide je n'y arriverai pas, c'est une certitude.
0
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 211 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
20 août 2008 à 02:28
Je suis le seul chez qui le lien ne marche pas? --
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
20 août 2008 à 09:54
Salut,

une amorce de solution:

<?php
$lettre=$_GET['lettre'];
$req_lettres=mysql_query("SELECT * FROM etc....");// pour avoir toutes les lesttres de la BDD
$result=mysql_query("SELECT * FROM ta_table WHERE Lettre='".$lettre."' LIMIT etc...");// pour avoir toutes les lesttres de la BDD
if($total) {
  echo '<table width="80% bgcolor="#FFFFFF" align="center">'."\n";
        echo '<tr height="20px">';
        echo '<td align="center" bgcolor="#E6E6E6"><strong> Prénoms féminins </strong></td>';
        echo '</tr>';
// affichage des lettres
	while($row = mysql_fetch_array($req_lettres)) {
  echo '<tr>';
  echo "<td bgcolor=\"#FFFFFF\"> <a href=\"cette_page.php?lettre=".$row['Lettre']." >".$row['Lettre']."</a></td>"; // affiche l'alphabet/lien
  echo '</td>';
 echo '</tr>';
		
// lecture et affichage des résultats (affichage de la liste des 20 premiers prénoms (première page par défaut).    
    while($row = mysql_fetch_array($result)) {
 
  echo '<tr>';
  echo '<td bgcolor="#FFFFFF">'.$row['Prenom'].'</td>'; // affiche les prénoms/liens
  echo '</td>';
  echo '</tr>';
 }
  echo '</table>'."\n";
    // fin du tableau.
}
else echo '??????';


et moi aussi j'ai le warning ....
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
20 août 2008 à 15:28
Alain_42:

Je crois que je me suis mal exprimé. En fait ce que je veux c'est une ligne avec les l'alphabet. Les lettres seront des liens vers les prénoms commençant par cette lettre comme ci-dessous.
https://www.euskaltzaindia.eus/index.php?option=com_ecoeoda&task=bilaketaPortada&Itemid=472&lang=eu/index.asp

La page s'appelle se nom Liste_Prenoms Fr.htm et l'autre, celle qui affichera l'origine et le reste se nomme Fiche_Prenom Fr.htm (mais là, je ne sais pas mettre le code qui récupérera la valeur des champs de l'ID du prénom cliqué). Je n'en suis pas encore là.

Voici le code complet de la page liste prénoms:
<?
//=========================================
// includes du fichier fonctions
//=========================================

require 'fonctions.php';

//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = '******';
$pass = '******';
$db = 'txiki';
//=========================================
// initialisation des variables 
//=========================================

$nombre = 20;  // on va afficher 20 résultats par page.
if (!$limite) { $limite = 0; } // si limite n'existe pas on l'initialise à zéro
//$limite = 0;
//if (!$limite);  // si limite n'existe pas on l'initialise à zéro

$path_parts = pathinfo($_SERVER['PHP_SELF']);  // on cherche le nom de la page.

$page = $path_parts["basename"];

//======================
// connection à la DB
//======================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table

//==========================================================================    
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================

$select = 'SELECT count(id) FROM prenomsfeminins';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {

    $limite = 0;
}

//==================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//==================================================================================

$select = 'select * FROM prenomsfeminins ORDER BY id ASC limit '.$limite.','.$nombre;

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

//===========================================    
// si on a récupéré un resultat on l'affiche.
//===========================================

if($total) {
  echo '<table width="80% bgcolor="#FFFFFF" align="center">'."\n";
        echo '<tr height="20px">';
        echo '<td align="center" bgcolor="#E6E6E6"><strong> Prénoms féminins </strong></td>';
        echo '</tr>'."\n";
// lecture et affichage des résultats (affichage de la liste des 20 premiers prénoms (première page par défaut).    
    while($row = mysql_fetch_array($result)) {
//  echo '<tr>';
//  echo '<td bgcolor="#FFFFFF"> Lettre:'.$row['Lettre'].'</td>'; // affiche l'alphabet/lien
//  echo '</td>';
//  echo '</tr>'."\n";
  echo '<tr>';
  echo '<td bgcolor="#FFFFFF">'.$row['Prenom'].'</td>'; // affiche les prénoms/liens
  echo '</td>';
  echo '</tr>'."\n";
 }
  echo '</table>'."\n";
    // fin du tableau.
}
else echo '??????';

// on libère le résultat
mysql_free_result($result);

//=========================================    
// si le nombre d'enregistrement à afficher est plus grand que $nombre 
//=========================================

if($total > $nombre) {

//    affichePages($nombre,$page,$total);  // affichage des liens vers les pages

    displayNextPreviousButtons($limite,$total,$nombre,$page);  // affichage des boutons
}

?>


Comme tu peux le remarquer, la partie commentée de echo pour les lettres n'est pas à sa place, et moi, je voudrais en faire un tableau d'une ligne.

J'ai été perturbé par ton code, je ne savais pas trop à quel endroit le placer.
Si tu pouvais me commenter celui-ci et le corriger, surement, car ça m'étonnerai qu'il soit bon !

Merci infiniment d'avance.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 211
19 août 2008 à 18:51
Marche pas
Warning: main( Fr.htm) [function.main]: failed to open stream: No such file or directory in /mnt/123/sdb/9/1/txiki/index.php on line 121

Warning: main() [function.include]: Failed opening ' Fr.htm' for inclusion (include_path='/mnt/123/sdb/9/1/txiki/include:.:/usr/php4/lib/php') in /mnt/123/sdb/9/1/txiki/index.php on line 121
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
20 août 2008 à 14:46
Salut à tous et merci encore !

Qu'entendez-vous par "moi aussi j'ai le warning ? Il faut autoriser les coockies.

Pouvez-vous me faire une capture d'écran SVP ? que je puisse voir comment vous, vous voyez la page.

Je dois vous préciser que chez moi, c'est correct aussi bien sous Firefox que sous IE6.

Merci d'avance.
Alain: je teste ton code et te tiens au courant, OK ?

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 août 2008 à 17:12
Salut,

tu mets:

la page se nomme Liste_Prenoms Fr.htm
et le reste se nomme Fiche_Prenom Fr.htm

pour que le code php soit interpreté, il faut que tes pages soient en .php et pas .htm

Apparement on a plus le warning, le lien que tu as donné fonctionne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
20 août 2008 à 18:05
Salut Alain_42,

Oui je sais pour la page en htm, mais tout le site est construit ainsi, seul l'index possèdes les includes pour le header, le menu, le bandeau, le frame et le footer comme l'exemple ci-dessous:
<!-- Début du contenu principal -->
		<div id="frame">
             <?php
               include $_SESSION[$page]['Location']." $lang.htm";
             ?>
		</div>
        <!-- Fin du contenu principal -->


"pour que le code php soit interprété, il faut que tes pages soient en .php et pas .htm"
C'est ce que je me disais mais alors comment expliquer que les prénoms s'affichent ?

Chaque page (bandeau et frame affichée) est déclarée dans un fichier Init Session Table.php comme l'exemple ci-dessous:
$_SESSION[Liste_Prenoms]['Banner']="./Modules/Banners/Livres.jpg";
  $_SESSION[Liste_Prenoms]['Location']="./Prenoms/Liste_Prenoms";


Le gars qui a réalisé un site avec ce modèle a enregistré des fichiers comportant du code php en .htm.


Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 août 2008 à 18:20
Alors ce sont des pages .htm qui sont includes dans des pages php

sinon fonctionnement impossible
mais là n'est pas ton pb
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
20 août 2008 à 19:48
Oui mais sauf que la page include (Liste_Prenoms Fr.htm) contient le code php cité plus haut.

Bon, je vais tenter de laisser cette quasiment vide mais en intégrant une page php dans un div par exemple.


Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 août 2008 à 20:07
include c'est déja du php

donc c'est normal que la page qui contient la fonction include soit en .php et contienne du code php
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
20 août 2008 à 20:49
Bon,
Mon Pb c'est de conserver le header, le menu + le bandeau, la page include et enfin le footer.

Sinon, je pourrais très bien ouvrir la page prénoms dans une nouvelle fenêtre mais ça va perturber la navigation.
C'est ça que j'arrive pas a maitriser.

Je ne peux pas nommer la page appelée en .php sinon bonjour le warning. Il s'attend a une page toto Fr.htm (voir ci-dessous):
<div id="frame">
             <?php
               include $_SESSION[$page]['Location']." $lang.htm";
             ?>
		</div>

et cette page là doit être déclarée dans Init Session Table.php comme dit plus haut.
Comment pourrais-je mettre une page "bidon" sans code php mais qui ferait appel à celle contenant le code php qui affiche les prénoms.
Ca commence a me prendre la tête, moi qui croyait toucher au but....

Merci en tous cas pour ton aide !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0