Bonjour a tous ,
je fais un projet étudiant pour obtenir mon DUT . Je suis sur un projet PhP Laravel qui a pour but d'être un site d'auto-évaluation SQL ,càd, dans un questionnaire comportent plusieurs questions , la première s'affiche " Quels sont l'id et le titre des films ?" puis l'utilisateur entre sa requête dans un formulaire et je l’exécute à l'aide d'un PDO. Ensuite je dois comparer le résultat de sa requête avec le résultat que j'ai stocké dans la base puis si validation l'utilisateur passe à la suivante.
J'ai réussie donc à exécuter sa requête puis afficher le résultat de la requête
Mais voila je voudrai géré l'erreur dans la demande de requête ( si il met n'importe quoi ou si il demande une chose qui n'est pas dans la base)
j'ai testé de mettre n'importe quoi et j'ai une erreur (Normal me direz vous![]()
) qui est
Donc je voudrai que cela ne s'affiche pas mais que cela affiche requête invalide en dessous du formulaire par exemple.
Voici mon code de mon questionnaire:
Et celui de ma vue
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 class QuestionnaireController extends Controller { public function index() { return view('questionnaire'); } public function requete(Request $requete) { try { $connexion = NEW PDO('mysql:host=localhost;dbname=autoevaluationsql', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,)); $connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (Exception $exception) { echo "Erreur : " . $exception->getMessage(); } $sql = $requete->input('requete'); try { $query = $connexion->prepare($sql); $query->execute(); $resultat = $query->fetchAll(); }catch (Exception $e){ echo $e->getMessage(); } $tableau = []; $tableauReponse = []; for ($i = 0; $i < sizeof($resultat); $i++) { $donnees = ""; foreach ($resultat[$i] as $key => $valeur) { $donnees .= $valeur . ' '; } $tableau[$i] = $donnees; } /* $sqlRep = $requete->input('Select * from film'); $queryRep = $connexion -prepare($sqlRep); $queryRep->execute(); $reponse = $queryRep->fetchAll(); for ($i = 0; $i < sizeof($reponse); $i++) { $donnees = ""; foreach ($reponse[$i] as $key => $valeur) { $donnees .= $key . ' : ' . $valeur . ' '; } $tableauReponse[$i] = $donnees; }*/ return view('questionnaire', ['traitement' => $tableau]); } }
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 @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Question n°1</div> <div class="card-body"> <div class="form-group"> <div class="container"> <form method="post" action="{{ url('questionnaire') }}"> {{ csrf_field() }} <div class="row"> <div class="input-group"> <input class="form-control" name="requete" placeholder="Entrez votre requête" required> </div> </div> <br> <div class="row"> <div class="input-group"> <input type="submit" class="btn btn-outline-dark" name="Valider" value="Valider"> </div> </div> </form> </div> </div> </div> </div> @if(!empty($traitement)) <div class="card"> <div class="card-header"> Réponse traitement </div> <div class="card-body"> @for($i = 0; $i<count($traitement); $i++) {{ utf8_encode($traitement[$i]) }}<br> @endfor @else Aucune requête mentionnée </div> </div> @endif </div> </div> </div> @endsection
Merci d'avance de votre aide
Partager