PHP: ou est l'erreur ?

Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 27 août 2008 à 21:02
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 28 août 2008 à 00:08
Bonjour,
Sur le site que je suis en train de reconstruire (http://txiki.free.fr/ menu Prénoms puis Prénoms basques (dernier lien, celui marqué Popup) j'arrive a afficher la liste des 20 premiers prénoms de la table (bien que je n'arrive pas a afficher un tableau avec l'alphabet, les lettres étant des liens directs vers l'initiale du prénom) mais en cliquant sur l'un de ces prénoms, on devrait afficher son origine, l'éphémeride et l'équivalent français, ces de"ux derniers s'ils existent.
Comme vous pouvez le constater, ça m'affiche array etc... et un truc qui moi, me parait très bizarre, est le chemin qui s'affiche au bas de la popup quand on passe la souris sur un prénom.
Voici une partie du script ci-dessous (je n'ai pas mis les infos de connexion à la base)

// =================================
// On recupere la variable "id" correspondant au prénom choisi
// ======================================
$id = $_GET["id"]; // La manipulation de $id est plus simple que celle de $_POST["id"]
	echo "<pre>"; // test pour voir ce qui est passé dans la variable $id
	print_r($_GET);echo "</pre>"; // test pour voir ce qui est passé

//======================
// connection à la DB
//======================
$link = mysql_pconnect ($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 affiche les infos de la fiche correspondante au lien cliqué 
//==============================================
$select = "select * FROM prenomsfeminins WHERE id='$id'"; // On selectionne seulement la ligne qui correspond au prénom choisi 
$result = mysql_query($select)  or die ('Erreur : '.mysql_error() );
$row= mysql_fetch_row($result);  // mysql_fetch_row génère un tableau correspondant a la ligne selectionnée de la BDD
// Les informations sont accessibles par $row["id"], $row["Prenom"], $row["Origine"]...

// ========================================================
// Affichage de la fiche prénom dans un tablea&u dynamique 
// ========================================================
  echo "<table width='80%' bgcolor='#FFFFFF' border='0' cellspacing='0' cellpadding='4' align='center'>\n";
		echo "<a href='Fiche_Prenom Fr.php?id=".$row['Prenom']."></a>";  

// première ligne on affiche le titre "Prénom basque" 
        echo "<tr text-align='center' padding='3px'>";
        echo "<td bgcolor='#FFFFFF'><strong>" .$row['Prenom']."</strong></td>"; 
        echo "</tr>\n";

// lecture et affichage des résultats sur plusieurs lignes selon les cas (équivalent français etc).    
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='left'>" .$row['Origine']."</td>"; // affiche l'origine du prénom.
  echo "</tr>\n";
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['Ephemeride']."</td>"; // affiche l'éphéméride du prénom s'il existe.
  echo "</tr>\n";
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='center'>" .$row['FrenchName']."</td>"; // affiche l'équivalent français du prénom s'il existe.
  echo "</tr>\n";
  echo "</table>\n";
    // fin du tableau.
mysql_close();
?>


Ca fait un bon moment que je me casse les dents dessus et comme je ne maitrise pas trop tout ça, je ne sais pas trop où chercher les éventuelles erreur de syntaxe, car je pense qu'il s'agit une erreur de syntaxe.

De plus, comme j'utilise des variables de sessions, je premier lien ne fonctionne pas car il cherche la page Liste_Prenom FR.htm alors que j'ai mis ceci dans l'index mais il n'a pas l'air d'en tenir compte:
<div id="frame">
             <?php
				if($_SESSION[$page]['Location']=="Liste_Prenoms") 
				{ 
				include $_SESSION[$page]['Location']." $lang.php"; // pourquoi ça ne marche pas ?
				} 
				else 
				{ 
				include $_SESSION[$page]['Location']." $lang.htm"; 
				}   
			?>
		</div>

Merci d'avance a ceux qui pourraient m'éclairer.
A voir également:

15 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
27 août 2008 à 21:07
Bsr

Hein ? Ta page est conditionnée par une session ? Jamais vu un truc comme ça ;-)

Pour savoir ce que contient ta session ajoute


             <?php
echo "<pre>";
var_dump($_SESSION);
echo "</pre>";
				if($_SESSION[$page]['Location']=="Liste_Prenoms") 
				{ 

0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 21:20
bonsoir essaye plutot ça :

$req = "select Prenom, Origine, Ephemeride, FrenchName FROM prenomsfeminins WHERE id='$id'"; // On selectionne seulement la ligne qui correspond au prénom choisi 
$res= mysql_query($select)  or die ('Erreur : '.mysql_error() );
while(list($Prenom, $origine, $Ephemeride, $FrenchName)=mysql_fetch_array($result))
{
    echo '<td>'.$Prenom.'</strong></td><br/>'; 
    echo '<td>'.$origine.'</strong></td><br/>'; 
    echo '<td>'.$Ephemeride.'</strong></td><br/>'; 
    echo '<td>'.$FrenchName.'</strong></td><br/>'; 
}


voila un petit exemple je t'ai pas fait la mise en page ,mais utilise pluto list() pour retourner des resultats.
La je pense que ca devrais marcher.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
27 août 2008 à 21:30
Salut php, ben moi non plus, j'avais jamais vu ça mais c'est une "tronche" qui avait fait ce site pour quelqu'un qui ne l'a pas voulu, alors je l'ai pris à mon compte. En tous cas c'est bien pratique pour les versions linguistiques.
Les variables sont déclarées dans le fichier Init Session Table.php (tient curiosité, il utilise des espaces pour les Fr, An. Par exemple toto Fr.htm. Toutes les pages quasiment sont en htm sauf celles que j'ai pour les prénoms et qui me tient énormément à coeur. En fait je voulais obtenir un truc comme celui-ci, en espagnol:
https://www.euskaltzaindia.eus/index.php?option=com_ecoeoda&task=bilaketaPortada&Itemid=472&lang=eu/neskak.asp
Voici la partie que ça m'affiche mais autant te dire que je ne comprends rien.
["Origine_noms"]=>
  array(2) {
    ["Banner"]=>
    string(28) "./Modules/Banners/Livres.jpg"
    ["Location"]=>
    string(22) "./Prenoms/Origine_noms"
  }
  ["Intro_Prenoms"]=>
  array(2) {
    ["Banner"]=>
    string(28) "./Modules/Banners/Livres.jpg"
    ["Location"]=>
    string(23) "./Prenoms/Intro_Prenoms"
  }
  ["Fiche_Prenom"]=>
  array(2) {
    ["Banner"]=>
    string(28) "./Modules/Banners/Livres.jpg"
    ["Location"]=>
    string(22) "./Prenoms/Fiche_Prenom"
  }
  ["Liste_Prenoms"]=>
  array(2) {
    ["Banner"]=>
    string(28) "./Modules/Banners/Livres.jpg"
    ["Location"]=>
    string(23) "./Prenoms/Liste_Prenoms"
  }
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 21:36
je termine un truc et je te regarde ça
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
27 août 2008 à 21:48
Je te remercie comme tu ne peux pas t'imaginer. Je suis totalement autodidacte en tout, y compris en html que je maitrise désormais assez bien (pour ne pas dire plus) ainsi que les css qui m'a changé la vie.
J'ai des lacunes en javascript et php, surtout au niveau de la syntaxe!
Ça fait 1 mois que je bataille la dessus. C'est une base de données du gouvernement autonome basque que je suis en train de traduire pour mon site perso et j'en serais tellement fier s'il fonctionnait comme la version espagnole.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
27 août 2008 à 21:54
C'est pourtant clair ! Lol
Ca signifie que dans le tableau superglobal associatif $_SESSION tu as 4 variables (ou plutôt 4 clés) respectivement "Origine_noms", "Intro_Prenoms", "Fiche_Prenom" et "Liste_Prenoms"

Bref tu peux accèder à $_SESSION["Intro_Prenoms"] par ex

$_SESSION["Origine_noms"] est une variable qui contient elle-même un tableau de 2 éléments d'où le array(2)
le premier élément est "Banner" le second "Location"
Tu peux donc écrire $_SESSION["Origine_noms"]["Banner"] ou encore $_SESSION["Origine_noms"]["Location"]

$_SESSION["Origine_noms"]["Banner"] contient une chaîne de 28 caractères dont la valeur est "./Modules/Banners/Livres.jpg"

D'où proviennent toutes ces valeurs ? Aucune idée de ton paramètrage sans doute...

Maintenant pour être tout à fait complet il te faut connaître le contenue de la variable $page
pour déterminer ce que peut bien contenir $_SESSION[$page]['Location']


Ajoute donc var_dump($page); après var_dump($_SESSION);


le test if($_SESSION[$page]['Location']=="Liste_Prenoms") semble incohérent

On devrait plutôt tester if($page=="Liste_Prenoms") mais je peux me planter lol
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
27 août 2008 à 22:21
Wouaaaaaouh ! YEEEES !
Ca marche du feu de dieu ! T'es un MONSIEUR, toi. Bon ça c'est réglé.
Je n'ai pas compris grand chose a tes histoires de variable super globale mais voici un extrait du fichier Init Session Table.php:
$_SESSION[Accueil]['Banner']="./Modules/Banners/Biarritz.jpg"; // chargement de l'image du bandeau
  $_SESSION[Accueil]['Location']="./Html Pages/Public/Accueil"; // chargement de la page d'accueil (française par défaut)


Putain ! qu'est-ce que je suis HEUREUX ! tu n'a pas idée. Depuis 1 mois que je pinaille avec ça. Triturer et retriturer je ne m'en sortais plus.

Maintenant, reste a afficher le texte de l'origine du prénom cliqué mais ça me met l'erreur: Erreur : Query was empty (ma requête est vide ? c'est ça ? il s'agit du lien marqué pop up. Mais je corrige tout ça, et grace à qui ? à toi chef.

Merci, merci et milles mercis !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 22:00
Moi aussi j'ai été un audtodidacte au début,et maintenant c'est mon métier la prog.
Bon j'avais pas tout vu dans ton 1er message avec tes sessions.

Avant de regler le probleme de ta session il faut deja que tu arrive a récuperer les infos dont tu a besoin.
Les sessions vont servir à,dans ce cas precis à aller tel ou tel fichier en fonction de la session.

Le but maintenat c'est qu'avec ta requte tu recupere le nom le prenoms etc.
essaye deja ma méthode (j'ai ecrit une bétise j'ai mis ça =mysql_fetch_array($result))

il faut mettre ça =mysql_fetch_array($res))
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
27 août 2008 à 22:31
Moi aussi j'ai été un audtodidacte au début

Yes ! ;-)
La seule, la vraie manière d'apprendre soyons honnêtes. Les formations, les cours c'est bien mais c'est pas la panacée ...
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352 > PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
27 août 2008 à 22:43
Avec de la volonté et de l'acharnement on y arrive.
je n'oublie pas que j'ai débuté il y a un petit peu de temps maintenant avec l'aide des forumistes ,aussi c'est un juste retour de manivelle ,je trouve bête de garder son "peu" de savoir pour soi ,mieux vaut le faire partager.

ceci dit personellement je ne connais pas tout ,mais quand même un petit peu lol! ;-)
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 22:37
content que ca marche.
maintenant pour ton pb de session tu peut je pense faire autrement suivant la config de ton site.

je te prends un exemple je viens du site que tu a indiqué 'l'espagnol) je clique sue le 1er prenom abantza

si tu regarde l'url qui est envoyée c'est ça

https://www.euskaltzaindia.eus/index.php?option=com_ecoeoda&task=bilaketaPortada&Itemid=472&lang=eu/izenak.asphizkuntza=es&onoma=izenak&testua=Abantza

je t'ai mis toutes les variables passées en get ,en gras.
tu peut voir qu'il y en 3
1)hizkuntza qui est = a es
2)onoma => izenak
3)testua => Abantza

