Paramètres non défini

[Fermé]
Signaler
Messages postés
77
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
17 octobre 2020
-
Messages postés
760
Date d'inscription
samedi 29 mars 2014
Statut
Membre
Dernière intervention
8 septembre 2018
-
Bonjour a tous !

je souhaite insérer dans ma base de donnée des statistiques de joueurs de ma team ( donc chose basique me dirait vous ) mais une erreur sql persiste et je ne voit pas à quoi elle correspond.

voici l'erreur : PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\AS Just For Fun\administration\statis_week2.php on line 59


voici le code de ma page html :

<?php 
$title = "Statis Weeks Administration";
require('partials/_header.php');
?>

<div class="container">

<h1 class="text-center gradient-h1">Statis Week de <?= $data->pseudo ?></h1><br>

<a href="index.php" class="center-lien">Accueil administration</a><br><br>

<form method="post" autocomplete="off" class="col-md-6 col-md-offset-3">

<h1 class="text-center lead">N° de semaine</h1>

<input type="text" name="semaine" id="semaine" class="form-control"><br>

<h1 class="text-center lead">Joueur</h1>

<label for="user_id" class="control-label">ID du joueur</label>
<input type="text" name="user_id" id="user_id" class="form-control" value="<?= $id ?>"><br>

<label for="pseudo" class="control-label">Joueur</label>
<input type="text" name="pseudo" id="pseudo" class="form-control" value="<?= $pseudo2 ?>"><br>

<h1 class="text-center lead">En tant que joueur de champ</h1>

<label for="matchs" class="control-label">Matchs joués</label>
<input type="text" name="matchs" id="matchs" class="form-control"><br>

<label for="buts" class="control-label">Buts inscrits</label>
<input type="text" name="buts" id="buts" class="form-control"><br>

<label for="passes" class="control-label">Passes décisives</label>
<input type="text" name="passes" id="passes" class="form-control"><br>

<label for="ratio_buts" class="control-label">Ratio buts / matchs</label>
<input type="text" name="ratio_buts" id="ratio_buts" class="form-control"><br>

<label for="ratio_passes" class="control-label">Ratio passes décisives / matchs</label>
<input type="text" name="ratio_passes" id="ratio_passes" class="form-control"><br>

<h1 class="text-center lead">En tant que gardien de buts</h1>

<label for="matchs_gk" class="control-label">Matchs joués en GK</label>
<input type="text" name="matchs_gk" id="matchs_gk" class="form-control"><br>

<label for="buts_enc" class="control-label">Buts encaissés</label>
<input type="text" name="buts_enc" id="buts_enc" class="form-control"><br>

<label for="arrets" class="control-label">Nombres d'arrets</label>
<input type="text" name="arrets" id="arrets" class="form-control"><br>

<label for="invincibilité" class="control-label">Invincibilité</label>
<input type="text" name="invincibilité" id="invincibilité" class="form-control"><br>

<label for="ratio_buts_enc" class="control-label">Ratio de but encaissés / matchs</label>
<input type="text" name="ratio_buts_enc" id="ratio_buts_enc" class="form-control"><br>

<label for="ratio_arrets" class="control-label">Ratio d'arrets / matchs</label>
<input type="text" name="ratio_arrets" id="ratio_arrets" class="form-control"><br>

<input type="submit" class="btn btn-primary center-block" value="Ajouter Statis Week" name="statis">

</form>



</div>

<?php require('partials/_footer.php'); ?>




et voici le code php :

<?php

session_start();

require('includes/init.php');
require('filters/admin_filters.php');

if(!empty($_GET['id'])) {

$user = find_user_by_id($_GET['id']);

if(!$user) {

redirect('index.php');

} else {

$id = $_GET['id'];
$q = $db->query("SELECT pseudo FROM users WHERE id = $id");

$data = $q->fetch(PDO::FETCH_OBJ);

$q->closeCursor();

$pseudo2 = $data->pseudo;

}

} else {

redirect('index.php');

}

if(isset($_POST['statis'])) {

if(not_empty(['semaine'])) {

extract($_POST);

$q = $db->prepare('INSERT INTO statis(semaine, user_id, pseudo, matchs, buts, passes, ratio_buts, ratio_passes, matchs_gk, buts_enc, arrets, invincibilité, ratio_buts_enc, ratio_arrets)
VALUES(:semaine, :user_id, :pseudo, :matchs, :buts, :passes, :ratio_buts, :ratio_passes, :matchs_gk, :buts_enc, :arrets, :invincibilité, :ratio_buts_enc, :ratio_arrets)');

$q->execute([
':semaine' => $semaine,
'user_id' => $user_id,
'pseudo' => $pseudo,
'matchs' => $matchs,
'buts' => $buts,
'passes' => $passes,
'ratio_buts' => $ratio_buts,
'ratio_passes' => $ratio_passes,
'matchs_gk' => $matchs_gk,
'buts_enc' => $buts_enc,
'arrets' => $arrets,
'invincibilité' => $invincibilité,
'ratio_buts_enc' => $ratio_buts_enc,
'ratio_arrets' => $ratio_arrets
]);

}

}

require('views/statis_week2.views.php');


Merci d'avance pour vos réponses :)

2 réponses

Messages postés
38
Date d'inscription
jeudi 21 avril 2016
Statut
Membre
Dernière intervention
8 mai 2016
21
Bonjour je pense que ça vient d'ici :
    $q->execute([
':semaine' => $semaine,
'user_id' => $user_id,
'pseudo' => $pseudo,
'matchs' => $matchs,
'buts' => $buts,
'passes' => $passes,
'ratio_buts' => $ratio_buts,
'ratio_passes' => $ratio_passes,
'matchs_gk' => $matchs_gk,
'buts_enc' => $buts_enc,
'arrets' => $arrets,
'invincibilité' => $invincibilité,
'ratio_buts_enc' => $ratio_buts_enc,
'ratio_arrets' => $ratio_arrets
]);


Ta première entré tu as écrit
 ':semaine' => $semaine,
au lieu
de
 'semaine' => $semaine,
.

++
Messages postés
77
Date d'inscription
vendredi 26 avril 2013
Statut
Membre
Dernière intervention
17 octobre 2020
5
merci HubertJ mais ce n'est pas cela j'ai toujours la même erreur ;)
Messages postés
760
Date d'inscription
samedi 29 mars 2014
Statut
Membre
Dernière intervention
8 septembre 2018
115
je pense que tu as une erreur a ce niveau :
if(not_empty(['semaine'])) {


Il y a aussi ça
Statis Week de <?= $data->pseudo ?></h1><br>



Je ne connais pas ces syntaxes.

j'airais mis plutot:
if(not_empty($_POST['semaine'])) {

et
Statis Week de <?php echo $data->pseudo; ?></h1>