Insertion multiple dans la base de données

Fermé
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 18 sept. 2020 à 12:11
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 20 sept. 2020 à 16:41
Bonjour, je voudrai enregistrer la présence ou l'absence des élèves dans une classe ( par une insertion multiple), voici mon code

partie tableau des noms et prenoms des élève


 				
<table >
					
<?php 
	
try
    {		
 $req = $bdd->prepare('SELECT * FROM frais WHERE idspec = ? AND class = ? AND label = ? AND serie = ? AND iduser = ? ORDER BY nom');
	
	$req->execute(array($idspec,$class,$mot, $serie, $iduser));
			 
	//Somme des élèves de la classe	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
		
	
	
	
	
	
echo '<tr>'; 	
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Présence - Absence</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>ident</strong></strong>'; echo '</th>';

	$j =1;
	 		  		  
 while($donnees =  $req->fetch()){
	 
	 
echo '<tr>';	 
		  
echo '<td>'; echo $j;  echo '</td>';  
	  
 echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';  
			
echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>'; 
	  
echo '<td>';  echo '<input type="checkbox" id="scales" name="statut">
  <label for="scales">';  echo'Présent</label>'; echo ' ';
   echo '<input type="checkbox" id="scales" name="statut"><label for="scales">'; echo'Absent</label>';
 echo '</td>'; 
	 
echo '<td>'; echo ''.$donnees['ideleve'].''; echo '</td>'; 	 
	 
	 

echo '</tr>'; 

$j++;	
	  
	 
 }	 
		

	
	
?>	
</table>					
					





Partie insertion base de données

 $idmat ='0';	
			  
 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {

			$seance = array($_POST['statut']); $ideleve = array($donnees['ideleve']); 
	 
  while( ($i <= count($seance) )  &&  ($i <= count($ideleve) )){
                    
                try {
  
 $sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';
	 
    $datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
	 
	$req = $bdd->prepare ( $sql );
  $req->execute ( $datas ) ; 
   
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }
  
   }//
  }
		




Quand j'exécute il m'affiche ceci :

Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/kela/presence.php on line 188

Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/kela/presence.php on line 188
Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ideleve' cannot be nullArray ( [ideleve] => [idmat] => 0 [action] => [jour] => \'Lundi\' [mois] => septembre [an] => 2021 [id] => 1 )


La ligne 188 c'est celle-ci:

 $datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);



SVP comment puis-je faire pour insérer les données de tous les élèves au même moment ?
en plus, c'est comme si il tient pas compte de la case que j'ai coché ( présent ou Absent)

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 sept. 2020 à 15:01
Bonjour,

En même temps... tu n'as pas placé tes champs dans un formulaire ...
donc.. aucune donnée n'est envoyée !

A minima... ça devrait ressembler à un truc du genre
<?php
// penser à mettre l'affichage des erreurs php

// Ne pas oublier de mettre le fichier de connexion à la bdd


$sql = 'SELECT * FROM frais WHERE idspec = ? AND class = ? AND label = ? AND serie = ? AND iduser = ? ORDER BY nom' ;
$datas = array($idspec,$class,$mot, $serie, $iduser);

try    {		
    $req = $bdd->prepare($sql);
	$req->execute($datas);
}  catch(Exception $e)   {
     die('Erreur : '.$e->getMessage());
 }	
?>				
<form method="post" action="nom_de_ton_fichier.php" >
<table >			
<?php 
echo '<tr>'; 	
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Présence - Absence</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>ident</strong></strong>'; echo '</th>';

	$j =1;
	 		  		  
 while($donnees =  $req->fetch()) {
  echo '<tr>';	  
  echo '<td>'; echo $j;  echo '</td>';  
  echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';  
  echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>';  
  echo '<td>';  echo '<input type="checkbox" id="scales" name="statut">
  <label for="scales">';  echo'Présent</label>'; echo ' ';
   echo '<input type="checkbox" id="scales" name="statut"><label for="scales">'; 
  echo 'Absent</label>';
  echo '</td>'; 
  echo '<td>'; echo ''.$donnees['ideleve'].''; echo '</td>'; 	 	 
  echo '</tr>'; 
  $j++;	 	 
 }	 
?>
</table>
</form>



0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
Modifié le 18 sept. 2020 à 15:14
C'est moi qui avait oublié de mettre < form>, les champs sont déjà dans le formulaire, le problème c'est lorsque j'exécute il ne prend en compte les différentes séléction et les ideleve qui s'affiche dans le tableau, il me renvoi toujours la même erreur:

Remarque : Décalage non défini : 1 dans /Applications/MAMP/htdocs/kela/presence.php à la ligne 188

