Index.php ne "reçoit" pas le $_GET['action'] [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020
-
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020
-
Bonjour,


Je suis en train d’intégrer un site en structure MVC + index, et sur ma page contact j'ai un formulaire pour poser une question, très basique:


Ma vue :
entouré en bleu mon formulaire



+ template:



Mon index:
entouré en bleu la fonction concerné par mon formulaire



Mon controller:
entouré en bleu la fonction concerné par mon formulaire




Mon fichier Js :
Qui renvoi les donnés en Json





Voici mon problème:
Lorsque j'envoi le formulaire rien ne se passe, je précise que plus haut dans mon code j'ai un autre formulaire qui fonctionne mais mal.
Je suis débutant mais j'ai déja programmer en structure MVC mais je n'arrive pas à comprendre mon erreur.
Si quelqu'un a une piste? d'avance merci

5 réponses

Messages postés
12341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 septembre 2020
694
bonjour, il est préférable de partager du texte, pas des images. tout en veillant à utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Bonjour,


Je suis en train d’intégrer un site en structure MVC + index, et sur ma page contact j'ai un formulaire pour poser une question, très basique:




Ma vue :


<?php $title = 'Contact'; ?>
<?php ob_start(); ?>
<div class="contactMain">
	
	<div class="contactBanner"><h1>Contact</h1></div>
	<div class="contactContent">
		<div class="offset-lg-2 col-lg-3 shadow-lg contactOther">
			<div class="otherWebsite">
				<h3>Horaires d'ouverture <i class="far fa-clock"></i></h3>
				<p>Disponible du lundi au vendredi, de 9h à 13h et de 14h à 19h.</p>
			</div>
			<div class="phoneContact">
				<h3>Téléphone <i class="fas fa-phone-square-alt"></i></h3>
				<p>04 78 37 88 15</p>
				
			</div>
			<div class="mailContact">
				<h3>E-mail <i class="fas fa-at"></i></h3>
				<a href="mailto:name@email.com">Link text</a>				
			</div>
		</div>   	
    	<div class="offset-lg-1 col-lg-4 shadow-lg contactFormulary">
    	<h2>Poser votre question</h2>

	    	<div class="formulary ">			
	    		<form  method="POST" action="index.php?action=sendQuestion" id="questionForm" class="questionFormulary">
	    			
						<label >Votre adresse mail:</label>
						<input name="mail" type="email" class="form-control"  placeholder="name@example.com" required>
					
					
				    	
				   
	    			<button class="btn btn-warning " type="submit">Envoyer</button>    			
	    		</form>
	    		<div class="formularyMessage"><span id="questionMessage"></span></div>
	    	</div>
    	</div>
    </div> 
</div>








<?php $content = ob_get_clean(); ?>
<?php require('templateWithNav.php'); ?>



+ template:
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8" />
        <title><?= $title ?></title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://kit.fontawesome.com/76eb1105ab.js" crossorigin="anonymous"></script> 
        <script  src="public/js/jquery-3.4.1.min.js"></script>
             
        <link rel="stylesheet" href="dist/css/bootstrap.min">         
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <link href="public/css/style.css" rel="stylesheet" />
        <link rel="shortcut icon" type="image/jpg" href="public/images/logo.jpg">
    </head>
    <body>
        <header >
            
            <div class="row templateMenu shadow-sm">
                <div class="titleBlock col-md-3">
                    <a  href="index.php?action=main"><img  src="public/images/logo.jpg" alt="logo"></a>
                    <h4><span>Raparations et dépannage électroménager sur </span><span class="city">Lyon</span>.</h4>
                </div>    
                <div class="col-md-3 titleEmplacement" > <p id="navTitle"><i class="fas fa-phone-square-alt"></i> 04 78 37 88 15</p></div>
                <nav class="col-md-6">
                    <ul>
                        <li><a href="index.php?action=main">Accueil</a></li>
                        <li><a href="index.php?action=repair">Un dépannage ?</a></li>
                        <li><a href="index.php?action=eco">Une démarche ECO</a></li>
                        <li><a href="index.php?action=aboutUs">A propos de nous</a></li>
                        
                        <li class="contactButton"><a class="btn btn-warning " href="index.php?action=contact">Nous contacter</a></li>
                    </ul>
                </nav>
                
            
             
            </div>              
        </header>
        
        <div class="mainContent">
            <?= $content?>
        </div>
           
        <footer >
            <div id="topBtn"><i class="far fa-arrow-alt-circle-up"></i></div>
            <div class="row templateFooter">
                <div class="col-md-3 offset-md-2 mapFooter">
                    <ul>
                        <li><img src="public/images/logo.jpg" alt="logo"></li>
                        <li>E-menager</li>
                        <li>75 cours Charlemagne</li>
                        <li>69002 Lyon</li>
                        <li><a href=""><i class="fab fa-facebook-square"></i></a><i class="fas fa-envelope-square"></i><i class="fab fa-twitter-square"></i></li>
                        
                        
                        <li></li>
                    </ul>
                </div>
                <div class="col-md-4 offset-md-1 contactFooter">
                    <ul>
                        <li><h2>Contactez-nous pour un rendez-vous <span class="argumentFooter">RAPIDE</span></h2></li>
                        <li class="phoneFooter"><strong><i class="fas fa-phone-alt"></i> 04 78 37 88 15</strong></li>
                        <li>Disponible du lundi au samedi, de 9h à 13h et de 14h à 19h.</li>
                        
                        
                    </ul>
                </div>
            </div>    
        </footer> 

            <script src="public/js/slider.js"></script>           
            <script src="public/js/scroll.js"></script>
            <script src="public/js/form.js"></script> 
            <script src="public/js/topBtn.js"></script> 
            <script src="public/js/navTitle.js"></script> 
            <script src="public/js/questionForm.js"></script>       
    </body>
</html>




Mon index:

<?php

require_once('controller/frontend.php');
$frontendController = new FrontendController();

try {
    if (isset($_GET['action'])) {  

        if ($_GET['action'] == 'main') {        
            $frontendController->main();
        } 
        elseif ($_GET['action'] == 'repair') {        
            $frontendController->repairCon();
        }  
        elseif ($_GET['action'] == 'eco') {        
            $frontendController->ecoCon();
        } 
        elseif ($_GET['action'] == 'aboutUs') {        
            $frontendController->aboutUsCon();
        }  
        elseif ($_GET['action'] == 'contact') {        
            $frontendController->contactCon();
        }
        elseif ($_GET['action'] == 'sendMail') {
            
            if (!empty($_POST['test'])){ 
                $frontendController->locateAsk($_POST['test']);
            }
            else {
                $frontendController->ecoCon();
            }         

        } 
        elseif ($_GET['action'] == 'sendLocate') {
            
            if (!empty($_POST['locate'])){ 
                $frontendController->locateAsk($_POST['locate']);
            }
            else {
                $frontendController->ecoCon();
            }         

        }
        elseif ($_GET['action'] == 'sendQuestion') { 
            if (!empty($_POST['mail']) && !empty($_POST['questionContent'])){ 
                $frontendController->sendQuestionCon($_POST['mail'],$_POST['questionContent']);
                
            }
            else {
              $frontendController->repairCon();
            }        
            
        }    

    }
    else {
        $frontendController->main();
    }
}
catch(Exception $e) {
       echo 'Exception reçue : ';
}



Mon controller:

<?php
require_once('model/chatManager.php');
require_once('model/locateManager.php');
class FrontendController 
{   
    public function main()
    {
        
        require('view/frontend/mainView.php');
    }  
    public function repairCon()
    {
        
        require('view/frontend/repairView.php');
    }
    public function ecoCon()
    {      
        require('view/frontend/ecoView.php');
    }
    public function aboutUsCon()
    {      
        require('view/frontend/aboutUsView.php');
    }
    public function contactCon()
    {      
        require('view/frontend/contactView.php');
    }    
    public function locateAsk($locate)
    {
       
        if ($locate==13330 || ($locate>69000 && $locate <69161))
        {
        
        $data = array("message"=>"Votre commune ".$locate." est éligible à nos services de réparations.", "price" => "Prix: 95 Eur (Forfait classique)", "conditions" => "Voir les conditions plus bas dans la page")/** whatever you're serializing **/;
        header('Content-Type: application/json');
        echo json_encode($data);die;
        }
        elseif ($locate==69350 || ($locate>69161 && $locate <69860)) 
        {
            $data = array("message"=>"Votre commune ".$locate." est éligible à nos services de réparations.", "price" => "Prix: 150 Eur (Forfait + 35 Kms)", "conditions" => "Voir les conditions plus bas dans la page")/** whatever you're serializing **/;
        header('Content-Type: application/json');
        echo json_encode($data);die;
        }
        else{
            $data = array("message"=>"Malheureusement votre commune ".$locate." n'est pas éligible à nos services.", "price" => "", "conditions" => "")/** whatever you're serializing **/;
        header('Content-Type: application/json');
        echo json_encode($data);die;
            
        }
     }  
     public function sendQuestionCon($mail,$question)
    {
       
        $data = array("Message"=>"Votre question a bien été envoyée à l'adresse".$mail.", nous vous répondrons dans les plus brefs délais.")/** whatever you're serializing **/;
        header('Content-Type: application/json');
        echo json_encode($data);die;
    }      
}



Mon fichier Js :
Qui renvoi les donnés en Json
                      $("#questionForm").submit(function(e){
  e.preventDefault();  //empêcher une action par défaut
  var form_url = $(this).attr("action"); //récupérer l'URL du formulaire
  var form_method = $(this).attr("method"); //récupérer la méthode GET/POST du formulaire
  var form_data = $(this).serialize(); //Encoder les éléments du formulaire pour la soumission
  
  $.ajax({
    url : form_url,
    type: form_method,
    data : form_data
  }).done(function(response){
  console.log(response); 
    $("#questionMessage").html(response.message);

  });
});



Voici mon problème:
Lorsque j'envoi le formulaire rien ne se passe, je précise que plus haut dans mon code j'ai un autre formulaire qui fonctionne mais mal.
Je suis débutant mais j'ai déja programmer en structure MVC mais je n'arrive pas à comprendre mon erreur.
Si quelqu'un a une piste? d'avance merci
Messages postés
29605
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792
Bonjour

Quand tu dis qu'il ne se passe rien... c'est à dire ?
As tu vérifié si tu as des erreurs dans la console javascript de ton navigateur ? Peux tu nous en faire une capture écran ?


A noter que, vu que tu fais de l'ajax, je te conseille d'utiliser le navigateur FIREFOX car sa console permet une lecture plus simple des requête ajax....
(bien penser à cocher la case XHR ! )
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020

voici les messages d'erreur de la console.

Échec du chargement pour l’élément <script> dont la source est « https://kit.fontawesome.com/76eb1105ab.js ». index.php:7:1
Cette page utilise la propriété non standard « zoom ». Envisagez d’utiliser calc() dans les valeurs des propriétés pertinentes ou utilisez « transform » avec « transform-origin: 0 0 ». index.php
Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://kit.fontawesome.com/76eb1105ab.js. Raison : échec de la requête CORS.
L’URI de la source de l’élément <script> n’est pas autorisé dans ce document : « https://kit.fontawesome.com/76eb1105ab.js ». index.php:7:1
Échec du chargement pour l’élément <script> dont la source est « https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js ». index.php:13:1
Object { Message: "Votre question a bien été envoyée à l'adressehjjkgh@gms.com, nous vous répondrons dans les plus brefs délais." }
questionForm.js:12:11
XHRPOSThttp://localhost/RDS/index.php?action=sendQuestion
[HTTP/1.1 200 OK 3ms]

Ce site semble utiliser un effet de positionnement lié au défilement. Cet effet pourrait ne pas fonctionner correctement avec le défilement asynchrone. Consultez https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects pour obtenir davantage de détails ou discuter des outils et des fonctionnalités liés. index.php



Ps : j'ai un formulaire qui fonctionne avec Js sur une autre page, celui ci fonctionne
Messages postés
29605
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792
Ton ajax retourne

index.php:13:1
Object { Message: "Votre question a bien été envoyée à l'adressehjjkgh@gms.com, nous vous répondrons dans les plus brefs délais." }
questionForm.js:12:11
XHRPOSThttp://localhost/RDS/index.php?action=sendQuestion
[HTTP/1.1 200 OK 3ms]


C'est donc que c'est bon.... non ?
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020

ça m'aide bien mais, effectivement ça transmet bien la donne et l'index envoi la fonction. Mais sur mon index les conditions ne fonctionne pas. Car dans l'index je fais une verif avec !empty.
Quand je laisse un champ vide il ne se passe rien .
Messages postés
29605
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
2 792
Quand tes variables sont vides ça appelle la fonction repairCon
Et cette fonction fais un require d'un fichier...
Que tu affiche la console JavaScript lorsque tu laisses tes variables vides ?

Et sincèrement j'insiste pour des bugger de l'Ajax utilise la console du navigateur Firefox.....
ça te permettra de facilement visualiser les variables transmises est la réponse obtenu...
si tu ne sais pas comment débloquer correctement de l'Ajax, je t'invite à consulter un des nombreux tutoriel que tu peux facilement trouver sur internet à ce sujet.
Messages postés
5
Date d'inscription
mardi 1 septembre 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Je crois avoir trouver d'ou venait mon erreur.

Dans mon fichier javascript exécuté après avoir submit, il y a un e.preventDefault() ce qui ne permet pas de verif en if/else dans mon index. Du coup je vais faire autrement.

Merci pour toute ses informations.Ca m'a bien débloqué.
Je met en résolu.