en fonction de ces variables que tu recupere en get (tu peut aussi le faire ausi en post avec des input type text cachés) tu peut creer tes propres requetes qui vont t'afficher les valeurs que tu veut.

Tout dépend ensuite de la structure de ton site.

D'autre part tu avaismis <td bgcolor='#FFFFFF' text-align='left'> utilise plutot des <div> et ton css

Maintenant, reste a afficher le texte de l'origine du prénom cliqué mais ça me met l'erreur: Erreur : Query was empty (ma requête est vide ? c'est ça ?


c'est quoi ta requete et ou elle est placée?
bon courage
@+
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
27 août 2008 à 23:06
Merci a tous mais je retombe dans le découragement. Tout est ici (c'est le tableau qui liste les prénoms liens pour pouvoir cliquer sur l'un d'eux et avoir le détail.
if($total) {
  echo "<table width='80%' bgcolor='#FFFFFF' cellspacing='0' cellpadding='0' align='center'>\n";
// première ligne on affiche l'alphabet/lien
        echo "<tr text-align='center' padding='3px'>";
        echo "<td bgcolor='#CCCCCC'><a href='Liste_Prenoms?id=".$row['Lettre']."'> </a>";
        echo "</tr>\n";
// lecture et affichage des résultats  
    while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td bgcolor='#FFFFFF' text-align='left'>"; 
  echo "<a href='Fiche_Prenom?id=".$row['Prenom']."></a>";  
  echo "</td>";
  echo "<td bgcolor='#FFFFFF'>" .$row['Prenom']." </td>"; // affiche le prénom
  echo "</td>";
  echo "</tr>\n";
 }
  echo "</table>\n";
    // fin du tableau.
}
else echo "Pas d\'origine pour ce prénom";


Ah j'oubliais: j'ai aussi un champ Lettre pour l'initiale du prénom et que je voulais afficher en début de liste (toutes les lettres mais ne comment faire. Rien ne s'affiche ! ;-((

Si vous regardez dans la barre des taches vous verrez que l'url est zarbie ! on dirait que le code n'est pas fermé et j'ai essayé tellement de choses.... mais rien n'y fait.

Merci en tous cas pour votre énorme patience avec le boulet que je suis !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
27 août 2008 à 23:32
il manque une apostrophe dans la ligne avant le caractère >

 echo "<a href='Fiche_Prenom?id=".$row['Prenom']."></a>";  


il faut écrire :

 echo "<a href='Fiche_Prenom?id=".$row['Prenom']."'></a>";  



C'est pour ça que les liens sont bizarres


De plus c'est quoi cet ID ? si c'est le prénom pourquoi l'appellé id ????

Enfin où est passée la variable lang ???
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
27 août 2008 à 22:41
Ben j'ai été un peu vite là ! hum.

C'est parfait pour la liste des prénoms et les limites (20 par page) mais maintenant il ne trouve plus la fiche détaillée avec l'origine etc... Les boules.
Je suis sur (enfin presque) que ça vient de cet index [if($page=="Liste_Prenoms")] ou on devrais lui ajouter la Fiche_Prenom avec un OR ou AND peut-etre ?
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 22:46
Bienvenu dans le monde de la prog.. ;-)
ce n'est pas le dernier bug que tu aura je te rassure
est ce que tu a un dossier sur ton site qui est dans le repertoire /Prenoms/Liste_Prenoms ?
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
27 août 2008 à 22:49
Ca m'étonnais aussi qu'une aussi simple correction fasse que tout rentre dans l'ordre

J'ai dit que ça me sembait plus logique de tester $page directement pas que c'était la solution hélàs
D'ailleurs le test de départ il vennait d'où ? Il est pas tombé là par hasard ?

Note en plus comble de malchance parmi la multitude de langages qui existe PHP est certainement celui de part sa nature (couplé avec HTML) qui est le plus difficile à déboguer faute de ... débogueur !
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 22:59
surement que la structure du site est différente.
sur le site d'origine ils passe tout par get il n'y a aucun input hidden aucun form
donc a mon avis il doivent avoir autant de pages que de pays ,c'est pas le plus simple.

en recuperant $page par un echo $_SESSION[$page'] c'est sur qu'il verra ce qu'elle contient cette variable ,mais si il a pas le fichier correspondant je pense que rien ne sera trouvé.

moi je verrais plutot recuperer les variables get ou post contenant le prenom le pays (reste à savoir de quoi il a besoin) et d'executer la requete adéquate. je rajouterais une varaible etat qui aurai comme valeur liste_prenom ou fiche prenom et dans la page php inserer des fonction suivant l'etat qui seront appelée avec un switch $_Get['etat']

exemple rapide

$etat=$_get['etat'];

function fiche_prenom(prenom)
{
$prenom=$_GET['prenom'];
$req="select Prenom, Origine from prenom where Prenom='".$prenom."';
$res=mysql_query($req);
//ensuite l'affichage
}
 //et dans la meme page il suffit de mettre
  switch($etat)
  {
    case "fiche_prenon" :
   fiche_prenom($_GET['prenom'];
   break;
  }

}


bien sur l'iurl du lien devra etre de la forme
http://lesite?etat=fiche_prenom&prenom=<?PHP $prenom ?>
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
27 août 2008 à 23:23
je file au dodo

tu utilise $row['Prenom']

emploi plutot list() et au lieu de faire select *
fait plutot select ton_champ1, tonchamp2, etc...
ensuite comme je t'ai montré tt à l'heure


while(list(ton_champ1, ton_champ2)=mysql_fecht_array($res))
{
"<a href='Fiche_Prenom?id='".$ton_champ1."'&param2='".ton_champ2."'></a><br/>"
}


ensuite ton lien <a href='Fiche_Prenom?id=".$row['Prenom']."></a>";ne peut fonctionner comme ca
que si ton fichier ou tu exectue la requete est dans le meme repertoire.
regarde si c'est le cas
bonne soirée
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
27 août 2008 à 23:25
Question : toutes ces pages Liste_Prenoms , Fiche_Prenoms etc sont-elles censées être affichées dynamiquement bien sûr sur la même page index.php à l'intérieur du tag div nommé frame ?

Si oui quel est le code de la page index.php ?

parce que si c'est le cas pas étonnant que le fameux test if($page==) ne fonctionne pas à chaque fois : faut pas écrire ça du tout de cette façon.

0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
28 août 2008 à 00:08
Bon, vous m'enbrouillez là et moi aussi je vais au dodo.
Tous ces fichiers se trouvent dans le répertoires Prenoms ainsi que fonctions.php.
toutes ces pages Liste_Prenoms , Fiche_Prenoms etc sont-elles censées être affichées dynamiquement bien sûr sur la même page index.php à l'intérieur du tag div nommé frame ?
Réponse OUI.

Le code de l'index:
<div id="frame">
             <?php
				if($page=="Liste_Prenoms") 
				{ 
				include $_SESSION[$page]['Location']." $lang.php"; 
				} 
				else 
				{ 
				include $_SESSION[$page]['Location']." $lang.htm"; 
				}   
			?>
		</div>


Le Pb c''est qu'il insère le fichier Liste_Prenoms Fr.htm et non Liste_Prenoms Fr.php (et en plus, je me fous complètement de la langue pour ces pages des prénoms. La version espagnole est accessible en cliquant sur le logo vert de la page, alors pour les versions, on s'en tape dans le cas présent.

En tous cas merci pour votre patience mais je reprendrais demain, après une bonne nuit de sommeil, j'y verrai peut-etre plus clair !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0