Afficher variable hors dun(e) while

Eléphanteau du PHP | 21 Messages

18 août 2005, 21:19

Bonjour, en continuant sur mon site jai encore eu un probleme :/
Alors vla je me demandais si il y avait pas moyen de mettre dans une variable (jai choisi $valeur) La valeur d'une entréé dans une table, mais sans devoir faire un while
De facon a que cette valeur je pourrais lutiliser dans toute la page apres :/,

Merci
Modifié en dernier par AngEl.es le 18 août 2005, 22:10, modifié 1 fois.

Mammouth du PHP | 19672 Messages

18 août 2005, 21:54

Précise donc ce que tu veux faire, ce sera plus facile de te répondre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 22:09

Oui c'est vrai je vais etre plus precis :wink:
Enfaite jai une table config dans ma bdd
Et cette table eura champ : option et champ : valeur
Avec des entrées comme :
Lang ==> French
Titre ==> Mon site
Theme ==> Design
...
Alors dans ma page index.php quand je veux recuperer une des valeurs de la table je fais appel a ma fonction lirevaleuroption();
Pour linstant ce que jai fais, pour la langue du site, c'est
lirevaleuroption('lang');
et ma fonction se comporte comme ca :
<?php
function lirevaleuroption($option)
{
	$var1 = mysql_query('SELECT * FROM sm_config WHERE option=' . $option . '');
	$valeur = mysql_result($var1);
}
?>
Voila, de facon a que $valeur puisse etre french (en precisant que c'est le cas dans mon entree lang, french)

Mammouth du PHP | 19672 Messages

18 août 2005, 22:20

Il manque un index pour pointer sur un des résultats obtenus:
$valeur = mysql_result($var1, 0);
Mais ça veut dire aussi que tu ne récupères que le premier résultat, pas obligatoirement celui souhaité.

Je ne comprends toujours pas ce que tu veux faire en réalité.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 22:31

:?
Ok att
Jvais essayer dexpliquer dune autre facon
Je vais faire dune facon que les (futurs :p) administrateurs du site, pouront changer la langue quand ils voudront, en passant par ladministration.
Ce sera comme ca
Une table config
Avec 2 champs : option et valeur
La langue du site ne sera enregistrée que sur une simple entréé
Donc :
option : lang
et
valeur : french
--- Tout ca ce n'est que pour la langue, apres je vais mettre dautres informations aussi, comme le theme du site, date de creation, et tout des truk comme ca ---
Alors dans ma page fonction.php jai une fonction comme ca
<?php
function lirevaleuroption($option)
{
	$var1 = mysql_query('SELECT valeur FROM sm_config WHERE option=' . $option . '');
	$valeur = mysql_result($var1, 0);
}
?>
dans ma page index.php biensur j inclus la fonctions.php ^^
Alors apres ca je vais comme ca
lirevaleuroption('lang');
include('lang/' . $valeur . '.php'); //Pour inclure la langue du site
Moi je mimagine que ma fonction est remplie de fautes non?

Mammouth du PHP | 19672 Messages

18 août 2005, 22:34

Non, c'est correct, mais ça laisse pas grand choix : une seule langue, la première enregistrée dans la base point-barre... Pourquoi tu ne récupères pas les diverses langues disponibles dans une boucle pour créer une liste déroulante pour le choix ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 22:38

Bah par ce que je ne compte pas a faire vraiment un site avec beaucoup de choix et doptions pour les visiteurs :?
Enfin c'est par ce que c'est mon premier.
Mais bon , tu dis que ma fonction est correcte?
Pourtant jai ce probleme:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\sayman\fonctions.php on line 5
fonctions.php :
<?php
function lirevaleuroption($option)
{
	$var1 = mysql_query('SELECT valeur FROM sm_config WHERE option=' . $option);
	$valeur = mysql_result($var1, 0);
}
?>

Mammouth du PHP | 19672 Messages

18 août 2005, 22:39

fais afficher la requête générée et si elle a l'air correcte, essaye de l'exécuter directement via phpMyAdmin
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 22:48

Ben vla jai tapé ca :
SELECT `valeur` FROM `sm_config` WHERE option=`lang`
Et voila ce que Mysql reponds
MySQL a répondu:Documentation
#1064 - Erreur de syntaxe pr�s de 'option=`lang` LIMIT 0, 30' � la ligne 1

Mammouth du PHP | 19672 Messages

18 août 2005, 22:54

et pour cause : remplace les `(accent granve) par des ' (apostrophes) autour du "lang"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 22:56

Euh en faisant ca, ca na rien changél la reponse est la meme de mysql :(

Mammouth du PHP | 19672 Messages

18 août 2005, 23:02

Est-ce que la table sm_config existe bien et dans cette table les champs valeur et option également ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 23:06

Oui tout a fait jai regardé plein de fois aussi pour etre bien sur.
Mais ca c'est juste :s

Mammouth du PHP | 19672 Messages

18 août 2005, 23:07

fais donc voir la structure de ta table, c'est pas normal
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

18 août 2005, 23:09

CREATE TABLE `sm_config` (
  `option` varchar(255) NOT NULL default '',
  `valeur` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `sm_config` VALUES ('lang', 'french');