PHP: affiche seulement les variables et leur

Résolu/Fermé
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 18 déc. 2010 à 18:48
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 19 déc. 2010 à 18:40
Bonjour,
Dans la page Liste_Agenda sur le site http://editionsgracianne.free.fr/presse/Liste_Agenda.php ces liens sont sensé afficher :
1- le contenu complet dans la page Fiche_Agenda.php. Faites l'expérience en cliquant sur un lien. Ça fait deux jours que je bataille dessus et je vais péter un câble. En plus on devrais voir la Source et la Date (deux champs de la table).
Si vous regardez l'url il n'y a pas d'id mais d'où je le récupère celui là ? Ça m'éneeeeerve !

2- En regardant ma table sur le serveur je vois que la date ne comporte que des 0000 00 00 (que des zéros). Même en écrivant manuellement la date (voyez cette autre page http://editionsgracianne.free.fr/presse/Formulaire.php (user=test et pass=toto).
3- Le bouton Suivant non plus ne fonctionne pas. Je peux vous faire voir, si vous le souhaitez, la fonction Précédent Suivant, en lien ou en bouton.
<?php  
	// on affiche 20 événements par pages
	// appel au fichier fonctions_Agenda séparé pour les vérifs des limites et Nb de pages (qui ne MARCHE PAS !)
require 'Fonctions_Agenda.php';
// require 'Fonction_Change_Date.php'; // on va modifier le format de la date en français pour l'affichage

	// initialisation des variables 
$nombre = 20;  // on va afficher 20 résultats par page.

	// si la limite a été passée par un lien, on la prend en compte. 
$limite = (isset($_POST["limite"])) ? $_POST["limite"] : 0;

	// 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 compte le nombre total d'enregistrements dans la table.
$select = 'SELECT count(*) FROM agenda';
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

	// on vérifie la validité de notre variable $limite;
if ($limite < 0) $limite = 0;
if ($limite > $total) $limite = $total;

	// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
$req = 'SELECT * FROM agenda ORDER BY ID DESC limit '.$limite.','.$nombre.''; // n'affiche que les ID décroissant
// $req = 'SELECT * FROM agenda ORDER by Lien DESC limit '.$limite.','.$nombre.''; // n'affiche que les ID dans le désordre
// $req = 'SELECT * FROM agenda ORDER by Lien DESC, ID limit '.$limit.','.$nombre.''; // provoque une erreur de syntaxe SQL
$result = mysql_query($req)  or die ('Erreur : '.mysql_error() );

if ($total) 
{	
	// on affiche un  tableau avec la liste des événements
	echo "<table width='100%' bgcolor='#FFFFFF' cellspacing='0' cellpadding='0' align='center'>\n";

	// lecture et affichage des résultats  
    while($row = mysql_fetch_array($result)) 
	{
		echo "<tr>";
		echo "<td bgcolor='#FFFFFF' text-align='left'>"; 
	// on construit le lien vers la page Fiche_Agenda.php en lui passant en paramètre : la page, l'ID
		printf("<a href=\"Fiche_Agenda.php?page=%s&id=%s\">%s</a>",'',$page,$row['Lien']); // n'affiche que les variables dans la page cible et pas leur contenu ?
		echo "</td>";
		echo "</tr>\n";
	}   
	echo "</table>\n";
    // fin du tableau.
}
else 
{
	echo "La page demandée n\'existe pas"; 
}

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

	// si le nombre d'enregistrement à afficher est plus grand que $nombre 
if ($total > $nombre) {
	// soit on affiche des liens (n°) vers les pages
// affichePages($nombre,$page,$total);
	// soit on affiche les boutons Suivant et Précédent
    displayNextPreviousButtons($limite,$total,$nombre,$page);  
}
mysql_close();
?> 

Merci d'avance à ceux qui auront la patience de lire ce code.

A voir également:

10 réponses

Utilisateur anonyme
18 déc. 2010 à 20:51
pour afficher une variable il faut faire un echo avant.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 01:56
Salut maxime71500,
Mais je l'ai le echo dans la page cible (Fiche_Agenda.php):
<?php
require 'Fonctions_Agenda.php';  //contient les infos pour la connexion à la base

// 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é 
$link = '$link';
$select = 'SELECT Titre, Stitre1, Stitre, Info FROM agenda WHERE ID'; // On selectionne seulement la ligne qui correspond à l'événement choisi 
$result = mysql_query($select)  or die ('Erreur : '.mysql_error() );
$row= mysql_fetch_array($result);  

// on affiche  la fiche dans un tableau généré, dans le div id="global" comme le reste des pages. 
	echo '<table width="100%" align="center">';   // on affiche un tableau
	echo '<tr><td><h1>$Titre</h1></td></tr>';     // affiche la variable Titre
	echo '<tr><td><i>$Stitre1</i></td></tr>';     // affiche la variable Stitre1
	echo '<tr><td><i>$Stitre</i></td></tr>';      // affiche la variable Stitre
	echo '<tr><td><p>$Info</p></td></tr>';        // affiche la variable Info
	echo '</table>';                              // on ferme le tableau
mysql_close();
?>


Pourtant ce code ne m'affiche que les noms des variables et pas leur contenu !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Utilisateur anonyme
19 déc. 2010 à 13:44
quand tu fais des echo pour afficher les variables il faut utiliser des doubles guillemets com ça :

echo "<tr><td><h1>$Titre</h1></td></tr>"; // affiche la variable
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 14:35
Salut maxime71500,
Non, non, le Pb c'est que la variable n'est pas transmise. Si on regarde l'url de la page, il n'y a pas d'ID.
0
Utilisateur anonyme
19 déc. 2010 à 14:40
printf("<a href=\"Fiche_Agenda.php?page=%s&id=%s\">%s</a>",'',$page,$row['Lien']); ?

D'où sort ce %s ?
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 15:22
Salut SniperZelite,
C'est un script issu de mon site http://www.abarka.eu qui a une structure totalement différente. Toutes les pages passent par l'index qui contient des includes pour le header, le bandeau, le menu la page et le footer comme ceci:
<?php include"Html Pages/Share/Header $lang.php";?>
<?php echo "src=\"".getBanner($page)."\"";?>
<?php include "Html Pages/Share/Menu $lang.php";?>
<?php include(getLocation($page,$lang)); ?>
<?php include "Html Pages/Share/Footer $lang.php";?>
D'ailleurs le script pour les mises à jour ne fonctionnent plus, il m'affiche toujours la date du jour au lieu de la date de l'upload du fichier modifié. Mais ce n'est pas le problème ici.

Il se trouve que les fichier html étaient de type: Mon_Fichier Fr.htm car le site est multilingue et quand on se trouve sur page, en cliquant sur le drapeau on obtient la même page dans l'autre langue (je n'ai pas encore traduit tous ces textes). Mais c'est le principe.
Donc, si j'enlève ces %s (je n'avais pas osé jusqu'ici) tu pense que ça devrait marcher ?
D'ailleur voici la ligne originale, qui fonctionne très bien sur abarka, pour les prénoms:
// Construit le lien vers la page index.php en lui passant en paramètre : la page, la langue et la lettre
		printf("<a href=\"index.php?page=%s&lang=%s&lettre=%s\">%s</a>",$page,$lang,$lettre,$lettre);