Remarque : Décalage non défini : 1 dans /Applications/MAMP/htdocs/kela/presence.php à la ligne 188
Erreur! SQLSTATE [23000]: Violation de la contrainte d'intégrité: 1048 La colonne 'ideleve' ne peut pas être nullArray ([ideleve] => [idmat] => 0 [action] => [jour] => \ 'Lundi \' [mois] => septembre [an] => 2021 [id] => 1)


toujours la ligne 188 :

  $datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
18 sept. 2020 à 17:37
Pour qu'on puisse réellement t'aider ..... il nous faudrait ton code COMPLET.
ET Si il est en plusieurs fichiers .... pense à mettre le nom de chaque fichier avant son code....
0
modemo2018 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
19 sept. 2020 à 02:06
J'ai un souci avec l'accès à mon compte, voici le code au grand complet :
ça c'est la partie formulaire

<form action="" method="post" class="p-5 bg-white">

div class="row form-group"><div class="col-md-12 mb-3 mb-md-0">             
<label class="font-weight-bold" for="fullname">Séléctionnez le jour à enrégistrer</label>
<select name="jour" id="class" class="form-control">
<option value=\'Lundi\'>Lundi</option>
<option value=\'Mardi\'>Mardi</option>
<option value=\'Mercredi\'>Mercredi</option>
<option value=\'Jeudi\'>Jeudi</option>
<option value=\'Vendredi\'>Vendredi</option>
<option value=\'Samedi\'>Samedi</option>
   
</select></div></div>


 <div class="row form-group">
                <div class="col-md-12 mb-3 mb-md-0">
				
<table >
					
<?php 
	
