[RESOLU] Formulaire, enregistrement en bdd et boucle while

Petit nouveau ! | 1 Messages

13 févr. 2023, 05:06

Bonjour tout le monde,
depuis hier je suis confrontée à un problème.
Je débute en PHP et j'essaye d'enregistrer les informations d'un formulaire.
Cependant, à cause de la boucle while je suis pose, la bdd enregistre la même information en boucle, jusqu'à ce qu'elle se termine.
Imaginons que choisisse la checkbox 1, il va m'afficher x fois les informations en bdd.
Je ne sais pas comment l'arrêter ...
Si quelqu'un aurait une idée.
$message="";

if (isset($_GET['id'])){
    $id_user = $_GET['id'];

    if(isset($_POST) && !empty($_POST)){


        //$id_avatar = $_POST['avatar_btn'];
        
        $sql = "SELECT * FROM t_avatar";
        $rs = query($sql);
        
        if($rs && mysqli_num_rows($rs)) {
        // Pour chaque enregistrement :
        while ($data3 = mysqli_fetch_assoc($rs)) {
           // On teste si l'utilisateur a cocher la case correspondante au module
            if (!empty($_POST['avatar_btn'])) {

                    // Préparation du tableau memoire pour l'enregistrement des données en BDD
                    $h = array();
                    $h['fk_user'] = $id_user;
                    $h['fk_avatar'] = $_POST['avatar_btn'];
                   
                   // $_SESSION[SESSION_NAME]['avatar']= $_POST['avatar_btn'];

                    // Enregistrement en BDD
                    sql_simple_insert('t_avatar_user', $h);

                    /*print_r($_POST); 
                    exit();  */
                    
                    header('location: index.php?page=accueil&id='.$id_user);
                
            }
                
            }
        }
    }else{
        $message='<p>Merci de choisir un avatar</p>';
    }
}
$html='';
    
$html = '   <p class="title_form">Choisi ton avatar- Etape 3/3</p>';
$html .= '  <div id= "box_register">';
$html .= '      <form method="POST" action="index.php?page=inscription_avatar_user&id='.$id_user.'" enctype="multipart/form-data">'; 
$html .='           <div class="table_choix5">'; 
//création boucle 
$sql_mod = "SELECT * FROM t_avatar;";
$rs_mod = query($sql_mod);

    if($rs_mod && mysqli_num_rows($rs_mod)){
        while($data_avatar = mysqli_fetch_assoc($rs_mod)){
        $gotRight = squery("SELECT 1 FROM t_avatar_user WHERE fk_avatar=".$data_avatar['id']." AND fk_user=".$id_user);


        $html .= '      <div>';
        $html .= '          <label class="row_btn_flex" for="avatar_btn'.$data_avatar['id'].'"  >';           
        $html .='               <div class="label_avatar">';

        $html .='                   <input type="radio"  '.($gotRight? ' checked ' : '').' class="option-input-avatar"  name="avatar_btn" value="'.$data_avatar['id'].'" id="avatar_btn'.$data_avatar['id'].'" />';
        $html .='                   <img class="avatar_icn" alt="'.$data_avatar['nom'].'" src="images/avatar/'.$data_avatar['fichier'].'"> ';
        $html .= '              </div>';
        $html .= '          </label>';
        $html .= '      </div>';                 
        }
    } 

    $html .='       </div>';   
    $html .= '      <div class="box_connect">'; 
    $html .=        $message;
    $html .= '           <input type="submit" id="btn_send_form" value="J\' obtiens mon avatar"/>';
    $html .= '      </div>';
    $html .= '      <input type="hidden" name="id_user" value="'.$id_user.'" />';
    $html .= '   </form>';
    $html .= '</div>';