Je vais supprimer ces %s pour tester, on verra bien. Merci pour le conseil !

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

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

Posez votre question
Utilisateur anonyme
19 déc. 2010 à 15:54
En fait , l'intérêt ici n'était pas de te faire supprimer les %s mais je souhaitais comprendre ce qu'il représentait , je me suis mal exprimé.
Pour ma part en paramètre j'aurais plutôt mis des variables du style $quelquechose.

Imaginons ici que notre langue soit l'anglais , la page qu'on souhaite atteindre serait : accueilenglish.php et la lettre : (j'ai pas trop compris ce que ca représentait^^) serait X.
Alors on aurait des variables du style :

$langue = "anglais";
$page = "accueilenglish.php"
$lettre = "X";

Après on se sert de ses variables pour les mettre dans le lien.

printf("<a href=\"index.php?page=$page&lang=$langue&lettre=$lettre\">%s</a>",$page,$lang,$lettre,$lettre);

Ce qui normalement te donnerait quand tu lis dans l'adresse une fois que tu as cliqué sur lien :
www.tonsite.fr/index.php?page=accueilenglish&lang=anglais&lettre=X.

Tu comprends ?

Donc par exemple.
Imaginons que tu proposes aux utilisateurs 3 langues : francais , anglais , italien.

Tu dois mettre dans ta page d'accueil ou autre :

<?php
echo "<a href=\"index.php?page=$page&lang=anglais&lettre=$lettre\">Anglais</a>";
echo "<a href=\"index.php?page=$page&lang=francais&lettre=$lettre\">Francais</a>";
echo "<a href=\"index.php?page=$page&lang=italien&lettre=$lettre\">Italien</a>";
?>

Tu remplaces $page par le nom de ta page dans la bonne langue pour chaque lien. $lettre remplace le aussi par ce qu'il t'interesse , je ne sais pas ce que ca représente.

Voila , si j'ai mal compris ré-expose moi le problème rapidement, j'essayerai de t'aider.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 16:40
Merci SniperZeElite,
Voici la page index de mon site (trilingue) d'ou vient ce code. Dans la cas présent, je n'ai pas besoin de langue (quoique...). Mais l'auteur veut mettre des texte en espagnol ou en anglais, elle peut le faire, seul le titre-lien qui apparait dans la liste sera dans une autre langue. restons simple.
<?php
	// Start Session
	session_start();
  
	// Envoi Cookies
	//include "Php/Init Cookies.php";
  
	// Initialisation
	include "Php/Init Session Table.php";
    include "Php/Init Preload Images.php";  
   

	// On récupère la valeur du paramètre lang 
	// Si la paramètre n'a pas été renseigné dans l'url alors $lang vaut par défaut "Fr"
	$lang=(!empty($_GET["lang"])) ? $_GET["lang"] : "Fr";

	// On récupère la valeur du paramètre page
	// Si la page n'est pas renseignée on utilise par défaut "Accueil"
	$page=(!empty($_GET["page"])) ? $_GET["page"] : "Accueil";

	// Retourne le nom de l'url à inclure ou celui de la page d'erreur si la page n'a pas été définie dans le paramétrage
	function getLocation($page,$lang)
	{
		$page = (isset($_SESSION[$page])) ? $page : "Erreur";
		if (!empty($lang)) $lang=" ".$lang;
		// Remplace éventuellement la séquence %s par la langue (seulement si la séquence %s a été explicitement définie dans le paramétrage)
		return sprintf($_SESSION[$page]["Location"],$lang);
	}
	
	// Retourne l'image de la bannière en fct de la page
	function getBanner($page)
	{
		$page = (isset($_SESSION[$page])) ? $page : "Erreur";
		return $_SESSION[$page]["Banner"];
	}	
?>

Ce qui me tracasse aussi c'est ce bouton Suivant qui s'affiche si la limite est + de 20 et qui ne mène nulle part !. Or je vient de voir une fonction globale dans ce script:
<?php
//=========================================
// information pour la connection à le DB
//=========================================
$host = '******';
$user = '********';
$pass = '********';
$db = '********';

// =================================================================================
// fonction qui affiche boutons Précédent et Suivant
// =================================================================================
function displayNextPreviousButtons($limite,$total,$nb) 
{ 
	global $lang;   // On accède aux variables globales définies dans index.php
	
	$limiteSuivante = $limite + $nb;
	$limitePrecedente = $limite - $nb;
	echo  "<table align='center'><tr>\n";
	if($limite != 0) 
	{
        echo  "<td valign='top'>\n";
		echo  "<form action=\"index.php\" method=method=\"get\">\n";
        echo  "<input type='submit' value='Précédente'>\n";
		echo  "<input type='hidden' value=".$page." name='page'>\n";
		echo  "<input type='hidden' value=".$lang." name='lang'>\n";		
		echo  "<input type='hidden' value=".$limitePrecedente." name='limite'>\n";
        echo  "</form>\n";
        echo  "</td>\n";
	}
	if($limiteSuivante < $total) 
	{
        echo  "<td valign='top'>\n";
		echo  "<form action=\"index.php\" method=method=\"get\">\n";
        echo  "<input type='submit' value='Suivante'>\n";
		echo  "<input type='hidden' value=".$page." name='page'>\n";
		echo  "<input type='hidden' value=".$lang." name='lang'>\n";		
		echo  "<input type='hidden' value=".$limiteSuivante." name='limite'>\n";
        echo  "</form>\n";
        echo  "</td>\n";
            
	}
	echo  "</tr></table>\n";
}
?>


Quand à la lettre, il s'agit d'une série de lettres de l'alphabet pour atteindre directement le prénom commençant par cette lettre sur mon site 'voir prénoms basques). Je n'en ai pas besoin ici.
Je me demande si le Pb ne vient pas de cette fonction qui permet d'afficher/masquer les boutons Précédent Suivant.

