Page 1 sur 2

Afficher variable hors dun(e) while

Posté : 18 août 2005, 21:19
par AngEl.es
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

Posté : 18 août 2005, 21:54
par Cyrano
Précise donc ce que tu veux faire, ce sera plus facile de te répondre.

Posté : 18 août 2005, 22:09
par AngEl.es
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)

Posté : 18 août 2005, 22:20
par Cyrano
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é.

Posté : 18 août 2005, 22:31
par AngEl.es
:?
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?

Posté : 18 août 2005, 22:34
par Cyrano
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 ?

Posté : 18 août 2005, 22:38
par AngEl.es
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);
}
?>

Posté : 18 août 2005, 22:39
par Cyrano
fais afficher la requête générée et si elle a l'air correcte, essaye de l'exécuter directement via phpMyAdmin

Posté : 18 août 2005, 22:48
par AngEl.es
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

Posté : 18 août 2005, 22:54
par Cyrano
et pour cause : remplace les `(accent granve) par des ' (apostrophes) autour du "lang"

Posté : 18 août 2005, 22:56
par AngEl.es
Euh en faisant ca, ca na rien changél la reponse est la meme de mysql :(

Posté : 18 août 2005, 23:02
par Cyrano
Est-ce que la table sm_config existe bien et dans cette table les champs valeur et option également ?

Posté : 18 août 2005, 23:06
par AngEl.es
Oui tout a fait jai regardé plein de fois aussi pour etre bien sur.
Mais ca c'est juste :s

Posté : 18 août 2005, 23:07
par Cyrano
fais donc voir la structure de ta table, c'est pas normal

Posté : 18 août 2005, 23:09
par AngEl.es
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');