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

PHP & Base de données Discussion :

Varlisations variable hors formulaire non valorisee [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut Varlisations variable hors formulaire non valorisee
    Bonjour,

    je débute sur PHP et je suis confronté à l'impossiblité de voir valoriser une variable qui se trouve en amont de mon formulaire mais que je souhaite utiliser dans le formulaire.

    Ce programme récupère récupère les information d'un bon de travail pour lequel je souhaite que l'intervenant s'affecte ainsi que l'atelier correspondant.

    Ma question est de comprendre pourquoi une variable posiitonnée avant le test sur le submit (dans mon exemple $a) du formulaire (Action1 qui correspond à VALIDER) n'est pas valorisée avec sa valeur dans la partie du programme après le test if ($action1 == "VALIDER"). En vous remerciant pour votre aide:

    Voici le code qui ne me donne pas la valeur de la variable $a:
    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
    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    <?php
    //* Appel des sous-programmes de pagination (pied-haut-centre) et des variables
    include ("./includes/config.inc.php");
    include ("./includes/haut.inc.php");
    include ("./includes/variables.inc.php");
    include ("./includes/bon_a_affecter.inc.php");
    include ("./includes/ctrl_edite_bon.inc.php");
    include("./includes/connexion_bdd.inc.php");
    connexion();
    //******* Liste des champs de la Table demande **************************
    $valeurs_colonnes1="D.Id_dem,D.Date_dem,D.Nom_demandeur,D.Prenom_demandeur,D.Grade_demandeur,D.Id_uf,D.Local,SI.Nom_site,D.Description_demande,P.Libelle_priorite_dem";
     
    // récupération des variables postées
    //if( isset( $_POST["recherche1"] ) ) $recherche1 = $_POST["recherche1"];
    //if( isset( $_POST["Nomint"] ) ) $Nomint = $_POST["Nomint"];
    //if( isset( $_POST["Prénomint"] ) ) $Prénomint = $_POST["Prénomint"];
    //if( isset( $_POST["Iddem"] ) ) $Iddem = $_POST["Iddem"];
    //if( isset( $_POST["mon_champ"] ) ) $atelier = $_POST["mon_champ"];
     
    //Contrôle des champs du formulaire pour permettre l'effacement ou au contraire l'enregistrement
    //$action1 = isset($_POST["Action1"]) ? $_POST["Action1"]: '';
    $action1 = $_POST["Action1"];
    // Formulaire de saisie du Nom et Prénom de l'intervenant qui s'affecte le Bon de Travaux
    echo "<h4>Indiquer le Nom et Prénom de l'intervenant qui affecte l'intervention</h4>";
     
    echo '<form name = "bon_affectation" method = "POST" onSubmit = "return checkFields()";>';
    echo "<h5><label>Nom de l'intervenant</label> |";
    echo '<input type = "text"   name = "Nomint" size="30" />';
    echo "<label> Prénom de l'intervenant</label> |";
    echo '<input type = "text"   name = "Prénomint" size="30" /><br><br>';
    echo "</h5>";
     
    // récupération des variables postées
    if( isset( $_POST["Nomint"] ) ) $Nomint = $_POST["Nomint"];
    if( isset( $_POST["Prénomint"] ) ) $Prénomint = $_POST["Prénomint"];
    if( isset( $_POST["Iddem"] ) ) $Iddem = $_POST["Iddem"];
     
    echo "<h4>Sélectionnez l'atelier à affecter au bon de travaux et cliquer sur Valider</h4>";
     
    // Recherche de tous les champs de la table ateliers pour offrir la liste de sélection
    $query1 = "SELECT * FROM $tableateliers";
    // exécution de la requête
    $resultat1  = mysql_query( $query1 ) OR die( "[1]Impossible d'exécuter la requête" );
    //Affichage du formulaire de sélection de l'atelier pour attribution du bon de travaux
    echo '<form method="post">';
    echo '<select name="Atelier">';
    	while ($array1 = mysql_fetch_assoc($resultat1))
    	{
            if ($Atelier == $array1["Id_atelier"])
    		{
                echo '<option value="' . $array1['Id_atelier'] . '" selected>' . $array1['Libelle_atelier'] . '</option>';
            } else
    		{
                echo '<option value="'.$array1['Id_atelier'] . '">' . $array1['Libelle_atelier'] . '</option>';
            }
        }
    echo '</select>|';
    echo '<input type="submit" name="Action1" value="VALIDER">';
    echo '</form>';
     
    // Affichage de l'Atelier sélectionné
    if ($Atelier)
    {
    	$query2 = mysql_query("SELECT Libelle_atelier FROM $tableateliers WHERE (Id_atelier='$Atelier')") or die (mysql_error());
    	//renvoi du résultat de la requête précédente dans un tableau
    	$array2 = mysql_fetch_assoc($query2);
    	echo 'Vous avez retenu d\'affecter au bon de travaux, l\'atelier' . $array2['Libelle_atelier'] .'<br>';
    }
     
    //******* Liste des champs de la Table demande **************************
    $valeurs_colonnes1="D.Id_dem,D.Date_dem,D.Nom_demandeur,D.Prenom_demandeur,D.Grade_demandeur,D.Id_uf,D.Local,SI.Nom_site,D.Description_demande,P.Libelle_priorite_dem";
     
    // Recherche de tous les champs de la table demande pour le bon de travaux en cours d'affectation issu de Selection_bon.php
    $query3 = "SELECT $valeurs_colonnes1 FROM $tabledem AS D, $tablesites AS SI, $tableprioritedem AS P WHERE (D.Id_dem = '$Iddem')AND (D.Id_site=SI.Id_site) AND (D.Id_priorite_dem = P.Id_priorite_dem)";
    // exécution de la requête
    $resultat3  = mysql_query( $query3 ) OR die( "[3]Impossible d'exécuter la requête" );
    // puis obtention du nombre de lignes retournées par MySQL
    $nb_lignes = @mysql_num_rows($resultat3);
     
    if ($nb_lignes!=0)
    {
    	$nb_colonnes=10;
    	echo "<h3><center>Bon de Travaux à affecter</center></h3>";
    	echo "<table width=95% cellpadding=2 cellspacing=2><tr  bgcolor=#FFCC99 align=center>
    	<td><FONT SIZE=2>N° du bon</td><td><FONT SIZE=2>Date du bon</td><td><FONT SIZE=2>Nom du demandeur</td><td><FONT SIZE=2>Prénom</td>
    	<td><FONT SIZE=2>Fonction du demandeur</td><td><FONT SIZE=2>UF</td><td><FONT SIZE=2>Localisation</td><td><FONT SIZE=2>Site<td><FONT SIZE=2>Description de la demande</td><td><FONT SIZE=2>Niveau de priorité</td></tr>
    	<tr bgcolor=#e2f1f4>";	
    	for ($i=0;$i<$nb_lignes;$i++)
    	{
    		for ($j=0;$j<$nb_colonnes;$j++)
    		echo "<td><FONT SIZE=1>" . mysql_result($resultat3,$i,$j) . "</td>";
    		//récupération de Id_site sur le première ligne (0) et 8 ème champ ( il faut compter de 0 à 7)
    		//$Libsite1 = mysql_result($resultat3,0,7);
    		//$Iddem1 = mysql_result($resultat3,0,0);
    		echo "<tr bgcolor=#e2f1f4>";
    	}
    	echo "</tr>";
    	echo "</table>";
     
    	$Libsite1 = mysql_result($resultat3,0,7);
    	//$array3['Libsite'] = $Libsite1;
    	$Iddem1 = mysql_result($resultat3,0,0);
    	$a="toto";
     
    	// Récupération de Id_site
    	$query4 = "SELECT Id_site FROM $tablesites WHERE (Nom_site='".addslashes($Libsite1)."')";
     
    	// exécution de la requête
    	$resultat4  = mysql_query( $query4 ) OR die( "[4]Impossible d'exécuter la requête" );
    	$Idsite1 = mysql_result($resultat4,0,0);
    	$a =" coucou ";
    }
    // VALIDATION DU FORMULAIRE bon_affectation
    if ($action1 == "VALIDER")
    {
    //ci dessous je ne récupère pas la valeur de ma variable	
    echo " valeur de a  $a  ";
    	$Date_affect='Now()';
    	$colonnes="Date_affect,Id_site,Id_dem";
    	$valeurs_colonnes3="'$Idsite1','$Iddem1'";
    	//$valeurs_colonnes3="'$Idsite1','$array4'";
    	$query5 = "INSERT INTO $tableaffectations ($colonnes) VALUES ($Date_affect,$valeurs_colonnes3)";
    	// exécution de la requête
    	$resultat5  = mysql_query( $query5 ) OR die( "[5]Impossible d'exécuter la requête" );
    	//Ligne ci-dessous récupère le numéro d'affectation du bon qui est la clé de la table affectations autoincrémentée
    	$id_affect = mysql_insert_id();
    	echo " - id_affect0 =$id_affect - ";
     
    $Nomint = $_POST["Nomint"];
    $Prénomint = $_POST["Prénomint"];
    $Atelier1 =$_POST["Atelier"];
     
    	//La ligne ci-dessous permet d'empêcher la réactualisation de la page si on fait retour vers page précédente et validation du formulaire depuis le navigateur
    	session_cache_limiter('public, must-revalidate');
     
    	$query6 = mysql_query("SELECT Libelle_atelier FROM $tableateliers WHERE (Id_atelier='$Atelier1')") or die (mysql_error());
    	$Nom_atelier = mysql_result($query6,0,0);
    	echo "<h5>Vous avez retenu d'affecter au bon de travaux, l'atelier $Nom_atelier<br></h5>";
     
    	// Mise à jour de la table Demande du bon concerné avec le statut_demande en cours
    	$query7 = "UPDATE $tabledem SET Id_statut_dem ='01' WHERE Id_dem = '$Iddem1'";
    	// exécution de la requête
    	$resultat7  = mysql_query( $query7 ) OR die( "[7]Impossible d'exécuter la requête !" );
     
    	// Mise à jour de la table Demande du bon concerné avec le statut_demande en cours
    	$query8 = "UPDATE $tableaffectations SET Nom_intervenant = '$Nomint', Id_atelier ='$Atelier1', Prenom_intervenant = '$Prénomint' WHERE (Id_affect = '$id_affect')";
     
    	// exécution de la requête
    	$resultat8  = mysql_query( $query8 ) OR die( "[8]Impossible d'exécuter la requête 3!" );
    	echo " Il n\'y a plus de bon à affecter merci de revenir à la page d\'acceuil";
    	include ("./includes/pied.inc.php");
    	mysql_close($liendb);
    	exit();
    	// Mise à jour de la table Demande du bon concerné avec le statut_demande en cours
    	//$query2 = "UPDATE $tabledem SET Id_statut_dem ='01' WHERE Id_dem = '$Iddem1'";
    	// exécution de la requête
    	//$resultat2  = mysql_query( $query2 ) OR die( "[4]Impossible d'exécuter la requête !" );
    	// Mise à jour de la table Affectations du bon concerné avec le statut_demande en cours
    	//$Date_affect='Now()';
    	//$colonnes="Date_affect,Id_site,Id_dem";
    	//$valeurs_colonnes3="'$Idsite1','$Iddem1'";
    	//$query3 = "INSERT INTO $tableaffectations ($colonnes) VALUES ($Date_affect,$valeurs_colonnes3)";
    	// exécution de la requête
    	//$resultat3  = mysql_query( $query3 ) OR die( "[5]Impossible d'exécuter la requête !" );
    	//Ligne ci-dessous récupère le numéro d'affectation du bon qui est la clé de la table affectations autoincrémentée
    	//$id_affect=mysql_insert_id();
    }
    mysql_close($liendb);
    echo"</body>";
    include ("./includes/pied.inc.php");
    ?>

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu peux nous isoler le segment qui pose problème ou décrire brièvement le fonctionnement stp ?

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    ton $a est défini dans un if (juste avant) et jamais dans le contexte de ton script, ce qui est une mauvaise pratique car tu n'as aucune garanti qu'il soit défini en dehors du if...

    faut déclarer les variables et leur donner une valeur par défaut au même niveau que là où tu veux les utiliser ensuite...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Merci pour vos réponses et désolé pour les maladresses dans la génération de mes explications et le code fourni.

    Il s'agit d'un gestionnaire de bons de travaux. Les pages de saisie des bons sont faites. Je suis la partie où un intervenant doit sélectionner les bons de travaux d'un site géographique, en attente d'affectation.

    Cette partie du script fait suite à la sélection, par un intervenant d'un bon de travaux à affecter. J'ai donc récupérer dans une variable le numéro du bon et j'affiche le formaulaire de saisie du nom et prénom de l'intervenant ansi que l'atelier concerné par le bon que l'intervenant doit sélectionner.

    Mon problème est qu'au moment de valider le bon, la variable qui contient le numéro du bon et qui me sert à l'insérer dans une table Mysql n'est pas valorisée. L'exemple que je donne avec la variable $a est juste pour montrer que dans le if ou se trouve valorisée la variable j'ai bien une valeur mais qu'au moment de faire le test if action1= 'VALIDER', la variable $a eest vide. Je ne comprends donc pas pourquoi la variable n'est plus valorisée. En fait, ma question est de savoir comment récupérer la valdeur du numéro de bon qui se trouve dans une variable pour l'exploiter dans la partie ou je fait le traitement lorsque $action1 est true.

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    c'est ce que je te dis... c'est la notion de visibilité des variables...
    en gros la visibilité correspond au niveau de {} qui encadre la variable dans un script...

    si tu dois trimbaler des valeurs entre plusieurs pages alors tu peux passer par les sessions...

    tu dois vérifier donc ça je pense

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Merci beaucoup Eric. Effectivement l'utilisation des sessions m'a permis de comprendre le fonctionnement et du coup de résoudre mon problème.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2014, 15h32
  2. comment transmettre 1 variable de formulaire a 2 page cible
    Par NoobX dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2005, 15h29
  3. Utilisé une variable hors d'une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/02/2005, 19h21
  4. variable hors d'une fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/02/2005, 08h29
  5. [jsp][servlet]appel servlet hors formulaire
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/06/2004, 17h08

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