Aucune alimentation dans la table de la base de données

Résolu/Fermé
Izzara - Modifié le 14 mars 2021 à 16:28
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 - 14 mars 2021 à 21:35
Bonjour et un grand merci d'avance pour l'aide qui me sera apportée.

J'ai créé une base de donnée sur phpMyAdmin afin de pouvoir tester le site internet que je suis entrain de confectionner pour mon club.
Tout se passait très bien jusqu'à présent :
  • mes tests d'inscription de nouveaux membres
  • les nouveaux membres inscrits alimentaient bien la BDD
  • le cookie créé faisait très bien son travail :)

...

Je me suis donc lancé dans la conception d'une nouvelle page pour permettre aux membres de s'inscrire à distance à une compétition. Et là, gros soucis. Les tests effectués permettent de confirmer l'inscription avec une redirection et un message de réussite. Par contre, ma table de la BDD reste désespérément vide ; elle ne s'alimente pas du tout.

Je vous joins la page complète avec le code PHP et HTML


Base de données




Code de connexion à la base de données.

<?php

    try {
    $bdd = new PDO('mysql:host=localhost;dbname=petanque_club_valencien;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); // CONNEXION BDD
    }
    catch (PDOException $e) {     
            echo 'Échec de la connexion : ' . $e->getMessage(); // ECHEC CONNEXION BDD
            exit;
    }
?>



Page complète des codes PHP et du code HTML

<?php

    // SAISIE DES DONNEES - CONCOURS TRIPLETTE
    if(!empty($_POST['capitaine']) && !empty($_POST['prenom_joueur1']) 
                                   && !empty($_POST['nom_joueur1']) 
                                   && !empty($_POST['licence1']) 
                                   && !empty($_POST['prenom_joueur2']) 
                                   && !empty($_POST['nom_joueur2']) 
                                   && !empty($_POST['licence2']) 
                                   && !empty($_POST['prenom_joueur3']) 
                                   && !empty($_POST['nom_joueur3']) 
                                   && !empty($_POST['licence3'])) {

  require('src/bdd.php'); // CONNEXION BDD

  // ON STOCK LES DONNEES DANS DES VARIABLES
        $capitaine                 = htmlspecialchars($_POST['capitaine']);
  $prenom_joueur1            = htmlspecialchars($_POST['prenom_joueur1']);
  $nom_joueur1               = htmlspecialchars($_POST['nom_joueur1']);
        $licence1                  = htmlspecialchars($_POST['licence1']);
        $prenom_joueur2            = htmlspecialchars($_POST['prenom_joueur2']);
  $nom_joueur2               = htmlspecialchars($_POST['nom_joueur2']);
        $licence2                  = htmlspecialchars($_POST['licence2']);
        $prenom_joueur3            = htmlspecialchars($_POST['prenom_joueur3']);
  $nom_joueur3               = htmlspecialchars($_POST['nom_joueur3']);
        $licence3                  = htmlspecialchars($_POST['licence3']);

        // TEST SI NUMERO DE LICENCE DEJA SAISI
  $requete = $bdd->prepare('SELECT COUNT(*) AS listeLicence FROM triplette WHERE licence1 = ? AND licence2 = ? AND licence3 = ?') or die(print-r($bdd->errorInfo()));
  $requete->execute(array($licence1, $licence2, $licence3));

  while ($consultation = $requete->fetch()) {
   if ($consultation['listeLicence'] != 0) {
    header('location: triplette.php?error=1&message=Licence déjà utilisée pour ce concours'); // LICENCE DEJA UTLISEE
    exit();
   }
  }

        // ENVOI DE LA REQUETE - ALIMENTATION DE LA BDD
        $save = $bdd->prepare('INSERT INTO triplette(capitaine, prenom_joueur1, nom_joueur1, licence1, prenom_joueur2, nom_joueur2, licence2, prenom_joueur3, nom_joueur3, licence3) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)') or die(print-r($bdd->errorInfo()));
        $save->execute(array($capitaine, $prenom_joueur1, $nom_joueur1, $licence1, $prenom_joueur2, $nom_joueur2, $licence2, $prenom_joueur3, $nom_joueur3, $licence3));
        header('location: triplette.php?success=1');
        exit();        
    }
?>

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <title>Pétanque Club Valencien</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
    <link rel="stylesheet" href="design/css/triplette.css">
    <meta name="viewport" content="width=device-width">
  </head>

    <body>
    
        <!-- BANNIERE BOULODROME -->
        <header>
            <div class="boulodrome">
                
                    <div class="banniere_boulodrome">
                    <img classe="image1" src="pictures/img1.png" alt="Trophée des ville" style="width: 295px; height: 367px;">
                    <img class="image2" src="pictures/boulodrome-valence-d-agen.jpg" alt="Boulodrome de Valence d'Agen">
                    <img class="image3" src="pictures/img2.jpg" alt="Trophée des villes" style="width: 305px; height: 367px;">
                    </div>     
            </div>   

            <!-- ACCUEIL BIENVENUE -->
            <div class="banniere_presentation">
                <h2>Bienvenue sur le site internet du <strong>Pétanque Club Valencien</strong></h2>
            </div>
        </header>

        <!-- BAR DE NAVIGATION -->
        <nav class="navbar navbar-dark bg-dark navbar-expand-lg">
            <div class="container">
                <div class="navbar-brand">Pétanque Club Valencien</div>  

                <button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarText">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarText" >
                    <ul class="navbar-nav">                        
                        <li class="nav-item">
                            <a href="dirigeants.php" class="nav-link">Dirigeants</a>
                        </li>
                        <li class="nav-item">
                            <ul id="menu-accordeon">
                                <li><a href="#">Concours</a>
                                    <ul>
                                        <li><a href="triplette.php">Triplette</a></li>
                                        <li><a href="#">Doublette</a></li>                    
                                        <li><a href="#">TàT</a></li>
                                    </ul>
                                </li>
                            </ul>    
                        </li>
                        <li class="nav-item">
                            <a href="resultats.php" class="nav-link">Résultats</a>
                        </li>
                        <li class="nav-item">
                            <a href="galerie.php" class="nav-link">Photos</a>
                        </li>
                        <li class="nav-item">
                            <a href="#ancreCoordonnees" class="nav-link">Contact</a>
                        </li>
                        <li>
                            <a href="src/logout.php" class="nav-link">Deconnexion</a>
                        </li>
                    </ul>
                </div>
            </div>      
        </nav>

        
        <!-- MANIFESTATIONS -->
        <div class="manif my-5">
            <?php

                if(isset($_GET['success'])) {                
                    echo '<p style="width: 200px; display: inline; background:green; color: white; margin: 40px auto; text-transform: uppercase; text-align: center;">Inscription résussie</p>';
                }
                else {
                    if(isset($_GET['error'])) {
                        if(isset($_GET['message'])) {
                            echo '<div class="alert error">'.htmlspecialchars($_GET['message']).'</div>';
                        }                
                    }        
            ?>

            <div class="concours">
                <p class="mx-4 bg-primary text-wrap text-white text-center">Concours du XX / XX / XX - Triplette - Doublette - Tête à tête - Triplette Mixte</p>
                <p class="mx-4 bg-primary text-wrap text-white">Description du concours</p>
            
                <!-- INSCRIPTION -->
                <form action="triplette.php" method="post">
                    <p class="inscription mx-4 mt-4 bg-primary text-wrap text-white text-center">Pour vous inscrire à l'avance, remplissez ce formulaire</p>

                    <div class="Capitaine">
                        <label class="mx-4 my-1 bg-primary w-5 text-wrap text-white">Nom du capitaine de l'équipe</label>
                        <input type="text" name="capitaine" maxlength="30" placeholder="Nom du capitaine">
                    </div>

                    <div class="joueur1">                    
                        <label class="mx-4 bg-primary w-5 text-wrap text-white">Joueur 1 - Nom - Prénom - N° de licence</label>
                        <input type="text" name="prenom_joueur1" maxlength="30" placeholder="exemple : Pierre">
                        <input type="text" name="nom_joueur1" maxlength="30" placeholder="exemple : DUPONT">
                        <input type="number" name="licence1" maxlength="30" placeholder="exemple : 08202578774">
                    </div>

                    <div class="joueur2">                    
                        <label class="mx-4 bg-primary w-5 text-wrap text-white">Joueur 2 - Nom - Prénom - N° de licence</label>
                        <input type="text" name="prenom_joueur2" maxlength="30" placeholder="Nom du joueur">
                        <input type="text" name="nom_joueur2" maxlength="30" placeholder="Prénom du joueur">
                        <input type="number" name="licence2" maxlength="30" placeholder="exemple : 08202578774">
                    </div>

                    <div class="joueur3">
                        <label class="mx-4 bg-primary w-5 text-wrap text-white">Joueur 3 - Nom - Prénom - N° de licence</label>                    
                        <input type="text" name="prenom_joueur3" maxlength="30" placeholder="Nom du joueur">
                        <input type="text" name="nom_joueur3" maxlength="30" placeholder="Prénom du joueur">
                        <input type="number" name="licence3" maxlength="30" placeholder="exemple : 08202578774">
                    </div>
                    <button type="submit">Envoyer</button>
                </form>
            
            </div>

            <div id="fluxrss">                
                <iframe src="https://feed.mikle.com/widget/v2/143991/?preloader-text=Loading"></iframe>
            </div>

            <?php } ?>

        </div>


        <!-- PIED DE PAGE -->
        <footer>
            <div class="coordonnees">
                <h1 id="ancreCoordonnees">Coordonnées du club</h1>
                <p><strong>Pétanque Club Valencien</strong><br />
                47, Rue du Château<br />
                82400 VALENCE D'AGEN<br /><br />
                Téléphone : 06 10 18 50 28<br />
                mail : <a href="mailto:***@***">***@***</a>
                </p>
            </div>

            <div class="partenaires">
                <h2>Nos partenaires</h2>
                <p>
                    <a href="https://magasins.supercasino.fr/supermarche/valence-d-agen/CS594" target="_blank"><img src="pictures/geant_casino.jpg" alt="Géant Casino" class="logo_geant" />Géant Casino</a>
                </p>
                <p>
                    <a href="https://valencedagen.fr/" target="_blank"><img src="pictures/mairie.jpg" alt="Mairie de Valence d'Agen" class="logo_mairie" />Mairie de Valence d'Agen</a>
                </p>
            </div>

            <div class="liens_utiles">
                <h2>Liens utiles</h2>
                <ul>
                    <li>
                        <a href="https://www.ffpjp.org/portail/images/2021/CM_2021.pdf" target="_blank">Certificat médical</a>
                    </li>
                    <li>
                        <a href="https://www.ffpjp.org/portail/images/pdf/2018/cerfa_question_sante.pdf" target="_blank">Questionnaire de santé</a>
                    </li>
                    <li>
                        <a href="https://www.ffpjp.org/portail/images/pdf/2018/attestation_quest_2018.pdf" target="_blank">Attestation questionnaire de santé</a>
                    </li>
                    <li>
                        <a href="https://www.ffpjp.org/portail/images/2021/FORMULAIRE_DE_PRISE_DE_LICENCE_2021.pdf" target="_blank">Demande de licence</a>
                    </li>
                    <li>
                        <a href="http://www.petanque82-comite.fr/" target="_blank">Site du CD82</a>
                    </li>
                    <li>
                        <a href="https://home.ffpjp.org/" target="_blank">Site de la FFPJP</a>
                    </li>
                </ul>
            </div>
        </footer>
    </body>
</html>



Merci donc de votre aide pour tenter de résoudre ce soucis.

5 réponses

jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
14 mars 2021 à 17:08
Bonjour
Commence par appliquer ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et désactive les redirections pour pouvoir voir les éventuelles erreurs

.
0
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 1
Modifié le 14 mars 2021 à 19:01
Merci pour ton aide.

Voici les modifications effectuées ; j'espère ne pas avoir fait d'erreurs.
Ma connexion à la BDD est déjà dans un fichier séparé.

Connexion base de données

<?php

    try {
    $bdd = new PDO('mysql:host=localhost;dbname=petanque_club_valencien;charset=utf8', 'root', ''); // CONNEXION BDD
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }
    catch (PDOException $e) {     
        die('Erreur : ' . $e->getMessage());
    }
?>



Le code PHP de ma page principale

<?php

    // SAISIE DES DONNEES - CONCOURS TRIPLETTE
    if(!empty($_POST['capitaine']) && !empty($_POST['prenom_joueur1']) 
                                   && !empty($_POST['nom_joueur1']) 
                                   && !empty($_POST['licence1']) 
                                   && !empty($_POST['prenom_joueur2']) 
                                   && !empty($_POST['nom_joueur2']) 
                                   && !empty($_POST['licence2']) 
                                   && !empty($_POST['prenom_joueur3']) 
                                   && !empty($_POST['nom_joueur3']) 
                                   && !empty($_POST['licence3'])) {

  require('src/bdd.php'); // CONNEXION BDD

  // ON STOCK LES DONNEES DANS DES VARIABLES
        $capitaine                 = htmlspecialchars($_POST['capitaine']);
		$prenom_joueur1    = htmlspecialchars($_POST['prenom_joueur1']);
		$nom_joueur1          = htmlspecialchars($_POST['nom_joueur1']);
        $licence1                  = htmlspecialchars($_POST['licence1']);
        $prenom_joueur2    = htmlspecialchars($_POST['prenom_joueur2']);
		$nom_joueur2          = htmlspecialchars($_POST['nom_joueur2']);
        $licence2                  = htmlspecialchars($_POST['licence2']);
        $prenom_joueur3            = htmlspecialchars($_POST['prenom_joueur3']);
		$nom_joueur3               = htmlspecialchars($_POST['nom_joueur3']);
        $licence3                  = htmlspecialchars($_POST['licence3']);

        // TEST SI NUMERO DE LICENCE DEJA SAISI
        // 1 - PREPARATION DES VARIABLES
        $sql   = 'SELECT COUNT(*) AS listeLicence FROM triplette WHERE licence1 = ? AND licence2 = ? AND licence3 = ?';
        $datas = array($licence1, $licence2, $licence3);
        
        // 2 - REQUETE
        try {
            $requete = $bdd->prepare($sql);
            $requete->execute(array($datas));
        }
        catch (Exception $e) {
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($datas);
        }

        // 3 - TEST PRESENCE LICENCE
  while ($consultation = $requete->fetch()) {
   if ($consultation['listeLicence'] != 0) {
    header('location: triplette.php?error=1&message=Licence déjà utilisée pour ce concours'); // LICENCE DEJA UTLISEE
    exit();
   }
  }

        // ENVOI DE LA REQUETE - ALIMENTATION DE LA BDD
        // 1 - PREPARATION DES VARIABLES
        $sql  = 'INSERT INTO triplette(capitaine, prenom_joueur1, nom_joueur1, licence1, prenom_joueur2, nom_joueur2, licence2, prenom_joueur3, nom_joueur3, licence3) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
        $datas = array($capitaine, $prenom_joueur1, $nom_joueur1, $licence1, $prenom_joueur2, $nom_joueur2, $licence2, $prenom_joueur3, $nom_joueur3, $licence3);

        // 2 - REQUETE
        try {
            $requete = $bdd->prepare($sql);
            $requete->execute(array($datas));
        }
        catch (Exception $e) {
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($datas);
        }
        // header('location: triplette.php?success=1');
        // exit();
        
    }
?>


Lors du nouveau test, je reçois ces 2 erreurs :

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 08203308776 [1] => 08203308775 [2] => 08203308774 )

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => VALLADE [1] => Eric [2] => VALLADE [3] => 08203308776 [4] => Florence [5] => CANTELOBRE [6] => 08203308775 [7] => Elodie [8] => HELIE [9] => 08203308774 )

Je cherche d'où viennent ces satanées erreurs mais là je bloque... Apparemment cela viendrait du dernier champs qui ne rentre pas dans le array si j'ai bien compris les mlessages...
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
14 mars 2021 à 19:16
<?php

// Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// Connexion à la bdd
  require('src/bdd.php'); // CONNEXION BDD
  
//fonction permettant de récupérer proprement les variables
function getPOST($nomVariable, $defaultValue = NULL ){
  return !empty($_POST[$nomVariable]) ? trim($_POST[$nomVariable]) : $defaultValue;
}  
    
  
//récupération propre des variables AVANT de les utiliser
// NB: Htmlspecialchars ne doit servir QUE pour de l'affichage.. pas pour les requêtes SQL
$capitaine = getPOST('capitaine');
$prenom_joueur1 = getPOST('prenom_joueur1');
$nom_joueur1 = getPOST('nom_joueur1');
$prenom_joueur2 = getPOST('prenom_joueur2');
$nom_joueur2 = getPOST('nom_joueur2');
$prenom_joueur3 = getPOST('prenom_joueur3');
$nom_joueur3 = getPOST('nom_joueur3');
$licence3 = getPOST('licence3');
$licence2 = getPOST('licence2');
$licence1 = getPOST('licence1');

  
//Traitement des données
if($capitaine && $prenom_joueur1 && $nom_joueur1 && $prenom_joueur2 && $nom_joueur2  && $prenom_joueur3 && $nom_joueur3 && $licence3 ){
  // TEST SI NUMERO DE LICENCE DEJA SAISI
  $sql   = 'SELECT COUNT(*) AS listeLicence FROM triplette WHERE licence1 = ? AND licence2 = ? AND licence3 = ?';
  $datas = array($licence1, $licence2, $licence3);

  try {
      $requete = $bdd->prepare($sql);
      $requete->execute(array($datas));
      $consultation = $requete->fetch()
  } catch (Exception $e) {
      echo " Erreur ! ".$e->getMessage();
      echo " Les datas : " ;
      print_r($datas);
  }

  // 3 - TEST PRESENCE LICENCE
  if ($consultation['listeLicence'] != 0) {
    header('location: triplette.php?error=1&message=Licence déjà utilisée pour ce concours'); // LICENCE DEJA UTLISEE
    exit();
  }
  
 
  $sql  = 'INSERT INTO triplette(capitaine, prenom_joueur1, nom_joueur1, licence1, prenom_joueur2, nom_joueur2, licence2, prenom_joueur3, nom_joueur3, licence3) 
                          VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
  $datas = array($capitaine, $prenom_joueur1, $nom_joueur1, $licence1, $prenom_joueur2, $nom_joueur2, $licence2, $prenom_joueur3, $nom_joueur3, $licence3);

  try {
      $requete = $bdd->prepare($sql);
      $requete->execute(array($datas));
       header('location: triplette.php?success=1');
       exit();
  } catch (Exception $e) {
      echo " Erreur ! ".$e->getMessage();
      echo " Les datas : " ;
      print_r($datas);
  }
 
  
}
?>