Tu m'a donné une idée: créer des variables $page "Fiche_Agenda.php". En fait mon Pb c'est la variable qui est = à rien donc pas d'affichage possible.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Regarde ta ligne :

echo "<form action=\"index.php\" method=method=\"get\">"

Tu as écrit : method=method=\"get\".

Et ca pour les deux formulaires. Dis moi si ca vient de la.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
Modifié par txiki le 19/12/2010 à 17:10
Bien vu l'ami mais ce n'était pas vraiment le post encore que... mais surtout la valeur de la variable $page (index.php au lieu de Liste_Agenda.php) dans le form.
function displayNextPreviousButtons($limite,$total,$nb)  
{  
// global $lang;   // On accède aux variables globales définies dans index.php 
 $page = "Liste_Agenda.php";   // On accède aux variables  
  
 $limiteSuivante = $limite + $nb; 
 $limitePrecedente = $limite - $nb; 
 echo  "<table align='center'><tr>\n"; 
 if($limite != 0)  
 { 
        echo  "<td valign='top'>\n"; 
  echo  "<form action=\"Liste_Agenda.php\" method=method=\"post\">\n"; 
        echo  "<input type='submit' value='Précédente'>\n"; 
  echo  "<input type='hidden' value=".$page." name='page'>\n"; 
//  echo  "<input type='hidden' value=".$lang." name='lang'>\n"; // on n'a pas besoin de la langue ici.  
  echo  "<input type='hidden' value=".$limitePrecedente." name='limite'>\n"; 
        echo  "</form>\n"; 
        echo  "</td>\n"; 
 } 
 if($limiteSuivante < $total)  
 { 
        echo  "<td valign='top'>\n"; 
  echo  "<form action=\"Liste_Agenda.php\" method=method=\"post\">\n"; 
        echo  "<input type='submit' value='Suivante'>\n"; 
  echo  "<input type='hidden' value=".$page." name='page'>\n"; 
//  echo  "<input type='hidden' value=".$lang." name='lang'>\n"; // on n'a pas besoin de la langue ici.   
  echo  "<input type='hidden' value=".$limiteSuivante." name='limite'>\n"; 
        echo  "</form>\n"; 
        echo  "</td>\n"; 
             
 } 
 echo  "</tr></table>\n"; 
} 
?>

Je n'ai d'erreur mais ça ne change pas pour les 20 suivants. J'ai beau regarder, je ne vois pas....
Tu ne peux pas t'imaginer à quel point tu me sort une épine (même si ce n'est pas terminé, loin de là...).

Je n'aurais jamais été chercher dans cette p---- de fonction. J'étais loin de m'imaginer que le Pb pouvait venir de là !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
Utilisateur anonyme
19 déc. 2010 à 17:49
:s J'arrive pas trop à voir où ca coince alors. Désolé.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 18:40
Merci quand même ! et bon Noël !


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