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 :

problème de variable vide


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut problème de variable vide
    Bonjour à tous , je ne sais pas si je poste vraiment dans la bonne session mais vu que mon problème vient d'une variable..
    Dans mon code je récupère différentes infos dans mon switch . Jusque la pas de problème quand je fais un echo sur mon switch ma variable est bien rempli.
    Le problème c'est que deux lignes en dessous, dans mon if la variable est vide et je n'arrive pas à comprendre pourquoi?
    Si quelqu'un a une idée même la plus simple possible car je suis vraiment bloquée. Merci d'avance à ceux qui prendront le temps de me répondre

    voici mon code :

    Code php : 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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    //Initialisation de la date
           $jour  = date("j");
    	   $mois  = date("n");
    	   $annee = date("Y");
     
    		//Création du fichier
    		$nomFic = "EDI_{$_SESSION['idUser']}.txt";
    		unlink ($nomFic);
    		copy ("vide.txt",$nomFic);
    		$file = fopen($nomFic,"w");
     
    		// Enregistrement d'entête D1
    		//=======================================================================
     
    		$char[] = array();
    		$cptChar = 0;
     
    		//début modif
     
    			$req = "SELECT * FROM messagese,oa,societe,entetecommande
    					WHERE MESCODE='$mescode' AND MESTYPENR='type1'
    					AND OANOA='$noa' AND oa.OACSOC = entetecommande.ENTSCH 
    					AND oa.OACSOC = societe.SOCID";
    			$res = mysql_query($req) or die ("erreur $req ");
    			while($mes = mysql_fetch_object($res))
    			{
     
    				// 1°) Remplissage de la valeur du champ
    				// -----------------------------------------------------------------------
    				$mesvaleur = $mes->MESVALEUR;
    				$mescode = $mes->MESCODE;
    				$socTabEm = array();
    				$socTabEm = getSociete($chargeur);
    				$cdeTabEm = array();
    				$cdeTabEm = getCommande($cdeId);
     
     
    				switch($mescode)
    				{
     
    					case 'siret_emetteur' :
    						$varw = $socTabEm[6];
    					break;
     
    					case 'nom_emeteur' :
    						$varw = $socTabEm[0];
    					break;
     
    					case 'siret_transporteur':
    						$varw = $socTabEm[6];
    					break;
     
    					case 'nom_transporteur':
    						$varw = $socTabEm[0];
    					break;
     
    					case 'ligne_adresse1' : 
    						$varw = $socTabEm[14];
    					break;
     
    					case 'ligne_adresse2' : 
    						$varw = $socTabEm[15];
    					break;
     
    					case 'cp' : 
    						$varw = $socTabEm[16];
    					break;
     
    					case 'ville' : 
    						$varw = $socTabEm[17];
    					break;
     
    					case 'pays' : 
    						$varw = $socTabEm[18];
    					break;
     
    					case 'ntelephone' : 
    						$varw = $socTabEm[1];
    					break;
     
    					case 'date_enlev_demande' : 
    						$varw = $cdeTabEm[14];
    					break;
     
    					case 'date_enlev_tot' : 
    						$varw = $cdeTabEm[18];
    					break;
     
    					case 'date_enlev_tard' : 
    						$varw = $cdeTabEm[19];
    					break;
     
     
    				}
     
     
    				if ($mesvaleur != "")
    				{
    					$varw = $mesvaleur;						
    				}
     
     
     
    				// 2°) Mise en forme dans le buffer de sortie
    				// -----------------------------------------------------------------------
    				$mesdeb = $mes->MESDEBUT;
    				$mesfin = $mes->MESFIN;
    				$meslong = $mes->MESLONG;
    				for ($i=$mesdeb; $i<=$mesfin; $i++)
    				{
    					$j = $i - $mesdeb + 1;
    					if (substr($varw, $j, 1) != "")
    					{
    						$char[$i] = substr($varw, $j, 1);
    					} 
    					else $char[$i] = " ";
    				}
     
    				$enreg = "";
    				for ($i=$mesdeb; $i<=$mesfin; $i++)
    				{
    					$enreg.=$char[$i];
    				}
    			}	
     
    		fwrite($file,$enreg);
    		fwrite($file,"\n");
                             fclose($file);

    P.S : ma colonne $mesvaleur contient une seule donnée et ma colonne $mescode contient toutes les infos du switch.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Je suppose que la variable dont il est question est $varw. Mais je ne comprends pas bien ce que tu en fait : tu la remplis dans le switch, puis tu la re-remplis dans le if Est-ce que tu pourrais expliquer un peu plus ce que tu essayes de faire ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    en fait selon les valeurs de $mescode dans mon switch, j'effectue différentes action et après je voudrais récupérer toutes ces informations pour les écrire dans un fichier texte.
    Pour le if c'est mon maître de stage qui l'a rajouter quand je lui est dit que j'avais un soucis avec ma variable $varw, je ne sais pas s'il est vraiment utile puisque le but une fois sortie du switch , c'est d'inscrire les infos dans un fichier texte avec le code de mise en forme situé un peu plus bas dans mon 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
    // 2°) Mise en forme dans le buffer de sortie
    				// -----------------------------------------------------------------------
    				$mesdeb = $mes->MESDEBUT;
    				$mesfin = $mes->MESFIN;
    				$meslong = $mes->MESLONG;
    				for ($i=$mesdeb; $i<=$mesfin; $i++)
    				{
    					$j = $i - $mesdeb + 1;
    					if (substr($varw, $j, 1) != "")
    					{
    						$char[$i] = substr($varw, $j, 1);
    					} 
    					else $char[$i] = " ";
    				}
     
    				$enreg = "";
    				for ($i=$mesdeb; $i<=$mesfin; $i++)
    				{
    					$enreg.=$char[$i];

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Même si j'ai pas bien compris ce que tu veux faire de ton code (ton but est d'éditer (ou modifier si tu préfère) un fichier texte avec des infos que tu récupère de ta bddje suppose), je vais essayer de t'aider (au moins te donner des pistes).
    Je pense qu'il serait plus judicieux que ta variable $varw soit un tableau -> je m'explique :
    Les infos que tu veux écrire dans ce fichier sont des infos connues, je veux dire par là que leur nombre de varie pas, il est toujours le même, donc pourquoi pas créer un tableau de chaîne de caractère où à chaque cas de ton switch tu fais correspondre ce que tu souhaite?

    D'autres part, c'est vrai que c'est bizarre la manière dont tu traite ta variable $varw dans ta boucle if, tu test si $mesvaleurs ne sont pas nulles, puis après tu donne à $varw la valeur de $mesvaleurs...

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    en effet moi aussi je trouve que l'histoire avec le if est bizarre mais mon maître de stage , m'a dis qu'il fallait le laisser Moi je serait d'avis de l'enlever ce qui serait logique : tu pense que si j'enlève mon if je vais pouvoir quand même écrire mon code dans mon fichier texte ?
    merci pour tes conseils je vais essayer.

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Les maîtres de stages sont bizarres des fois,

    Ben si ta base de données contient bien des informations et que si tu les récupères bien dans ta variable (où ton tableau), normalement oui tu devrais pouvoir les écrire dans ton fichier, je pense pas que cela pose problème...

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    j'ai deux petites questions :
    1 ) lorsque j'enlève mon if il ne m'affiche plus rien dans mon fichier
    2) j'ai essayé ton conseil avec les tableaux mais cela ne marche pas non plus
    peut être mi suis-je mal pris ?
    tu auras un exemple car moi j'avais fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $varw= array();
    switch($mestype)/*(j'ai remplacé $mesvaleur par $mestype car sinon il me récupérait pas les valeurs)*/
    {
       case 'siret_emetteur' :
          $varw [0]= "$socTabEm[6]";
       break;
     
    }
    for ($i = 0 ; $i<=varw.length ; $i++)
    {
       $varw[$i];
    }
    qu'est ce que tu en penses?

  8. #8
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Hmm...Bon j'ai fait un petit exemple mais je ne suis pas sur que ce soit exactement ce que tu recherche mais ca peut te mettre sur la voie :

    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
     
    <?php
    //Connection à la base de données
    	//Déclaration des variables de connection à la base de données
    	$host   = localhost;
    	$user   = root;
    	$passwd = "";
    	$db     = ****;
     
    	//Connection à la base de données MySQL
    	mysql_connect($host, $user, $passwd) or die("Impossible de se connecter au serveur");						
    	//Sélection de la base de données HomePlus
    	mysql_select_db($db) or die("Impossible de se connecter à la base de données");
     
    	//On crérer une requête pour l'exemple
    	$requete_essai = "SELECT * FROM ta_table ";
    	$envoi_requete = mysql_query($requete_essai);
     
    	$file="chemin/nom_du_fichier.txt";
    	$rep = "repertoire";
    	//On ouvre le fichier essai.txt ou on le créer si il n'existe pas
    	$ouvrir_rep = opendir($rep);
    	$ouvrir_file= fopen($file, "w+");
     
    	while( $reponse = mysql_fetch_array($envoi_requete))
    	{
    		if (fwrite($ouvrir_file, $reponse['ton_champ']) == FALSE) 
    		{
    			echo "Impossible d'écrire dans le fichier ($file)";
    			exit;
    		}
    	}
    	fclose($file);
     
    ?>
    J'espere que ce petit bout de code pourra t'aider, et n'oublie pas que pour chaque fonction système que tu utilise, il faut la tester...(chose que je n'ai pas fait car c'est juste un exemple!)

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    bonjour, merci pour tout tes conseils , j'aurai encore une petite question :
    mon code m'affiche bien les infos , le probléme c'est qu'il ne m'affiche que la première ligne de ma table et il l'a répéte tout au long de la boucle alors que moi je voudrais qu'il m'affiche toutes les lignes de ma table. Est -ce que tu aurais une idée d'où cela pourrait venir?

  10. #10
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Salut,
    Je dirais que c'est normal qu'il t'affiche tout le temps la même ligne car à chaque tour de la boucle, c'est la même chose qui est affichée et ce tant qu'il y a encore des lignes dans ta table...

    Actuellement je bosse sur un projet et je vais te donner un bout de mon code ou j'affiche ce toutes mes lignes de ma table dans un tableau, j'espère que ça pourra t'aider :

    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
     
    ?>
    				<!--On créer l'en-tête du tableau-->
    					<table width="100%" cellpadding="2" cellspacing="0" border="1" color="white" id="tableau">
    						<tr class="titre">
    							<td width="60%" align="center"><h4>Nom lampe</h4></td>
    							<td width="20%" align="center"><h4>Etat</h4></td>
    							<td width="20%" align="center"><h4>Action</h4></td>
    						</tr>
    			<?php
    			//Déclaration d'une variable dont la valeur correspondra à chaque ligne du tableau	
    			$m=0;
    			while($champs_table_lampe = mysql_fetch_array($liste_lampe))
    			{
    			//Création de la première et deuxième colonne du tableau
    			?>
    				<form name="bouton" action="index.php?page=commandeEclairageLampe" method="post" >
    			<?php
    				print "<tr><td align='center'>$champs_table_lampe[1]</td>
    			       		   <td align='center'>$champs_table_lampe[2]</td>";
    				//On créer des champs cachés correspondants aux deux boutons et on leur assigne la valeur de id_lampe pour chaque ligne du tableau		   
    				print "<input type=\"hidden\" name=\"allumer_lampe\" value=\"$champs_table_lampe[0]\">";
    				print "<input type=\"hidden\" name=\"eteindre_lampe\" value=\"$champs_table_lampe[0]\">";
    			?>
    				<!-- Troisième colonne du tableau-->
    				<td align="center" valign="middle">
    					<form name="action_boutons" action="index.php?page=commandeEclairageLampe" method="post">
    					<!--On créer un champ caché correspondant à l'action sur un bouton auquel on assigne une variable pour son traitement-->
    					<input type="hidden" name="submission" value="<?php= $action?>" >
    					<input type="image" src="images/valider.png" onclick="submission.value='allumer_lampe'" alt="allumer" >
    					<input type="image" src="images/eteindre.png" onclick="submission.value='eteindre_lampe'" alt="eteindre" >
    				</form>
    				   </tr>
    				</form>		
    				<?php
    				//Incrémentation de la variable
    				$m++;
    			}	
    			//Boucle permettant de déterminer l'action à mener si il y a eu appuie sur un des boutons	
    			if ( isset( $_POST['submission'] ) && $_POST['submission'] == "allumer_lampe" ) 
    			{ 
    				$action = "allumer_lampe" ; 
    			} else {
    				$action = "eteindre_lampe" ; 
    			}
     
    			//On vérifie si il y a eu appui sur un bouton 	
    			if(isset($_POST['submission'])) 
    			{
    				//Selon le bouton appuyé, on exécute l'action correpondante 
    				switch($action)
    				{
    					case 'allumer_lampe':
    						$requete_allumer_lampe = "UPDATE lampe SET etat='1' WHERE id_lampe =".$_POST['allumer_lampe'];
    						mysql_query($requete_allumer_lampe); ; //On modifie etat de 0 à 1
    						break;
     
    					case 'eteindre_lampe':
    						$requete_eteindre_lampe = "UPDATE lampe SET etat='0' WHERE id_lampe =".$_POST['eteindre_lampe'];
    						mysql_query($requete_eteindre_lampe); //On modifie etat de 1 à 0
    						break;
    				}
    			}
    Et si tu veux plus de précision, va voir un topic que j'ai créé et qui est : "Modifier un champ d'une bdd à partir d'un tableau" (ou quelque choses du style )....C'est pas exactement ce que tu demande mais je pense que ça peux te mettre sur la voie.(enfin j'espère...)

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    merci je vais voir ce que je peux faire avec ca mais je pense pouvoir m'en sortir.
    encore merci . je te tiendrai au courant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de passage de variable vide
    Par ephemere dans le forum Linux
    Réponses: 11
    Dernier message: 07/09/2011, 07h30
  2. Problème de variable vide avec requete Insert
    Par jbidou88 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/06/2007, 11h10
  3. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  4. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  5. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

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