0
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 1
Modifié le 14 mars 2021 à 19:59
Le code modifié

//Affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);

    // Connexion à la bdd
    require('src/bdd.php'); // CONNEXION BDD
  
    //fonction permettant de récupérer proprement les variables
    function getPOST($nomVariable, $defaultValue = NULL ) {
    return !empty($_POST[$nomVariable]) ? trim($_POST[$nomVariable]) : $defaultValue;
    }  
    
  
    //récupération propre des variables AVANT de les utiliser
    // NB: Htmlspecialchars ne doit servir QUE pour de l'affichage.. pas pour les requêtes SQL
    $capitaine      = getPOST('capitaine');
    $prenom_joueur1 = getPOST('prenom_joueur1');
    $nom_joueur1    = getPOST('nom_joueur1');
    $prenom_joueur2 = getPOST('prenom_joueur2');
    $nom_joueur2    = getPOST('nom_joueur2');
    $prenom_joueur3 = getPOST('prenom_joueur3');
    $nom_joueur3    = getPOST('nom_joueur3');
    $licence3       = getPOST('licence3');
    $licence2       = getPOST('licence2');
    $licence1       = getPOST('licence1');

  
    //Traitement des données
    if($capitaine && $prenom_joueur1 && $nom_joueur1 && $prenom_joueur2 && $nom_joueur2  && $prenom_joueur3 && $nom_joueur3 && $licence3 ) {
    // TEST SI NUMERO DE LICENCE DEJA SAISI
    $sql   = 'SELECT COUNT(*) AS listeLicence FROM triplette WHERE licence1 = ? AND licence2 = ? AND licence3 = ?';
    $datas = array($licence1, $licence2, $licence3);

        try {
            $requete = $bdd->prepare($sql);
            $requete->execute(array($datas));
            $consultation = $requete->fetch();
            if ($consultation['listeLicence'] != 0) {
                header('location: triplette.php?error=1&message=Licence déjà utilisée pour ce concours'); // LICENCE DEJA UTLISEE
                exit();
            }
        } catch (Exception $e) {
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($datas);
        }  

 
        $sql    = 'INSERT INTO triplette(capitaine, prenom_joueur1, nom_joueur1, licence1, prenom_joueur2, nom_joueur2, licence2, prenom_joueur3, nom_joueur3, licence3) 
                                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
        $datas  = array($capitaine, $prenom_joueur1, $nom_joueur1, $licence1, $prenom_joueur2, $nom_joueur2, $licence2, $prenom_joueur3, $nom_joueur3, $licence3);

        try {
            $requete = $bdd->prepare($sql);
            $requete->execute(array($datas));
            header('location: triplette.php?success=1');
            exit();
        } catch (Exception $e) {
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($datas);
        }
    }