try
    {		
 $req = $bdd->prepare('SELECT * FROM frais WHERE idspec = ? AND class = ? AND label = ? AND serie = ? AND iduser = ? ORDER BY nom');
	
	$req->execute(array($idspec,$class,$mot, $serie, $iduser));
			 
	//Somme des élèves de la classe	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
		
	
	
	
	
	
echo '<tr>'; 	
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Présence - Absence</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>ident</strong></strong>'; echo '</th>';

	$j =1;
	 		  		  
 while($donnees =  $req->fetch()){
	 
	 
echo '<tr>';	 
		  
echo '<td>'; echo $j;  echo '</td>';  
	  
 echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';  
			
echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>'; 
	  
 echo '<td>';  echo '<input type="checkbox" id="scales" name="statut">
  <label for="scales">';  echo'Présent</label>'; echo ' ';
   echo '<input type="checkbox" id="scales" name="statut"><label for="scales">'; 
  echo 'Absent</label>';
  echo '</td>'; 
	 
echo '<td>'; echo ''.$donnees['ideleve'].''; echo '</td>'; 	 
	 
	 

echo '</tr>'; 

$j++;	
	  
	 
 }	 
		

	
	
?>	
	
	
	
	
</table>					
					
 </div>
</div>			
<div class="row form-group">
                <div class="col-md-12">
                  <input type="submit" value="Enregistrer" class="btn btn-primary  py-2 px-4">
                </div>
              </div>
	

</form>












Voici la partie d'insertion où se trouve le problème:


$i=1;			  

	$idmat ='0';	
			  
 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {

			$seance = array($_POST['statut']); $ideleve = array($donnees['ideleve']); 
	 
  while( ($i <= count($seance) )  &&  ($i <= count($ideleve) )){
                    
                try {
  
 $sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';
	 
    $datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
	 
	$req = $bdd->prepare ( $sql );
  $req->execute ( $datas ) ; 
   
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
 
  }
	
$i++;	
	
				  
}//FIN

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > modemo2018
19 sept. 2020 à 02:30
Qu'est-ce que tu ne comprends pas dans la phrase : "CODE COMPLET" ????
Et quand je te demande : INDIQUER LE NOM DES FICHIERS ????

Je suppose que le code "d'insertion" se trouve dans le même fichier que celui de ton formulaire....... j'aimerai donc que tu postes le code COMPLET ( et en un seul morceau ) du fichier : presence.php
Sinon... comment savoir où se trouve la ligne 188 ...... ( qui correspond à ton message d'erreur....) ??!!

!! AVANT DE NOUS POSTER TON CODE !! ==> encore une fois, je t'invite à lire ET à appliquer les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Merci également d'indenter correctement ton code et à faire les retours à la ligne à chaque instruction.
En l'état, ton code est une bouse illisible.........
Si tu veux de l'aide, fais un effort de présentation.
Ce n'est pas la première fois qu'on te le dit !
0
Voici le CODE complet

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Liste —Présence</title>
	 <?php
include("connexion.php");
session_start(); ?>   
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nunito+Sans:200,300,400,700,900|Roboto+Mono:300,400,500"> 
    <link rel="stylesheet" href="fonts/icomoon/style.css">

    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/magnific-popup.css">
    <link rel="stylesheet" href="css/jquery-ui.css">
    <link rel="stylesheet" href="css/owl.carousel.min.css">
    <link rel="stylesheet" href="css/owl.theme.default.min.css">
    <link rel="stylesheet" href="css/bootstrap-datepicker.css">
    <link rel="stylesheet" href="css/animate.css">  
    <link rel="stylesheet" href="fonts/flaticon/font/flaticon.css">
    <link rel="stylesheet" href="css/fl-bigmug-line.css">
  
    <link rel="stylesheet" href="css/aos.css">

    <link rel="stylesheet" href="css/style.css">
    
  </head>
  <body>
  
  <div class="site-wrap">

    <div class="site-mobile-menu">
      <div class="site-mobile-menu-header">
        <div class="site-mobile-menu-close mt-3">
          <span class="icon-close2 js-menu-toggle"></span>
        </div>
      </div>
      <div class="site-mobile-menu-body"></div>
    </div> <!-- .site-mobile-menu -->
    
    
 <header class="site-navbar py-1" role="banner">

      <div class="container">
        <div class="row align-items-center">
          
          <div class="col-6 col-xl-2">
            <h1 class="mb-0"> <?php  $session = $_SESSION["id"];  $ident = $_SESSION["identifiant"];
				
		echo "<a href=\"index.php?session=$session & identifiant=$ident\"";?> <?php echo 'class="text-black h2 mb-0"><img src="images/logo-1.png" width="130" height="63" alt=""/></a>'; ?>  </h1>
          </div>

          <div class="col-10 col-xl-10 d-none d-xl-block">
            <nav class="site-navigation text-right" role="navigation">

              <ul class="site-menu js-clone-nav mr-auto d-none d-lg-block">
                <li><a href="acceuil-compte.php">Acceuil</a></li>
                <li><a href="compte.php">Enregistrement élève</a></li>
				<li class="has-children">
                  <a href="comptematere.php">Matière & Notes</a>
                  <ul class="dropdown">
					<li><a href="comptenote.php">Notes par élève</a></li>
                    <li><a href="comptematere.php">Matière par classe </a></li>
                    
                  </ul>
				</li>
                <li><a href="page-stat.php">Statistique des classes</a></li>
                 <li><a href="deconnexion.php"><span class="rounded bg-primary py-2 px-3 text-white"><span class="h5 mr-2">+</span> Se déconnecter</span></a></li>
              </ul>
            </nav>
          </div>

          <div class="col-6 col-xl-2 text-right d-block">
            
            <div class="d-inline-block d-xl-none ml-md-0 mr-auto py-3" style="position: relative; top: 3px;"><a href="#" class="site-menu-toggle js-menu-toggle text-black"><span class="icon-menu h3"></span></a></div>

          </div>

        </div>
      </div>
      
    </header>

    <div class="unit-5 overlay" style="background-image: url('images/hero_bg_2.jpg');">
      <div class="container text-center"><h2 class="mb-0">
       <?php  include("connexion.php");
			
	try
    {		
 $req = $bdd->prepare('SELECT * FROM enseignant WHERE pseudo = ?');
	
	$req->execute(array($_SESSION["pseudo"]));
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
	$donnees =  $req->fetch(); 
		
  	try
    {		
 $req1 = $bdd->prepare('SELECT * FROM compte WHERE id = ?');
	
	$req1->execute(array($donnees['id']));
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());	
			
	 }		
	 
	 $don =  $req1->fetch(); 
	 echo $don['nom'];	
			?></h2>
       
      </div>
    </div>

    
    

    <div class="site-section bg-light">
      <div class="container">
        <div class="row">
       
          <div class="col-md-12 col-lg-8 mb-5">
			
		
	<?php   
	
	//début de ton fichier php .... ça veut dire .. DEBUT !!!:
error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );



	 
$iduser = !empty ( $_SESSION['id'] ) ? $_SESSION['id'] : NULL;				  		  
$class = !empty ( $_GET['class'] ) ? $_GET['class'] : NULL;
$cycle = !empty ( $_GET['cycle'] ) ? $_GET['cycle'] : NULL;	 
$serie = !empty ( $_GET['serie'] ) ? $_GET['serie'] : NULL;	
$mois = !empty ( $_GET['mois'] ) ? $_GET['mois'] : NULL;	
$mot = !empty ( $_GET['mot'] ) ? $_GET['mot'] : NULL;		  
$idspec = !empty ( $_GET['idspec'] ) ? $_GET['idspec'] : NULL;
$spec = !empty ( $_GET['spec'] ) ? $_GET['spec'] : NULL;		  

			  $jour = date("m-d");

if ( $jour >= "09-01") { $annee = (date("Y") + 1); } else {

//** Enregistre l'annnée en cours
setlocale(LC_TIME, "fr_FR");
$date2 =	strftime("%Y");				  		  
$annee= $date2;		  
} 		  

			  
$gen ='LYCÉE GÉNÉRAL';
$tech ='LYCÉE TECHNIQUE';
$prim ='PRIMAIRE';	
$college ='Collège';				  
$coll = trim($college);
				  
$trimed = trim($gen);		
$trime = trim($tech);
$primaire = trim($prim);	
$trim = trim($cycle);		
		  
$i=1;			  
			  
			  
if($trim == $primaire) {
	$idmat ='0';	
			  
 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {

			$seance = array($_POST['statut']); $ideleve = array($donnees['ideleve']); 
	 
  while( ($i <= count($seance) )  &&  ($i <= count($ideleve) )){
                    
                try {
  
 $sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';
	 
    $datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
	 
	$req = $bdd->prepare ( $sql );
  $req->execute ( $datas ) ; 
   
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }
  
   }//
  }
	
$i++;	
	
				  
}//FIN

	if(($trim == $trimed)||($trim == $trime) ||($trim == $coll)) {

 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {

$nomat = $_POST['nomat'];
  $sql = 'SELECT idmat FROM matiere WHERE nomat = ? AND serie = ? AND spec = ? AND iduser = ?';
  $datas = array($nomat,$serie,$spec,$iduser);      
  try{		
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $arrMat =  $req->fetch();
}catch(Exception $e){
    die('Erreur : '.$e->getMessage());
  }	
  
  
$idmat =  $arrMat['nomat'];  
  

$seance = array($_POST['statut']); 
  for($i = 0; $i < count($seance); $i++) 
                {
                    
                try {
  
 $sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';
	 
    $datas = array("ideleve" =>$donnees['ideleve'],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
	 
	$req = $bdd->prepare ( $sql );
  $req->execute ( $datas ) ; 
   
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }
  
   }
  }
	
	
}		  
   ?>
			  
			  
 		  
			     
<form action="" method="post" class="p-5 bg-white">

<?php echo'Contrôle Pésence-Absence';   echo '<p class="mb-0 font-weight-bold">'.$_GET["class"].': '; if(($trim == $trimed)||($trim == $trime) ||($trim == $coll)) {	 echo $serie;  echo '| '; echo $spec;  } ?> <?php echo '</p><br>'?>  


<div class="row form-group"><div class="col-md-12 mb-3 mb-md-0">             
<label class="font-weight-bold" for="fullname">Séléctionnez le jour à enrégistrer</label>
<select name="jour" id="class" class="form-control">
<option value=\'Lundi\'>Lundi</option>
<option value=\'Mardi\'>Mardi</option>
<option value=\'Mercredi\'>Mercredi</option>
<option value=\'Jeudi\'>Jeudi</option>
<option value=\'Vendredi\'>Vendredi</option>
<option value=\'Samedi\'>Samedi</option>
   
</select></div></div>
<?php

 ?>	  
	
<div class="row form-group"><div class="col-md-12 mb-3 mb-md-0">  	
	
	
	
         				<?php
	if(($trim == $trimed)||($trim == $trime) ||($trim == $coll)) {	
				  
					  
if($class){
  $sql = 'SELECT * FROM matiere WHERE class = ? AND serie = ? AND spec = ? AND iduser = ?';
  $datas = array($class,$serie,$spec,$iduser);      
  try{		
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $arrMat =  $req->fetchAll(); //on stocke le résultat dans un array
  }catch(Exception $e){
    die('Erreur : '.$e->getMessage());
  }												
}else{
  echo "<br><span>Variable 'class'  vide !</span>"; 
}
				
echo '<label class="font-weight-bold" for="fullname">Séléctionnez Matières </label>
<select name="nomat" id="nomat" class="form-control">';

  if(!empty($arrMat)){
      foreach($arrMat as $don){
        echo "<option value='".$don['nomat']."'>".$don['nomat']."</option>";
      }
    }
	
	}
  ?>
</select>
				   
  </div>
</div>	   
    
 <div class="row form-group">
                <div class="col-md-12 mb-3 mb-md-0">
				
<table >
					
<?php 
	
try
    {		
 $req = $bdd->prepare('SELECT * FROM frais WHERE idspec = ? AND class = ? AND label = ? AND serie = ? AND iduser = ? ORDER BY nom');
	
	$req->execute(array($idspec,$class,$mot, $serie, $iduser));
			 
	//Somme des élèves de la classe	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
		
	
	
	
	
	
echo '<tr>'; 	
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Présence - Absence</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>ident</strong></strong>'; echo '</th>';

	$j =1;
	 		  		  
 while($donnees =  $req->fetch()){
	 
	 
echo '<tr>';	 
		  
echo '<td>'; echo $j;  echo '</td>';  
	  
 echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';  
			
echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>'; 
	  
 echo '<td>';  echo '<input type="checkbox" id="scales" name="statut">
  <label for="scales">';  echo'Présent</label>'; echo ' ';
   echo '<input type="checkbox" id="scales" name="statut"><label for="scales">'; 
  echo 'Absent</label>';
  echo '</td>'; 
	 
echo '<td>'; echo ''.$donnees['ideleve'].''; echo '</td>'; 	 
	 
	 

echo '</tr>'; 

$j++;	
	  
	 
 }	 
		

	
	
?>	
	
	
	
	
</table>					
					
 </div>
</div>						
					
									
					
					


  <div class="row form-group">
                <div class="col-md-12">
                  <input type="submit" value="Enregistrer" class="btn btn-primary  py-2 px-4">
                </div>
              </div>
	
<?php 	





	 echo "<p><a href=\"mois-paye2.php?class=$class & serie=$serie &cycle=$cycle &idspec=$idspec &mot=$mot &spec=$spec\"";?><?php echo ' class="btn btn-primary  py-2 px-4 rounded-0"><<-Retour</a></p>';
		
		

	 ?> 
	
	
</form>
       </div>
			
		

          <div class="col-lg-4">
          
			
              
			
<?php		  
	
		
		echo'<div class="p-4 mb-3 bg-white">';	echo'<h3 class="h5 text-black mb-3">AFFICHAGE</h3>';
									  
						  
	echo' </div>';			
?>
	
	
           
<div class="p-4 mb-3 bg-white">
<h3 class="h5 text-black mb-3">ESPACE PUB</h3>

            </div>
              
            </div>
          </div>
        </div>
      </div>
    </div>
  <footer class="site-footer">
      <div class="container">
        

        <div class="row">
          <div class="col-lg-9">
            <div class="row">
              <div class="col-6 col-md-3 col-lg-3 mb-5 mb-lg-0">
<h3 class="footer-heading mb-4">GENET</h3>
   <ul class="list-unstyled">
              <li>
                 <span class="d-block text-white"><a href="about.php">Qui sommes-nous?</a></span>
                
              </li>
              <li>
                <span class="d-block text-white">Dévenir partenaire associé</span>
                05 352 15 49/ 06 876 86 97
              </li>
              <li>
                <span class="d-block text-white">Email</span>
                ***@***
              </li>
            </ul>               
              </div>
              <div class="col-6 col-md-3 col-lg-3 mb-5 mb-lg-0">
                <h3 class="footer-heading mb-4">Partenaires</h3> <ul class="list-unstyled">
              <li>
                <span class="d-block text-white"> </span>
                
              </li>
              <li>
                <span class="d-block text-white"></span>
            
              </li>
              <li>
                <span class="d-block text-white"></span>
               
              </li>
            </ul>
                
              </div>
              <div class="col-6 col-md-3 col-lg-3 mb-5 mb-lg-0">
                <h3 class="footer-heading mb-4">Partenaires</h3>
                
              </div>
              <div class="col-6 col-md-3 col-lg-3 mb-5 mb-lg-0">
                <h3 class="footer-heading mb-4">Partenaires</h3>
                 <ul class="list-unstyled">
              <li>
                <span class="d-block text-white"></span>
                 <img src="images/logoFHI.jpg" width="120" height="45" alt=""/>
              </li>
                <li>
                <span class="d-block text-white"> <a title="Referencement Google"href="http://www.referencement-google-gratuit.com/">Referencement Google</a></span>
                
              </li>
            </ul>
              </div>
            </div>
          </div>
          <div class="col-lg-3">
            <h3 class="footer-heading mb-4">Contacts Info</h3>
            <ul class="list-unstyled">
				
			 <li>
<span class="d-block text-white"><strong>Suivez-nous</strong></span>
 <a href="https://www.facebook.com/GENET-103138341543897"><img src="images/Facebook-logo.png" width="62" height="62"></a>
<a href="https://www.instagram.com/genetcongo"><img src="images/instagram.png" width="62" height="62"></a></li>
				
              
              <li>
<span class="d-block text-white">Télèphone</span>
                (+242)05 352 15 49/ 06 876 86 97
              </li>
              <li>
                <span class="d-block text-white">Email</span>
                ***@***
              </li>
            </ul>
            
          </div>
        </div>
        <div class="row pt-5 mt-5 text-center">
          <div class="col-md-12">
            <p>
            <!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
            Copyright © <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>document.write(new Date().getFullYear());</script> Tous droits Reservés | <strong>genet-congocom</strong>
            
            </p>
          </div>
          
        </div>
      </div>
    </footer>
  </div>

  <script src="js/jquery-3.3.1.min.js"></script>
  <script src="js/jquery-migrate-3.0.1.min.js"></script>
  <script src="js/jquery-ui.js"></script>
  <script src="js/popper.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/owl.carousel.min.js"></script>
  <script src="js/jquery.stellar.min.js"></script>
  <script src="js/jquery.countdown.min.js"></script>
  <script src="js/jquery.magnific-popup.min.js"></script>
  <script src="js/bootstrap-datepicker.min.js"></script>
  <script src="js/aos.js"></script>
  

  <script src="js/main.js"></script>
    
  </body>
</html>

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 sept. 2020 à 13:42
Tu n'as pas lu ce que je t'ai marqué ??

!! AVANT DE NOUS POSTER TON CODE !! ==> encore une fois, je t'invite à lire ET à appliquer les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ca fait 50 fois que je te le dis.... mais visiblement... tu n'as que faire des conseils qu'on te donne....

Si tu ne veux pas faire d'effort... pourquoi en ferions nous pour t'aider ?

Je te laisse appliquer ces conseils... et revenir nous avoir avec ton code modifié.
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 19 sept. 2020 à 15:06
En parcourons le lien que tu m'as mis , ce que j'ai compris c'est qu'il m'explique comment gérer les erreurs et le decoupage. J'avoue que j'ai un peu du mal à mieux cerné ce que tu me demande de faire

Mais pour vous épargner tous les autres tralala qui ne sont pas lié à la difficulté que je rencontre, j'ai découpé le fichier presence.php en deux

VOICI l'intégrale de La partie du code d'insertion
     
$gen ='LYCÉE GÉNÉRAL';
$tech ='LYCÉE TECHNIQUE';
$prim ='PRIMAIRE'; 
$college ='Collège';      
$coll = trim($college);      
$trimed = trim($gen);  
$trime = trim($tech);
$primaire = trim($prim); 
$trim = trim($cycle); 
      
if($trim == $primaire) {
 $idmat ='0';     
 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {
$seance = array($_POST['statut']); $ideleve = array($donnees['ideleve']); 
while( ($i <= count($seance) )  &&  ($i <= count($ideleve) )){
 try {
$sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';

$datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);//VOICI LA LIGNE 188 OÙ LERREUR EST SIGNALÉE
$req = $bdd->prepare ( $sql );
$req->execute ( $datas ) ; 
 } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }
  }
  }
$i++;      
}//FIN
if(($trim == $trimed)||($trim == $trime) ||($trim == $coll)) {

 if (isset($_POST['jour']) && isset($_POST['statut'])) 
    {

$nomat = $_POST['nomat'];
  $sql = 'SELECT idmat FROM matiere WHERE nomat = ? AND serie = ? AND spec = ? AND iduser = ?';
  $datas = array($nomat,$serie,$spec,$iduser);      
  try{  
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $arrMat =  $req->fetch();
}catch(Exception $e){
    die('Erreur : '.$e->getMessage());
  } 
$idmat =  $arrMat['nomat'];  
 $seance = array($_POST['statut']); 
  for($i = 0; $i < count($seance); $i++)  {
try {
 $sql = 'INSERT INTO presence(ideleve, idmat, action, jour, mois,an,id)  VALUES( :ideleve,:idmat, :action, :jour, :mois, :an, :id)';
 $datas = array("ideleve" =>$donnees['ideleve'],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);
$req = $bdd->prepare ( $sql );
  $req->execute ( $datas ) ; 
 } catch ( Exception $e ) {
// en cas d'erreur :
 echo " Erreur ! " . $e->getMessage ();
print_r ( $datas );
exit;
  }
}
} 
}


D'après le fichier presence.php, la ligne 188 c'est cette ligne:

$datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser);  



VOICI LA PARTIE DU FORMULAIRE
<form action="" method="post" class="p-5 bg-white">
<div class="row form-group"><div class="col-md-12 mb-3 mb-md-0">             
<label class="font-weight-bold" for="fullname">Séléctionnez le jour à enrégistrer</label>
<select name="jour" id="class" class="form-control">
<option value=\'Lundi\'>Lundi</option>
<option value=\'Mardi\'>Mardi</option>
<option value=\'Mercredi\'>Mercredi</option>
<option value=\'Jeudi\'>Jeudi</option>
<option value=\'Vendredi\'>Vendredi</option>
<option value=\'Samedi\'>Samedi</option>
</select></div></div>
<div class="row form-group"><div class="col-md-12 mb-3 mb-md-0">   
<?php
 if(($trim == $trimed)||($trim == $trime) ||($trim == $coll)) {   
if($class){
  $sql = 'SELECT * FROM matiere WHERE class = ? AND serie = ? AND spec = ? AND iduser = ?';
  $datas = array($class,$serie,$spec,$iduser);      
  try{  
    $req = $bdd->prepare($sql);
    $req->execute($datas);
    $arrMat =  $req->fetchAll(); //on stocke le résultat dans un array
  }catch(Exception $e){
    die('Erreur : '.$e->getMessage());
  }            
}else{
  echo "<br><span>Variable 'class'  vide !</span>"; 
}
    
echo '<label class="font-weight-bold" for="fullname">Séléctionnez Matières </label>
<select name="nomat" id="nomat" class="form-control">';

  if(!empty($arrMat)){
      foreach($arrMat as $don){
        echo "<option value='".$don['nomat']."'>".$don['nomat']."</option>"; }
    }
} ?>
</select>
 </div></div>    
<div class="row form-group">
<div class="col-md-12 mb-3 mb-md-0">
<table >    
<?php 
try
    {  
 $req = $bdd->prepare('SELECT * FROM frais WHERE idspec = ? AND class = ? AND label = ? AND serie = ? AND iduser = ? ORDER BY nom');
 
 $req->execute(array($idspec,$class,$mot, $serie, $iduser));
    
 //Somme des élèves de la classe 
  }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
echo '<tr>';  
echo '<th>'; echo '<strong>#</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Nom</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>Prenom</strong></strong>'; echo '</th>'; 
echo '<th>'; echo '<strong>Présence - Absence</strong>'; echo '</th>'; 
echo '<th>'; echo '<strong><strong>ident</strong></strong>'; echo '</th>';
$j =1;
          
 while($donnees =  $req->fetch()){ 
echo '<tr>';     
echo '<td>'; echo $j;  echo '</td>';  
 echo '<td>'; echo ''.$donnees['nom'].'';  echo '</td>';    
echo '<td>'; echo ''.$donnees['prenom'].''; echo '</td>';   
 echo '<td>';  echo '<input type="checkbox" id="scales" name="statut">
  <label for="scales">';  echo'Présent</label>'; echo ' ';
   echo '<input type="checkbox" id="scales" name="statut"><label for="scales">'; 
  echo 'Absent</label>';
  echo '</td>';  
echo '<td>'; echo ''.$donnees['ideleve'].''; echo '</td>';   
cho '</tr>'; 
$j++; 
 }  
?> 
</table>     
 </div>
</div>      
<div class="row form-group">
<div class="col-md-12">
<input type="submit" value="Enregistrer" class="btn btn-primary  py-2 px-4">
 </div> </div>  
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
Modifié le 19 sept. 2020 à 14:19
Sauf peut être une mauvaise comprehension de ma part, tu m'avais dit de mettre le CODE COMPLET, voilà ce que tu m'a dit :
" j'aimerai donc que tu postes le code COMPLET ( et en un seul morceau ) du fichier : presence.php"

Le code au grand complet se trouve dans un seul fichier, et c'est celui que j'ai posté

Ce que j'ai compris il fallait mettre tout le contenu du fichier presence.php afin de repérer la ligne 188 où l'érreur est signalé, et cette erreur comme sur le fichier original il se trouve aussi dans la ligne 188, tel qu'il dans le fichier (presence.php) c'est tel qu'il est posté, rien n'a changé

Dans le code il ya la partie du code d'insertion puis le Formulaire
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 sept. 2020 à 17:35

En parcourons le lien que tu m'as mis , ce que j'ai compris c'est qu'il m'explique comment gérer les erreurs et le decoupage. J'avoue que j'ai un peu du mal à mieux cerné ce que tu me demande de faire

Oui... ça dit qu'il faut organiser son code ( le découper lorsque c'est possible, placer son code php AVANT le code html ... ) bref.. ça te donne des bonnes pratiques pour bien coder.
Ne confonds par le découpage de ton code avec la façon de nous le montrer ici.... ( ce que tu sembles avoir compris de travers !! )

