Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2986 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] - Problème d'insertion dans BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MySQL] - Problème d'insertion dans BDD

n°816454
r@phblues
Globe-trotter biologique
Posté le 06-08-2004 à 09:55:44  profilanswer
 

Je fais un script de gestion d'évènements avec agenda pour un intranet.
J'ai programmé un formulaire pour poster des nouveaux évenements. le fichier admin.php, contenant le formulaire de saisie est le suivant :  
 

Code :
  1. <?php
  2. // Aucune mise en cache
  3. header("Cache-Control: no-store, no-cache, must-revalidate" );
  4. /* Fichier de config d'accès à la base de données */
  5. require ("../confbdd.php" );
  6. // Récupération des variables
  7. $modifevok = $_GET['modifev']; //Validation de modification d'un Evènement
  8. $deleteev = $_GET['deleteev']; //Suppression d'un Evènement
  9. ?>
  10. <html>
  11. <head>
  12. <title>Gestion des Evènements</title>
  13. <link href='../styleadmin.css' rel='stylesheet' type='text/css'>
  14. </head>
  15. <body>
  16. <!-- Formulaire d'ajout d'evenements -->
  17. <center>
  18. <table class="deco-table" cellpadding='5' cellspacing='0'>
  19.  <tr>
  20.   <td class='deco3' colspan='2'>Ajout d'évènements</td>
  21.  </tr>
  22.  <tr>
  23.   <td class='nav' colspan='2'>
  24.   <a href="exevent.php">Evènements passés</a> |
  25.   <a href="eventencours.php">Evènements en cours</a> |
  26.   <a href="../admin.php">Menu général</a>
  27.   </td>
  28.  </tr>
  29.  <?php
  30.  if($modifevok != "" )
  31.    {
  32.     echo "<tr><td colspan='2'>\n";
  33.     echo "<center>Modification effectuée avec succès !</center>\n";
  34.     echo "</td></tr>\n";
  35.    }
  36.   if($deleteev != "" )
  37.    {
  38.       // lancement du lien mysql
  39.     $mysql_link = mysql_connect($host_mysql, $login_mysql, $password_mysql);
  40.     $supprev = requete("DELETE FROM events WHERE id='".$deleteev."'" );
  41.     echo "<tr><td colspan='2'>\n";
  42.     echo "<center>Suppression de l'évènement n°".$deleteev." effectuée avec succès !</center>\n";
  43.     echo "</td></tr>\n";
  44.      mysql_close($mysql_link);
  45.    }
  46.  ?>
  47.  <tr>
  48.   <td width=15% align='right'>
  49.    <form name='eventform' method='POST' action='doevent.php'>
  50.    <br>Titre :
  51.   </td>
  52.   <td width=85%><br><input type='text' name='titre' size='80' class='form-zonetexte'></td>
  53.  </tr>
  54.  <tr>
  55.   <td width=15% align='right'><br>Contenu :</td>
  56.   <td width=85%><br><textarea name='event' cols='60' wrap='virtual' rows='5' class='form-zonetexte'></textarea></td>
  57.  </tr>
  58.  <tr>
  59.   <td width=15% align='right'><br>Date evt : </td>
  60.   <td width=85%><br><input type='text' name='dateevt' size='10' class='form-zonetexte'> (format jj/mm/aaaa)</td>
  61.  </tr>
  62.  <tr>
  63.   <td colspan='2' align='center'><input type='submit' value='Valider' class='form-valider'><br>
  64.    </form>
  65. <!-- Fin du Formulaire d'ajout d'evenements -->
  66.   </td>
  67.  </tr>
  68. </table>
  69. </center>
  70. </body>
  71. </html>


 
Et le fichier doevent.php, qui fait la requête d'insertion dans la BDD :  

Code :
  1. <?php
  2. // Insertion d'un évènement dans l'agenda
  3. // Aucune mise en cache
  4. header("Cache-Control: no-store, no-cache, must-revalidate" );
  5. // Fichier d'accès à la base de données
  6. require ("../confbdd.php" );
  7. // Récupération des variables page précédente
  8. $titreev=$_POST['titre'];
  9. $event=$_POST['event'];
  10. $dateevt=$_POST['dateevt'];
  11. // Formatage des dates
  12. $dateinsert=date("dmY" );
  13. $evjour = subStr($dateevt,0,2);
  14. $evmois = subStr($dateevt,3,2);
  15. $evannee = subStr($dateevt,6,4);
  16. $dateevt = $evannee.'-'.$evmois.'-'.$evjour;
  17. // Lancement du lien mysql
  18. $mysql_link = mysql_connect($host_mysql, $login_mysql, $password_mysql);
  19. if($mysql_link)
  20. {
  21. // Requête d'insertion
  22. $insertevt = requete("INSERT INTO events VALUES ('','$titreev','$event','$dateinsert','$dateevt')" );
  23. mysql_close($mysql_link);
  24. }
  25. else echo "Erreur de connexion à la base de données.";
  26. // Redirection vers les evenements en cours
  27. header("Location: eventencours.php" );
  28. ?>


 
Le problème est que l'insertion ne marche qu'une fois sur 2... Après validation, ca me fait parfois comme si tout marchait normalement, mais rien n'est inséré dans la Base. Alors que certaines fois, avec le même script, tout fonctionne.  
La transmission des variables avec POST marche bien dans tous les cas. Je l'ai testé en affichant le contenu des variables dans doevent.php, sans faire la redirection.
 
Auriez vous une idée d'ou ca peut venir ?


Message édité par r@phblues le 06-08-2004 à 09:57:10

---------------
Tibet libre !
mood
Publicité
Posté le 06-08-2004 à 09:55:44  profilanswer
 

n°816466
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-08-2004 à 10:08:20  profilanswer
 

