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

Résolu/Fermé
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020 - 1 sept. 2020 à 14:17
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020 - 1 sept. 2020 à 23:59
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

yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
1 sept. 2020 à 16:28
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
0
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020
1 sept. 2020 à 16:42
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 sept. 2020 à 17:05
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 ! )
0
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020
Modifié le 1 sept. 2020 à 17:58
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/en-US/docs/Mozilla/Performance/Scroll-linked_effects 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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 sept. 2020 à 20:51
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 ?
0
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020
1 sept. 2020 à 22:49
ç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 .
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 sept. 2020 à 23:09
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ImTheGreatBeginner Messages postés 5 Date d'inscription mardi 1 septembre 2020 Statut Membre Dernière intervention 1 septembre 2020
1 sept. 2020 à 23:59
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.
0