Au passage, ça t'indique également qu'il faut récupérer les variables proprement avant de les utiliser
Et également que tu pourrais découper ton code en "fonctions" (mais j'ai l'impression que tu es loin de savoir ce que c'est.... et c'est malheureux... car c'est essentiel de connaitre les bases d'un langage pour pouvoir s'en servir ).

Pour en revenir à ton erreur
Remarque : Décalage non défini : 1 dans /Applications/MAMP/htdocs/kela/presence.php à la ligne 188
Erreur! SQLSTATE [23000]: Violation de la contrainte d'intégrité: 1048 
La colonne 'ideleve' ne peut pas être null
Array ([ideleve] => [idmat] => 0 [action] => [jour] => \ 'Lundi \' [mois] => septembre [an] => 2021 [id] => 1)

qui se trouve donc sur ta ligne
$datas = array("ideleve" =>$ideleve[$i],"idmat" =>$idmat,"action" =>$seance[$i],"jour" =>$_POST['jour'],"mois" =>$mois,"an" =>$annee,"id"=>$iduser); 

Tu vois que ta variable $ideleve[$i], retourne 0
Ce n'est donc pas possible....
d'où vient ce $i que tu veux mettre à ton $ideleve ???
Tu l'as initialisé ici
$ideleve = array($donnees['ideleve']); 

Mais.. pourquoi le mettre dans un array ????

Il suffirait de faire
$ideleve = $donnees['ideleve']; 



Et preuve que tu colles du code au hasard sans le comprendre ni même le relire.....
y'a ça en plein milieu de ton code
	//début de ton fichier php .... ça veut dire .. DEBUT !!!:
error_reporting ( E_ALL );
ini_set ( 'display_errors', TRUE );
ini_set ( 'display_startup_errors', TRUE );

... du grand n'importe quoi ......
Preuve que tu ne prends même pas la peine de comprendre à quoi ça sert .. ni de prendre le temps de lire les commentaires qu'on y met...


Moi j'arrête de perdre mon temps avec toi...
Le code que tu nous montres à été écrit en grande majorité par moi.. et tu n'es même pas capable de l'adapter convenablement...
Je t'aider lorsque tu te seras formé un minimum, que tu feras un gros effort pour lire et appliquer les consignes qu'on te donne et que tu sera en mesure de nous montrer un code correctement indenté et arrangé.

Tchao !
0
Le code d'insertion à la BDD à pour but d'insérer plusieurs données d'un seul coup, c-à-d en cliquant sur le bouton ''Enregistrer'' du formulaire,
sachant que j'ai plusieurs élèves dont chacun à un identifiant et l'utilisateur doit coché sur la case Présent ou Absent de plusieurs élèves, voilà pourquoi j'ai mis ça dans un array :

 $ideleve = array($donnees['ideleve']); 
 $seance = array($_POST['statut']);
et j'ai déclaré une variable
  $i=1;
,

d'où la condition :
 while( ($i <= count($seance) )  &&  ($i <= count($ideleve) ))


ainsi voilà pourquoi dans ma requète d'insertion j'ai mis

 "ideleve" =>$ideleve[$i]


Dans le tableau affiché les identifiants de chacun des élèves s'affiche normalement,

Dans mon fichier presence.php, j'ai mis le code d'insertion avant le FORMULAIRE, je me dit c'est peut être à cause de ça que la variable $ideleve[$i], retourne 0 ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > modemo2018
20 sept. 2020 à 16:41
$seance = array($_POST['statut']); $ideleve = array($donnees['ideleve']); 
while( ($i <= count($seance) )  &&  ($i <= count($ideleve) )){

Autant... on voit que ton $seance provient de ton formulaire ....
Autant ... ton $ideleve arrive de nul part ....

Tu n'as qu'à faire un </code> var_dump($_POST); </code> pour t'en rendre compte !

Car ... oui... il faut transmettre TOUTES les variables nécessaires VIA le FORMULAIRE....

Je m'arrêterais là pour l'aide apportée ...
Tu n'écoute quasiment rien de ce qu'on te dit ... et pire... le peut que tu veux bien lire.... tu ne le comprends pas....
Tu n'as clairement pas les connaissances minimum requises pour écrire du code... et tant que cette lacune ne sera pas corrigée ( en suivant des cours, des tutos....et en essayant de comprendre... pas juste copier/coller du code bêtement !! ) ça ne servira à rien.
Bonne continuation.
0