Variables dans `switch`

Répondre
Zobaree
le 10/09/2008 à 14:02
Zobaree
Salut à tous...

J'ai un petit soucis avec une variable:
Mon script compte 2 pages: l'une avec un pré-formulaire en html et l'autre contenant un applet java et le résultat après validation.

C'est la 2nd page qui coince:
<?php
// Récupère le résultat du formulaire de la page 1.
if ($_POST) {
$AlbumToSend = $_POST["album_list"];
}

// Envoi les information à la base de donnée.
function saveUploadedFiles() {
global $AlbumToSend;
mysql_query ("INSERT INTO photos SET `file_name`='".$fileName."', `album`='".$AlbumToSend."'");

// Après validation du formulaire (applet java).
switch ($mode) {
case 'send':
saveUploadedFiles();
break;
}

?>

Comme tout marche, j'ai mis seulement les lignes concernant la variable $AlbumToSend qui me pose problème.

Je ne vois pas comment faire pour qu'elle soit prise en compte dans la requête mysql.
J'ai bien essayé de l'introduire comme ça:
<?php 
function saveUploadedFiles($AlbumToSend)
?>

Puis plus bas
<?php 
switch ($mode) {
case 'send':
saveUploadedFiles($AlbumToSend);
break;
default:
}
?>

Mais rien n'y fait, le champ `album` n'est jamais remplis dans ma table....

Pourriez-vous me donner un p'tit coups de pouce?
Merci!
Zobaree
le 10/09/2008 à 14:05
Zobaree
J'ai oublier de préciser...
<?php
echo $AlbumToSend;
?>

... hors du `switch` m'affiche correctement ce que je veux (donc pas d'erreurs dans le formulaire)!
LA GLOBULE
le 10/09/2008 à 14:16
LA GLOBULE
Et ca correspond à quoi $fileName ?
La variable n'est pas définie. Il doit venir de la ton problème.

Tout comme $mode.

Et le switch, il est dans la fonction ? Ou non ?
Zobaree
le 10/09/2008 à 15:34
Zobaree
$fileName et $mode sont définis plus haut mais j'ai pas tout mis, le code est long.

Par contre le switch n'est pas dans la fonction!

En somme, il y a juste la variable $AlbumToSend qui ne marche pas. J'ai pas de résultat dans la base de donnée.
moogli
le 10/09/2008 à 16:03
moogli
lu,

la requete ets forcement foireuse, puisque la variable du nom n'est pas définit dans la fonction, il est possible qu'il ne la trouve pas (si elle n'est pas définie en globale).

Met nous, sur le wall, le code complet se sera plus simple !
Il en faut peu pour être heureux !!!!!
Zobaree
le 10/09/2008 à 16:21
Zobaree
Oki, voilà un copier/coller du script:
http://www.lephpfacile.com/wall/wall-1622.php

Certaines fonctions sont définies dans le common.php:
- doquery (requête sql, table)
- gettemplate, parsetemplate et display (lire le fichier template html)
Tout cela marche correctement, je l'utilise déjà sur une 15aines de pages.

Un `echo $AlbumToSend;` hors du `switch` et des `function` m'affiche ce que je veux.
Par contre, pas moyen de l'utiliser dans une fonction! smiley
Zobaree
le 11/09/2008 à 13:18
Zobaree
Ça affiche correctement le numéro de l'album choisi (grâce au formulaire de la page 1)
LA GLOBULE
le 11/09/2008 à 13:26
LA GLOBULE
Et donc ta requête a une bouille normale ?

Si oui, c'est que c'est ton doquery qui merde.
Tu as moyen de checker la dernière erreur SQL avec un mysql_error() ?
Zobaree
le 11/09/2008 à 14:15
Zobaree
Ma fonction `doquery` comprend un `echo mysql_error();` et des `or die` après `mysql_connect`, `mysql_select_db` et `mysql_query` qui marchent puisse que j'ai déjà eu des erreurs de syntaxe sur d'autres pages.

Preuve que `doquery` fonctionne: quand j'appelle `saveUploadedFiles`, j'ai une nouvelle entrée dans la base donnée avec les champs `file_name`, `date` et taille de l'image correctement remplis. Seul `album` reste vide.

Comme si `$AlbumToSend` ne retournait aucune valeur lorsqu'elle est appelée dans `saveUploadedFiles`.
Je pige pas pourquoi...
Répondre
LoadingChargement en cours