Problème Ajout SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Ajout SQL

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 16:17

Merci, j'ai réussi a résoudre le problème grâce à la méthode war_dump j'ai remonté l'arborescence des fichiers et récupérer pas mal de variable qui me manquait notamment l'objet Field3. Merci pour l'aide en tout cas. :D

Re: Problème Ajout SQL

par Mazarini » 05 juin 2012, 16:09

A priori,
<?PHP
if (isset($_POST['id_ass_prof_mat'])) {
    $id_ass_prof_mat = $_POST['id_ass_prof_mat'];
} else {
    $id_ass_prof_mat = array();
}
var_dump($id_ass_prof_mat); // pour controle du contenu
...
?> 

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 15:40

Donc : $_POST['id_ass_prof_mat'][362] a la de la checkbox, donc ca va de 1 à 404.
J'ai essayé ta méthode et cela ne fonctionne pas pour le tableau...
C'est vraiment étrange... tous les autres scripts ne m'ont pas posé de problèmes...
Je vais tenter d'isoler $field dans une variable intermédiaire.

Re: Problème Ajout SQL

par Mazarini » 05 juin 2012, 15:29

Donc : $_POST['id_ass_prof_mat'][362] a la valeur 362
Ton script devrait marcher si $field3[0] a la valeur 362.

Par contre, j'ai un doute sur l'interprétation de $_POST['id_ass_prof_mat'][$field3[0]].
Peut être $_POST['id_ass_prof_mat'][${field3[0]}] ou mettre $field3[0] dans une variable intermédiaire.

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 15:07

Apparemment tout est transmit correctement...

avec var Dump j’obtiens cela...
array(3){"id_classes"]=>string(1) "id_ass_prof_mat"]=> array(1) {[362]=>string(3) "362"} ["Submit"]=>string(7)"Ajouter"}

Donc tout est envoyé on dirait

Re: Problème Ajout SQL

par Mazarini » 05 juin 2012, 14:58

ajoute un var_dump($_POST) en début de script pour voir les paramètres transmis.

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 14:17

$id_ass_prof_mat est déclaré dans le fichier précédent qui s'appelle ajout_eq_ped.php (dans le formulaire plus précisément).

<input type='checkbox' name='id_ass_prof_mat[$field3[0]]' value='$field3[0]'>

Et je tente de l'appelé avec $_POST. Mais cela ne marche pas... Pour rappeller le contexte dans lequel j'ai récupéré le code, l'ancien serveur était en variable_global : ON et le nouveau est à OFF... Donc j'ai du récupérer toutes les variables sur environ 500 pages mais il n'y a que sur celle ci que je bloque...

Pour rappeller le tableau j'ai fait
$id_ass_prof_mat=$_POST['id_ass_prof_mat'][$field3[0]];

C'est bien de cette façon que l'on fait??

Re: Problème Ajout SQL

par Ryle » 05 juin 2012, 13:59

Si tu ne rentres pas dans le if(), c'est que le test retourne FAUX. Donc que $id_ass_prof_mat[$i] n'est pas défini.
As-tu vérifié ce que contenait ton tableau $id_ass_prof_mat avant d'entrer dans la boucle ?
Et euh... en fait... à quel endroit as-tu déclaré le tableau $id_ass_prof_mat ? :-*

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 13:32

J'ai finalement identifié le problème, mon script ne veut pas rentrer dans la boucle if(isset) dans le fichier reg_eq_ped.php...
Je n'arrive pas à récupérer la variable $id_ass_prof_mat[$i].

SVP aidez moi, il ne me reste plus que cette erreur à corriger pour rendre le site 100% opérationnel... :priere: :priere: :priere:

Merci d'avance

Re: Problème Ajout SQL

par Dynamic88 » 05 juin 2012, 09:50

Bonjour,
Bon j'ai tout essayé et rien ne marche, je ne vois même pas les écho que j'ai insérer dans mon traitement...
Je pense que le problème vient de l variable $i ou $field dans le fichier re_eq_ped.php ...

Quelqu'un à une idée SVP??

Re: Problème Ajout SQL

par Mazarini » 01 juin 2012, 15:57

L'explication la plus probable est que le script ne passe pas sur les instructions qui font l'insertion.

Ajoute des messages dans les différentes branches de ton traitement pour voir ou tu passes et cerner le problème.

Problème Ajout SQL

par Dynamic » 01 juin 2012, 15:41

Bonjour,

J'ai actuellement un problème avec l'ajout de données dans ma base de données.
J'ai un formulaire de base dans lequel je choisi dans une DDL une classe.
Ensuite j'ai un tableau qui me donne la liste des professeurs d'un collège, je peux cocher chaque ligne.
Puis quand j'ajoute, je dois avoir la possibilité de voir si le professeur s'est bien ajouté à la classe que je lui ait assigné.
Seulement voilà mon problème, quand j'ajoute... j'ai bien un message qui me dit que l'ajout s'est effectué... mais quand je regarde dans la classe, ce n'est pas le cas...

Je fournis les trois pages de codes nécessaires.

Merci d'avance.


Fichier see_eq_ped.php
<head>
<style type="text/css">
<!--
.Style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
<title>détail de l'&eacute;quipe p&eacute;dagogique</title>


<style type="text/css">
<!--
.Style1 {font-weight: bold}
.Style3 {
	font-size: xx-small;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Style6 {font-weight: bold; font-family: Verdana, Arial, Helvetica, sans-serif; color: #FF0000;}
-->
</style>


</head>

<?php

/**Permet la connexion à la base de données.*/
include('connection_bdd.php');
$id_connect = mysql_connect(SERVEUR,LOG,MDP) or die ("probleme de connexion");
mysql_select_db(BDD) or die ("probleme de BDD");
mysql_query("SET NAMES 'utf8'");


/** Permet de récupérer les variable par la fonction $_GET['variable']--> Par Sébastien MICARD  (nouvel hébergement en Register_Globals = OFF.*/
  $nom_user=$_GET['nom_user']; 
  $prenom_user=$_GET['prenom_user'];
  $num_session=$_GET['num_session'];
  $poste_user=$_GET['poste_user'];
  $classe_user=$_GET['classe_user'];
  $id_classes=$_GET['id_classes'];
  $id_classe=$_GET['id_classe'];

?>
  <h2 align="center"><span class="Style1">DETAIL DES MEMBRES DE L'EQUIPE PEDAGOGIQUE</span></h2>

 
 
 
  <p>&nbsp;</p>
  <h4 align="center"><strong><span class="Style1">LISTES DES MEMBRES DE L'EQUIPE PEDAGOGIQUE DE LA <?php echo "$classe_user"; ?></span></strong></h4>
  <table width="720" border="1" align="center">
  <tr>
    <td width="200" align="center"><h6 class="Style1"><b>professeur</b></h6></td>
    <td width="100" align="center"><h6 class="Style1"><b>matière</b></h6></td>
	<td width="350" align="center"><h6 class="Style1"><b>E-mail</b></h6></td>
    <td width="70" align="center"><h6><span class="Style1">Action</span></h6></td>
  </tr>
<?php

/**Requête SQL.*/
$sql=" select prof.nom_prof, prof.prenom_prof, prof.email_prof, matiere.nom_matiere, membre_eq_ped.id_membre_eq from membre_eq_ped, prof, matiere, ass_prof_mat where membre_eq_ped.id_classes='$id_classes' and membre_eq_ped.id_ass_prof_mat = ass_prof_mat.id_ass_prof_mat and ass_prof_mat.id_prof = prof.id_prof and ass_prof_mat.id_matiere = matiere.id_matiere ORDER BY prof.nom_prof, prof.prenom_prof ";
$req = mysql_query($sql) or die("Erreur SQL !<br>$sql<br>mysql_error()"); 
$nbr_resultat = mysql_num_rows($req);


/**Permet de classer les données dans un tableau.*/

while($field = mysql_fetch_array($req))
{

echo "
  <tr>
    <td width='200' align='center'>$field[0] $field[1]</td>
    <td width='100' align='center'>$field[3]</td>
	<td width='350' align='center'>$field[2]</td>";
echo "<td width='70' align='center'><a href='del_eq_ped.php?num_session=$num_session&id_membre_eq=$field[4]&nom_user=$nom_user&prenom_user=$prenom_user&poste_user=$poste_user&id_classes=$id_classes'  onclick='return confirm(\"Voulez-vous vraiment supprimer ce prof ?\");'><img src='SUPPR.gif' alt='Supprimer' border='0'></a>
</td></tr>";					


}
echo "</table>";

if ($nbr_resultat == 0)	

	echo "<tr><td> Aucune information n'a été enregistré pour le moment </td></tr>";
?>
<p align="center" style="text-align: right"><a href="ajout_eq_ped.php?num_session=<?php echo $num_session?>&nom_user=<?php echo $nom_user?>&prenom_user=<?php echo $prenom_user?>&poste_user=<?php echo $poste_user?>">Retour</a></p>

Fichier reg_eq_ped.php qui permet d'enregistrer l'association. Je pense que le problème vient d'içi...
<?php
/**Permet la connexion à la base de données.*/
include('connection_bdd.php');
$id_connect = mysql_connect(SERVEUR,LOG,MDP) or die ("probleme de connexion");
mysql_select_db(BDD) or die ("probleme de BDD");
mysql_query("SET NAMES 'utf8'");



/** Permet de récupérer les variable par la fonction $_GET['variable']--> Par Sébastien MICARD  (nouvel hébergement en Register_Globals = OFF.*/
  $nom_user=$_GET['nom_user']; 
  $prenom_user=$_GET['prenom_user'];
  $num_session=$_GET['num_session'];
  $poste_user=$_GET['poste_user'];
  $id_classes=$_GET['id_classes'];
  $ass_prof_mat=$_GET['ass_prof_mat'];
  
/**Requête SQL.*/
$sql=" select MAX(id_ass_prof_mat) from ass_prof_mat";
$req = mysql_query($sql) or die("Erreur SQL !<br>$sql<br>mysql_error()"); 
if($field = mysql_fetch_array($req))
{
	for ($i = 0; $i <= $field[0]; $i++)
	{
		if (isset($id_ass_prof_mat[$i]))
		{
			/**Requête SQL.*/
			$sql = "SELECT id_classes, id_ass_prof_mat FROM membre_eq_ped WHERE id_classes='$id_classes' and id_ass_prof_mat='$i'"; 
			$req = mysql_query($sql) or die("Erreur SQL !<br>$sql<br>mysql_error()"); 



			if(mysql_fetch_array($req)) 
 		    {				
				/** Verifie si les professeurs ne sont pas déjà enregistrés.*/
				echo"<script language='JavaScript'>
				alert('Un ou plusieurs profs sont déjà enregistrés pour la classe choisie');
				window.location=('ajout_eq_ped.php?num_session=$num_session&nom_user=$nom_user&prenom_user=$prenom_user&poste_user=$poste_user');
				</script>";
  		    }
 		    else
			{
				

  

  				$id_classes=$_POST['id_classes'];
				$sql = "insert into membre_eq_ped VALUES ('', '$id_classes', '$i')";
	  	   	    mysql_query($sql) or die ("Erreur SQL !<br>$sql<br>mysql_error()");
			}
		}
	}
}

/**Permet d'annoncer à l'utilisateur que l'enregistrement à été effectué avec succès.*/
echo"<script language='JavaScript'>
		alert('L\'enregistrement a été effectué avec succes');
		window.location=('ajout_eq_ped.php?num_session=$num_session&nom_user=$nom_user&prenom_user=$prenom_user&poste_user=$poste_user');
		</script>";
		
?>
Fichier ajout_eq_ped.php page de base
<head>
<style type="text/css">
<!--
.Style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
<title>ajout des membres de l'&eacute;quipes p&eacute;dagogiques</title>
<style type="text/css">
<!--
.Style1 {font-weight: bold}
.Style3 {
	font-size: xx-small;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Style6 {font-weight: bold; font-family: Verdana, Arial, Helvetica, sans-serif; color: #FF0000;}
-->
</style>


</head>

<?php
/**Permet la connexion à la base de données.*/
include('connection_bdd.php');
$id_connect = mysql_connect(SERVEUR,LOG,MDP) or die ("probleme de connexion");
mysql_select_db(BDD) or die ("probleme de BDD");
mysql_query("SET NAMES 'utf8'");
?>

  <h2 align="center"><span class="Style1">AJOUT DES MEMBRES DE L'EQUIPES PEDAGOGIQUES</span></h2>
  <p>&nbsp;</p>
  <h4 align="center"><strong><span class="Style1">LISTES DES EQUIPES PEDAGOGIQUES</span></strong></h4>
    <table width="320" border="1" align="center">
  
  <tr>
    <td width="70" align="center"><h6 class="Style1"><b>Classe</b></h6></td>
    <td width="200" align="center"><h6 class="Style1"><b>Professeur principal</b></h6></td>
    <td width="50" align="center"><h6><span class="Style1">Action</span></h6></td>
  </tr>
  
<?php
/**Requête SQL.*/
$sql=" select classe.id_classes, classe.id_niveau, classe.classe_user, prof.nom_prof, prof.prenom_prof, prof.id_prof from classe, prof where classe.id_prof = prof.id_prof ORDER BY classe.classe_user";
$req = mysql_query($sql) or die("Erreur SQL !<br>$sql<br>mysql_error()"); 
$nbr_resultat = mysql_num_rows($req);


/**Permet de mettre dans un tableau les données présentes dans la base de données.*/
while($field = mysql_fetch_array($req))
{
	/** Permet de récupérer les variable par la fonction $_GET['variable']--> Par Sébastien MICARD  (nouvel hébergement en Register_Globals = OFF.*/
  $nom_user=$_GET['nom_user']; 
  $prenom_user=$_GET['prenom_user'];
  $num_session=$_GET['num_session'];
  $poste_user=$_GET['poste_user'];

echo "
  <tr>
    <td width='70' align='center'>$field[2]</td>
    <td width='200' align='center'>$field[3] $field[4]</td>";
echo "<td width='50' align='center'><a href='see_eq_ped.php?num_session=$num_session&id_classes=$field[0]&classe_user=$field[2]&nom_user=$nom_user&prenom_user=$prenom_user&poste_user=$poste_user'><img src='VOIR.gif' alt='Détail' border='0'></a>
</td></tr>";					


}
echo "</table>";

if ($nbr_resultat == 0)	

	echo "<tr><td> Aucune information n'a été enregistré pour le moment </td></tr>";
?>
<p align="center" style="text-align: center"><a href="espace_admin.php?num_session=<?php echo $num_session?>&nom_user=<?php echo $nom_user?>&prenom_user=<?php echo $prenom_user?>&poste_user=<?php echo $poste_user?>">Retour au menu</a></p>
<br><hr width='50%'><br>
<p align="center" style="text-align: center"><a href="espace_admin.php?num_session=<?php echo $num_session?>&nom_user=<?php echo $nom_user?>&prenom_user=<?php echo $prenom_user?>&poste_user=<?php echo $poste_user?>">Retour au menu</a></p>
  <h4 align="center"><strong><span class="Style1">AJOUTER UN MEMBRE DE L'EQUIPE PEDAGOGIQUE</span></strong></h4>
 
  <form method="post" name="form" action="reg_eq_ped.php?num_session=<?php echo $num_session?>&nom_user=<?php echo $nom_user?>&prenom_user=<?php echo $prenom_user?>&poste_user=<?php echo $poste_user?>">
    <table width="672" border="0" align="center">
      <tr>
        <td width="355"><h6 align="right" class="Style1">Choisissez une classe S.V.P : </h6></td>
        <td width="307">
          <div align="left">
            <select name="id_classes">
	          <?php
			  
			  /**Requête SQL.*/
		$sql2="select * from classe ORDER BY id_niveau";
		$req2 = mysql_query($sql2) or die ("Erreur SQL !<br>$sql2<br>mysql_error()");
		
		while ($field = mysql_fetch_row($req2))
		{
			echo "<option value='$field[0]'>$field[3]</option>";
		}
		?>
            </select>
          </div></td>
      </tr>
      <tr>
        <td colspan="2" class="Style1"><div align="left" class="Style3">
          <h6 align="center">
		  <?php
		   /**Requête SQL.*/
		$sql3="select ass_prof_mat.id_ass_prof_mat, prof.nom_prof, prof.prenom_prof, prof.email_prof, matiere.nom_matiere from ass_prof_mat, prof, matiere where ass_prof_mat.id_prof = prof.id_prof and ass_prof_mat.id_matiere = matiere.id_matiere ORDER BY prof.nom_prof, prof.prenom_prof";
		$req3 = mysql_query($sql3) or die ("Erreur SQL !<br>$sql2<br>mysql_error()");
		echo "<table width='800' border='1'>";
		while ($field3 = mysql_fetch_row($req3))
		{
			echo "<tr>
    <td width='17'><div align='center'>
      <input type='checkbox' name='id_ass_prof_mat[$field3[0]]' value='$field3[0]'>
    </div></td>
    <td width='150'><div align='center' class='Style1'>$field3[1]</div></td>
    <td width='150'><div align='center' class='Style1'>$field3[2]</div></td>
    <td width='150'><div align='center' class='Style1'>$field3[4]</div></td>
    <td width='300'><div align='center'>$field3[3]</div></td>
  </tr>";
		}
		echo "</table>";
		  ?>
		  </h6>
        </div>          </td>
      </tr>
      <tr>
        <td colspan="2"><div align="center">
          <p>&nbsp;          </p>
          <p>
            <input type="submit" name="Submit" value="Ajouter">
              </p>
        </div></td>
      </tr>
    </table>
  </form>
  </body>