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 return


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2018
    Messages : 46
    Points : 36
    Points
    36
    Par défaut problème de return
    Voilà mon petit projet : Faire voter des membres d'une association pour choisir entre 2 affiches d'un concert.

    J'ai créé un formulaire très simple avec un seul bouton radio à valider. J'appelle donc dans mon fichier principal un autre fichier php qui écrit dans une base de données le choix du membre. Tout ça fonctionne mais au lieu de revenir son mon fichier principal pour dire au membre qu'il a validé l'affiche n°1 ou n°2, je reste dans mon fichier appelé par le formulaire.

    voilà 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
    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
     
     
    <script type="text/javascript">
    $(function(){
    	var error_div = $("erreur_affiche");
    	error_div.css("background-repeat", "no-repeat");
    	$("#form_affiche").submit(function(){
    		error_div.css("margin-left", "45%");
    		error_div.fadeOut(100);
    		numero_choisi = $(this).find("input[name=affiche]").val();
    		$.post("choix_affiche.php",{numero_choisi: affiche},function(data){
    			if((data == "1") || (data == "2")) {
    				error_div.css("background-image", "url('images/true.png')");
    				error_div.css("color", "#00FF55");
    				error_div.fadeIn().text("Vous avez choisi l'affiche n°." + data + ".");
    				}
    			else {
    				error_div.css("background-image", "url('images/false.png')");
    				error_div.css("color", "#FF5B5B");
    				error_div.fadeIn().text("Vous n'avez pas choisi d'affiche.");
    				}
    			});
    		return false;	
    		});
    	});
     
    </script>
     
    ...
     
    <body>
     
    <div id="bloc_affiches" class="article" style="display:none; ">
            	<h2>Voici une proposition d'affiches pour les concerts de janvier :</h2><br />
                <div style="float:left; width:48%;">
        	    	<img id="affiche0" src="images/affiches/0Aff_EVMEjanv2019.jpg" width="100%"/>	
                </div>
    			<div style="float:right; width:48%;" >
    	        	<img id="affiche1" src="images/affiches/1Aff_EVMEjanv2019.jpg" width="100%"/>
                </div>
                <hr class="no-border" />
                <?php
    				// on se connecte à MySQL 
    				$base = mysql_connect("sql.free.fr", "nom_base", "mdp");  
    				mysql_select_db("nom_base", $base); 
    				// lancement de la requete
    				$sql = 'SELECT num_affiche FROM te_membre_mbr WHERE login ="'.$_SESSION['login'].'" ';
    				// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    				$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    				// on recupere le resultat sous forme d'un tableau
    				$data = mysql_fetch_array($req);
     
    			   	mysql_free_result ($req);
    				mysql_close ();
    			?>
                <form action="choix_affiche.php" method="post" id="form_affiche">
    				<?php if($data['num_affiche'] == "0") {?>
                    	<div style="float:left; margin-left:24%;"><input  type= "radio" name="affiche" value="1"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" value="2"/> 2ème affiche</div>
    				<? } elseif ($data['num_affiche'] == "1") {?>
                    	<div style="float:left; margin-left:24%;"><input  type= "radio" name="affiche" value="1" checked="checked"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" value="2"/> 2ème affiche</div>
                    <? } elseif ($data['num_affiche'] == "2") {?>
                    	<div style="float:left; margin-left:24%;"><input  type= "radio" name="affiche" value="1"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" value="2" checked="checked"/> 2ème affiche</div>
                    <? } ?>
                    <hr class="no-border" />
                    <div style="float:center;"><input type="submit" name="Choisir" value="Valider" id="bouton_Choisir"/></div><div id="erreur_affiche" class="error_message"></div>
                </form>
                <hr class="no-border" />
    		</div>
    ...
    et voilà mon fichier choix_affiche.php

    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
     
    <?php
    session_start();
    if (!isset($_SESSION['login']))
    	{
    	header ('Location: index.php');
    	exit();
    	}
     
    $base = mysql_connect ('sql.free.fr', 'nom_base', 'mdp');
    mysql_select_db ("nom_base", $base);
    $sql='UPDATE te_membre_mbr SET num_affiche="'.$affiche.'" WHERE login="'.$_SESSION['login'].'"';
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    mysql_close();
    echo $affiche;
    ?>
    Je ne vois pas où est l'erreur car j'ai déjà fait pratiquement la même chose avec la possibilité aux membres d'envoyer par l'intermédiaire d'un formulaire un courriel et je reste bien dans mon fichier principal…


    Merci d'avance pour l'aide apportée

  2. #2
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Le formulaire est dans le fichier index.php ?

    Essaye de mettre dans choix_affiche.php un echo pour voir ce que contient le $_SESSION['login'].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    session_start();
    echo $_SESSION['login'];
    exit; // pour avoir le temps de lire s'il y a redirection

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2018
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Merci de ta réponse.

    Oui mon formulaire est dans le fichier index_choristes.php

    $_SESSION['login'] doit contenir l'identifiant du membre connecté. J'en suis sûr, puisque sur ma page index_choristes.php, j'affiche le nom et le prénom du membre qui s'est connecté qui correspond au login du membre.

    Je viens de tester l'echo me renvoie mon login et je reste dans mon fichier choix_affiche.php

  4. #4
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    En cliquant sur le bouton Valider dans le formulaire index_choristes.php, on affiche le fichier choix_affiche.php.

    au lieu de revenir son mon fichier principal je reste dans mon fichier appelé par le formulaire
    Rien n'est mis dans ce fichier appelé par le formulaire pour revenir au fichier principal, mise à part si l'utilisateur n'est pas connecté.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2018
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Non rien est mis...j'écris juste dans ma base le numéro de l'affiche choisi par le membre connecté avec son login et son mot de passe.

    Je fais ensuite un echo du choix de l'affiche...

  6. #6
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    Je n'ai pas dû bien saisir !

    Quand tu dis : "je reste dans mon fichier appelé par le formulaire" :

    - Pour moi, le fichier appelé par le formulaire est le fichier indiqué dans le "form action", soit choix_affiche.php, et il n'y a pas d'informations pour aller ailleurs.

    - Pour toi ? Tu restes dans le fichier du formulaire, soit index_choristes.php ?

    Si tel est le cas, cela doit venir du javascript, et je ne connais pas ce langage.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2018
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Je ne veux pas rester dans mon fichier choix_affiche.php, je veux y aller pour écrire dans ma base puis en sortir pour dire au membre ce qu'il a fait...quelle affiche il a choisi ou si il a cliqué sur le bouton de validation avant de choisir l'affiche.

    En fait, après 4 jours de réflexion intense...le problème vient du bouton radio que je ne savais pas traité. En effet, on récupère l'état avec checked. le name du bouton est identique mais pas l'id. Une fois récupérée je fais le traitement par la fonction $.post("choix_affiche.php",{affiche: affiche},function(data){...


    ce qui donne mon fichier choix_affiche.php

    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
    <?php
    session_start();
    if (!isset($_SESSION['login']))
    	{
    	header ('Location: index.php');
    	exit();
    	}
     
    $base = mysql_connect ('sql.free.fr', 'nom_base', 'mdp');
    mysql_select_db ("nom_base", $base);
    if(($affiche == "1") || ($affiche == "2")) {
    	$sql='UPDATE te_membre_mbr SET num_affiche="'.$affiche.'" WHERE login="'.$_SESSION['login'].'"';
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	mysql_close();
    	echo $affiche;
    	}
    else $affiche;
     
    ?>

    et mon fichier index_choristes.php


    partie javascript


    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
    $(function(){
    	var error_div = $("#erreur_affiche");
    	error_div.css("background-repeat", "no-repeat");
    	$("#form_affiche").submit(function(){
    		error_div.css("margin-left", "45%");
    		error_div.fadeOut(100);
    		if(document.getElementById('aff1').checked){
    			affiche = document.getElementById('aff1').value;
    			}
    		else if (document.getElementById('aff2').checked){
    			affiche = document.getElementById('aff2').value;
    			}
    		else affiche = "0";
    		$.post("choix_affiche.php",{affiche: affiche},function(data){
    			if((data != "1") && (data != "2")) {
    				error_div.css("background-image", "url('images/false.png')");
    				error_div.css("color", "#FF5B5B");
    				error_div.fadeIn().text("Vous n'avez pas choisi d'affiche.");
    				}
    			else {
    				error_div.css("background-image", "url('images/true.png')");
    				error_div.css("color", "#00FF55");
    				error_div.fadeIn().text("Vous avez choisi l'affiche n°" + data + ".");
    				}
    			});
    		return false;
    		});
    	});
    partie html du formulaire

    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
    <div id="bloc_affiches" class="article" style="display:none; ">
            	<h2>Voici une proposition d'affiches pour les concerts de janvier :</h2><br />
                <div style="float:left; width:48%;">
        	    	<img id="affiche0" src="images/affiches/0Aff_EVMEjanv2019.jpg" width="100%"/>	
                </div>
    			<div style="float:right; width:48%;" >
    	        	<img id="affiche1" src="images/affiches/1Aff_EVMEjanv2019.jpg" width="100%"/>
                </div>
                <hr class="no-border" />
                <?php
    				// on se connecte à MySQL 
    				$base = mysql_connect("sql.free.fr", "nom_base", "mdp");  
    				mysql_select_db("nom_base", $base); 
    				// lancement de la requete
    				$sql = 'SELECT num_affiche FROM te_membre_mbr WHERE login ="'.$_SESSION['login'].'" ';
    				// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    				$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    				// on recupere le resultat sous forme d'un tableau
    				$data = mysql_fetch_array($req);
     
    			   	mysql_free_result ($req);
    				mysql_close ();
    			?>
                <form action="choix_affiche.php" method="post" id="form_affiche">
    				<?php if($data['num_affiche'] == "0") {?>
                    	<div style="float:left; margin-left:24%;"><input type= "radio" name="affiche" id="aff1" value="1"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" id="aff2" value="2"/> 2ème affiche</div>
    				<? } elseif ($data['num_affiche'] == "1") {?>
                    	<div style="float:left; margin-left:24%;"><input  type= "radio" name="affiche" id="aff1" value="1" checked="checked"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" id="aff2" value="2"/> 2ème affiche</div>
                    <? } elseif ($data['num_affiche'] == "2") {?>
                    	<div style="float:left; margin-left:24%;"><input  type= "radio" name="affiche" id="aff1" value="1"/> 1ère affiche</div>
    					<div style="float:right; margin-right:24%;"><input type= "radio" name="affiche" id="aff2" value="2" checked="checked"/> 2ème affiche</div>
                    <? } ?>
                    <hr class="no-border" />
                    <div style="float:center;"><input type="submit" name="Choisir" value="Valider" id="bouton_Choisir"/></div><div id="erreur_affiche" class="error_message"></div>
                </form>
                <hr class="no-border" />
    		</div>
    Voilà ça fonctionne très bien...ce n'est peut-être pas très académique mais bon…

    Merci Yvan L de ton aide et du temps passé à la réflexion.

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

Discussions similaires

  1. Problème: "Query returns more than one row"
    Par ctobini dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/09/2007, 11h48
  2. Problème de return avec l'OO
    Par Jasmine80 dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2007, 16h25
  3. Problème de return
    Par Cassius dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2006, 14h56
  4. Problème avec return
    Par Rémiz dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 25/08/2005, 17h15
  5. [FLASH MX2004] [AS2] Problème de return
    Par bolo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 08/04/2005, 08h58

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