?>


Par contre, j'ai inclus le test de la licence dans le catch car le test hors du catch me renvoie une variable indéfinie.

Toujours les mêmes erreurs :

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 08203308776 [1] => 08203308775 [2] => 08203308774 )

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => VALLADE [1] => Eric [2] => VALLADE [3] => 08203308776 [4] => Florence [5] => CANTELOBRE [6] => 08203308775 [7] => Elodie [8] => HELIE [9] => 08203308774 )

Si je comprends bien ces 2 erreurs, il semblerait qu'il y ait un problème de taille de tableau entre le départ et l'arrivée. Le dernier numéro ne rentre pas dans le tableau sur chacune des erreurs.

Si c'est le cas, je ne comprends pas du tout car tout correspond entre la table de la BDD et ce qu'on lui envoie.
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
14 mars 2021 à 20:03
Ce qui me parait étrange, c'est que tu sembles bien avoir autant de "?" que de variables envoyées dans l'array $datas à chacune de tes requêtes.
Le message d'erreur n'a donc aucun sens...

Pourrais tu t'assurer que ton fichier est bien encodé en utf8 sans bom ( voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8)

Modifie également les "catch" de tes deux requêtes comme ceci
} catch (Exception $e) {
    echo " Erreur ! ".$e->getMessage();
    echo " <br> Dans la Requete : <br>" . $sql ;
    echo " <br> Avec Les datas : <br>, " ;
    print_r($datas);
    exit;
}
0

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