Euhhhh... il ya  beaucoup de code que tu nous as mis pour rien et qui surcharche un peu la lecture ... de plus il n'y a pas tout ... elle est où la fonction qui fait ton query ? On peut la voir ?
 
Tu n'as aucun message d'erreur quand ça ne marche pas ? Rien du tout ? Tu as bien activé les erreur PHP ? (E_ALL)
 
Sinon as tu mis des lignes du genre :
 

Code :
  1. or die('Erreur : '.mysql_error())

n°816473
r@phblues
Globe-trotter biologique
Posté le 06-08-2004 à 10:17:33  profilanswer
 

Dj YeLL a écrit :

Euhhhh... il ya  beaucoup de code que tu nous as mis pour rien et qui surcharche un peu la lecture ... de plus il n'y a pas tout ... elle est où la fonction qui fait ton query ? On peut la voir ?
 
Tu n'as aucun message d'erreur quand ça ne marche pas ? Rien du tout ? Tu as bien activé les erreur PHP ? (E_ALL)
 
Sinon as tu mis des lignes du genre :
 

Code :
  1. or die('Erreur : '.mysql_error())



 
C'est vrai qu'il y a du code qui peut paraitre inutil mais j'ai posté tout le fichier de peur que le problème vienne d'un conflit avec des autres lignes de la page.
 
Pour les erreurs : J'ai ca :
error_reporting = E_ALL & ~E_NOTICE
 
Quand ca ne marche pas, auncun message d'erreur. Je n'ai pas mis de "or die". Je vais essayer.
 
Enfin, voila la fonction REQUETE :

Code :
  1. // fonction d'exection de requetes mysql
  2. function requete($sql)
  3. {
  4. GLOBAL $base_mysql;
  5. $execut = mysql_db_query($base_mysql, $sql);
  6. return($execut);
  7. }


Message édité par r@phblues le 06-08-2004 à 10:18:20

---------------
Tibet libre !
n°816495
r@phblues
Globe-trotter biologique
Posté le 06-08-2004 à 10:38:38  profilanswer
 

Bon je comprend pas tout... il marche nickel depuis 5 mns. J'ai testé avec ie/ mozilla, fermé les browser, réouvert. tout marche ok, alors que tout a l'heure ca n'insérait rien...
Sinon j'ai ajouté un "die", a la fonction REQUETE :  
 
// fonction d'exection de requetes mysql

Code :
  1. function requete($sql)
  2. {
  3. GLOBAL $base_mysql;
  4. $execut = mysql_db_query($base_mysql, $sql) or die('Erreur : '.mysql_error());
  5. return($execut);
  6. }


 
et à la connexion à la base d'admin.php
 

Code :
  1. // Lancement du lien mysql
  2. $mysql_link = mysql_connect($host_mysql, $login_mysql, $password_mysql) or die('Erreur : '.mysql_error());


---------------
Tibet libre !
n°816500
serty2
Posté le 06-08-2004 à 10:41:56  profilanswer
 

Pour moi , apres survolage du code et lecture des parties sgbd , tout parait normal, tu devrais pas avoir de pbs....
si t as une erreur ki s'affiche avec le or die, poste la :p :p
 
ps : tu es sur que c'est pas le serveur de bdd qui etait en timeout au moment des pbs ?
 
 
 
l'informatique est decidement bien une science aléatoire :p

n°816510
r@phblues
Globe-trotter biologique
Posté le 06-08-2004 à 10:50:48  profilanswer
 

oui... a suivre.
J'ai l'impression que le problème se pose souvent lors de la première connexion le matin, ou alors après un long temps d'inactivité.
C'est peut etre qu'une impression qu'il faudrait confirmer.
Peut etre que le problème n'est pas au niveau du code mais plutot de MySQL en lui même...


---------------
Tibet libre !
n°817403
papachico
Posté le 08-08-2004 à 09:41:15  profilanswer
 

C'est ridicule de passer par une fonction pour justement en effectué une., Ca fait Double emploie.
en plus dans les fonction faut refaire la connexion avec la base.
 
oublie cette fonction qui ne sert a rien.
 
ESSAYE CA
 
// Lancement du lien mysql  
 
//ouverture de la connexion avec la base de donnée
$mysql_link = mysql_connect($host_mysql, $login_mysql, $password_mysql);  
 
if($mysql_link){  
  // Requête d'insertion  
  $insertevt = mysql_db_query($base_mysql, "INSERT INTO events VALUES ('','$titreev','$event','$dateinsert','$dateevt')", $mysql_link);  
 
     mysql_close($mysql_link);  
 }else echo "Erreur de connexion à la base de données.";  
     
 
Voila ca devrait marcher.
 
http://www.


Message édité par papachico le 08-08-2004 à 17:50:25
n°817466
T509
$job-&gt;GetJob(now)
Posté le 08-08-2004 à 12:49:55  profilanswer
 

Ton lien à la fin est inutuile !


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°817483
papachico
Posté le 08-08-2004 à 13:51:20  profilanswer
 

t remarque son inutile !!

n°817495
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-08-2004 à 14:31:04  profilanswer
 

papachico> TU es inutile...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] - Problème d'insertion dans BDD

 

Sujets relatifs
[MySQL] Requete utilisant 2 tables, ca marche pasHELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!
excel-mysql[Java] Problème de taille mémoire avec un JTree
problème avec for_eachexcel mysql
Problème en visual basic - TabOrder --> Résolu[HELP] Estimation et conseil sur un projet PHP...
cellule cliquable dont l url est un champs d'une BD mysql..Problème d'accès ODBC (ACCES+ORACLE)
Plus de sujets relatifs à : [PHP/MySQL] - Problème d'insertion dans BDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR