2 pièce(s) jointe(s)
Erreur SqlSyntax retourner au client
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 Pièce jointe 460632
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 :D :D) qui est Pièce jointe 460633
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:
Code:
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]);
}
} |
Et celui de ma vue
Code:
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