Posez votre question
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 1
Modifié le 14 mars 2021 à 21:04
J'utilise Visual Studio Code - L'encodage est UTF-8 (sans BOM)

Après avoir fait la modification du catch, j'obtiens la même erreur mais pas la seconde

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Dans la requete :
SELECT COUNT(*) AS listeLicence FROM triplette WHERE licence1 = ? AND licence2 = ? AND licence3 = ?
Avec les datas :
Array ( [0] => 08203308776 [1] => 08203308775 [2] => 08203308774 )


Du coup, j'ai shunté la requête du test de la licence pour voir et la seconde erreur apparaît.

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Dans la requete :
INSERT INTO triplette(capitaine, prenom_joueur1, nom_joueur1, licence1, prenom_joueur2, nom_joueur2, licence2, prenom_joueur3, nom_joueur3, licence3) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Avec les datas :
Array ( [0] => VALLADE [1] => Eric [2] => VALLADE [3] => 08203308776 [4] => Florence [5] => CANTELOBRE [6] => 08203308775 [7] => Elodie [8] => HELIE [9] => 08203308774 )

Donc toujours au point de départ. Je vais finir par perdre le peu de cheveux qu'il me reste :)
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
14 mars 2021 à 21:20
Je viens de voir l'erreur ..... il y a un "array" en trop dans le execute
   $requete->execute(array($datas));

A corriger par
   $requete->execute($datas);
0
Izzara82 Messages postés 26 Date d'inscription dimanche 14 mars 2021 Statut Membre Dernière intervention 11 janvier 2023 1 > jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
14 mars 2021 à 21:35
Oui effectivement il y avait cette erreur, merci à toi.

Par contre, il y en avait une seconde que je viens de voir et qui était énorme. J'avais passé mes numéros de licence en INT sauf que la valeur que je rentrais dépassait les paramètres des variables de type INT. Du coup, j'ai passé en BIGINT les 3 licences dans la table et ça fonctionne maintenant parfaitement.

En tout cas, merci à toi pour le temps passé et les précieuses informations données.
0