IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Variable] Portée d'une variable en include


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Leoxp
    Invité(e)
    Par défaut [Variable] Portée d'une variable en include
    Salut à tous !

    Je travail actuellement sur un module d'upload multiple pour un site internet. Ce module est sous flash et, pour chaque fichier ajouté, il appelle une page PHP qui va s'occuper d'inclure le fichier dans une base de données (MySQL), de déplacer le fichier en le compressant et de faire un retour au module flash.

    Seulement, mon insertion dans la base de données s'effectue bien hormis une variable dont la portée semble s'arrêter à l'intérieur de mon fichier...

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?
    	include ("../php/connect.php3");
    	include ("../php/login.php3");
    	include ("../php/lib/jpegcompresseur.php");  
     
    	$userId=$logUserId;
      	$sql="insert into images values ('','','$userId','".time()."','".addSlashes(@$_GET['idDossier'])."','',0)";
     
    	if (isset($_FILES["Filedata"])) {
    		if($_FILES["Filedata"]['error'] == 0){ 
    			$save_path = "../../images/galerie/";
    			if (isset($_GET['dossierup'])) $save_path.=$_GET['dossierup'].'/';		
     
    			if (file_exists($save_path.$_FILES['Filedata']['name'])) {
    			    echo utf8_encode('Un fichier portant ce nom est déjà en attente de traitement');
    	  		} 
    			else {
    				if ($result=$cbd->dbQuery($sql)) {
    					$id=$cbd->dbInsertId();
    					if (JPEGCompresseur($_FILES["Filedata"]["tmp_name"],$save_path.$id.".jpg",850,150)) {
    			        	echo utf8_encode("1");
    				    } 
    					else {
    				    	echo utf8_encode('Erreur d\'écriture');
    				    }		     	
    				}
    				else {
    					echo utf8_encode('Impossible de créer les données correspondantes');
    				}
    			}
    		} 
    		else {
    		  switch ($_FILES["Filedata"]['error']) {
      		  case 1:
      		  echo 'Fichier trop volumineux';
      		  break;
      		  case 2:
      		  echo 'Fichier trop volumineux';
      		  break;
      		  case 3:
      		  echo 'Fichier incomplet';
      		  break;
      		  case 4:
      		  echo 'Pas de fichier';
      		  break;
      		  case 5:
      		  echo 'Erreur inconnue';
      		  break;
      		  case 6:
      		  echo 'Erreur serveur'; //pas de dossier tmp
      		  break;
      		  case 7:
      		  echo utf8_encode('Erreur d\'écriture');
      		  break;
      		  case 8:
      		  echo 'Extension incorrecte';
      		  break;
      		  default:
      		  echo 'Erreur inconnue';
      		  break;
    		  }
    		}
    	} 
    	else {
    	  echo utf8_encode("Pas de fichiers envoyés");
    	}
    	echo utf8_encode('.');
    ?>
    • Le fichier "connect.php3", comme vous l'aurez deviné, contient simplement la connexion à la base de données et créé ainsi un objet : $cbd.
    • Le fichier "login.php3" se charge de retrouver le cookie associé au compte utilisateur et créé plusieurs variable dont $logUserId qui contient l'identifiant de l'utilisateur.
    • Enfin, le fichier "jpegcompresseur.php" est juste la définition d'une fonction "JPEGCompresseur" qui va se charger de redimensionner le fichier et le copie vers sa destination.



    Tout se passe bien sauf que, quand je vais voir dans ma BD, il semblerait que la variable $userId soit égale à 0...

    Je ne comprends pourtant pas. J'utilise la même disposition pour d'autres pages et ça marche parfaitement bien. J'ai essayé d'enlever mon JPEGCompresseur et mettre un simple move_uploaded_file mais ça ne marche toujours pas.

    Si je met en clair dans le script

    La ça fonctionne.

    Si quelqu'un à une idée car j'y planche depuis hier soir et rien à faire...

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    t'a variable $userId doit etre mal interprètées dans ta chaine sql, un conseil fait comme pour les fonctions pour tes variables ca évite tous soucis d'interprétation
    cf ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="insert into images values ('','','".$userId."','".time()."','".addSlashes(@$_GET['idDossier'])."','',0)";
    sinon une chose me chagrin c'est tes includes en .php3, a tu une raison pour forcer l'exécution en php3?

    dernière chose une variable gardera sa porté même si elle provient d'un fichier include (préfère include_once), les problèmes de porté se pose pour les fonctions et classes

    edit:
    possible qu'il faille enlevé les simple quote autour de $userId c'est un int et non une string

  3. #3
    Leoxp
    Invité(e)
    Par défaut
    Merci Helfima d'avoir répondu site vite.

    J'avais en fait déjà testé ta solution. Mais ça n'a rien fait de plus

    Sinon mon choix en .php3 remonte à mes débuts en php. Mais j'ai créé tellement d'autres pages depuis que si je change cette extension, je vais devoir modifier tous mes autres fichiers...
    Mais tu as raison, un simple .php devrait suffire.

    Penses-tu que l'erreur puisse venir de là ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    tu as du écrire quand je corrigeai mon texte précédent ca vient du type du champ pour userId dans la base de données, essai sans les simples quotes autour de userId
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="insert into images values ('','',".$userId.",'".time()."','".addSlashes(@$_GET['idDossier'])."','',0)";

  5. #5
    Leoxp
    Invité(e)
    Par défaut
    Et non hélas, ça n'a rien changé...

    Je continue à regarder mon code de A à Z mais je ne comprends vraiment pas ce qu'il se passe. Je crois que je vais être obligé de lire mon cookie à même le script mais ça me saoule de pas comprendre

    Edit : En fait j'ai l'impression que les pages appelées par mon application flash n'arrivent pas à lire les cookies. Car lorsque je test le cookie directement dans mon script, il ne me renvoi rien... Une piste de plus à explorer...
    Dernière modification par Leoxp ; 06/03/2009 à 16h48.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    fait un echo de $sql
    récupère la ligne sql et passe la dans phpmyadmin ou ton gestionnaire mysql et test ta ligne sql ca vient généralement de la et sourtout tu verra sur $userId est bien null, si c'est le cas pose des echo "userId=".$userId dans ton code et remonte le au fur et à mesure dans code pour voir ou tu perds ta valeur si tant est qu'elle a une valeur un jour

Discussions similaires

  1. Portée d'une variable tableau dans une fonction JS
    Par renaud26 dans le forum jQuery
    Réponses: 7
    Dernier message: 02/08/2011, 10h24
  2. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  3. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  4. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo