[RESOLU] Insert en BDD par boite a cocher

Eléphant du PHP | 134 Messages

04 nov. 2013, 22:43

Bonsoir ,

Voile je vous expose mon souci : J'ai fais pour mon travail un système pour la gestion des prêts matériels , a chaque sortie de matériel je saisie celle-ci .

1) Lorsque que le matériel est rentrer je dois saisir le retour de celui-ci , jusque ici tout fonctionne bien.

2) J'ai ajouté la possibilité par une boite a cocher de sélectionner le retour du matériel afin de gagner du temps dans la saisie cela fonctionne.

3) Afin d'avoir une archive des sorties pour cela j'ai créé une table supplémentaire , donc lorsque je coche pour retour du matériel l'action doit être :

- Il passe le matériel en état 0 = Disponible
- Il archive dans la table " Archive_sortie " le matériel en insérant la date de sortie - Nom du responsable - Chantier - Désignation du Matériel - la référence - Date de retour .
  $insertSql= "INSERT INTO Archive_sortie VALUES('',now(),'$designation','$reference','$date_sortie','$nom_retrait','$chantier','$date_retour')";

     $result2=mysql_query($insertSql);
    
Le problème que je rencontre c'est qu'il archive pas toujours , par moment sa plante sans erreur , il passe bien l'état du matériel en " 0 " mais il n'archive pas celui-ci .

Voici le reste de mon code qui réalise les actions :
 <?php echo '<td width="1%"><input type="checkbox" name="check[]"  id="roundedTwo" value="'. $datas['id'].' "/>

	  </td> ';?>

<?php

  echo '</tr>';

  }

 

  echo '</tbody>';

  echo '<tfoot><tr><th colspan="10">&nbsp;</th></tr></tfoot>';

  echo '</table>';

  echo '<table><tr><td><input name="Update" value="Valider les Retours Matériels" type="submit" /></form></td></tr></table>';

  mysql_free_result($req);

  
          // ENREGISTREMENT ARCHIVE //

        //parcours du array des ids reçus

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

        $id = implode(',', $_POST['check']); // On cherche les boites cocher //

		//var_dump($_POST['check']);  // test //

        foreach($_POST['check'] as $val) { 

		$list_retour = mysql_query("SELECT id,designation,reference,date_sortie,nom_retrait,chantier FROM materiels3 WHERE id='$val' LIMIT 1");

	    $materiel_retour = mysql_fetch_array($list_retour);

	    // VARIABLES //

	    $designation = $materiel_retour[1];

	    $reference = $materiel_retour[2];

	    $date_sortie = $materiel_retour[3];

	    $nom_retrait = $materiel_retour[4];

	    $chantier = $materiel_retour[5];

	    $date_retour =  date('Y/m/d') ; // date du jour du retour Matériel //

        $insertSql= "INSERT INTO Archive_sortie VALUES('',now(),'$designation','$reference','$date_sortie','$nom_retrait','$chantier','$date_retour')";

        $result2=mysql_query($insertSql);



        

		 } // ferme foreach //

		 

	       } // condition //

	

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

      $id = implode(',', $_POST['check']);

      $sql = "UPDATE materiels3 SET disponibilite='',chantier='',nom_retrait='',date_sortie='' WHERE id IN (".$id.")";

      $result=mysql_query($sql);  

	
     //en cas d'échec de la mise à jour, on affiche le message d'erreur

     if (!$result) {

     echo "erreur sql liée  à la mise à jour:\n" ;

     die( mysql_error());

     }

    

      }

     mysql_close(); // FERME LA BDD //

  


Merci pour votre aide

ViPHP
ViPHP | 2577 Messages

05 nov. 2013, 11:49

Bonjour,

Il faudrait tester que les fonctions mysql_query() (pour l'insert) se passe bien avec la fonction mysql_errno() et pour les select, il faudrait également tester que le nombre de lignes retournées avec la fonction mysql_​num_​rows().

Eventuellement, vérifie que les messages d'erreur s'affichent bien (error_reporting = E_ALL dans php.ini). Pour ce faire fais un script qui utilise une variable non initialisée pour voir si tu as bien un warning.

Eléphant du PHP | 134 Messages

05 nov. 2013, 13:27

Bonjour

OK merci pour ton aide , je ne sais pas comment faire ces test , mais je vais essayer au moins .

Bonne journée !