IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème d'insertion avec formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Problème d'insertion avec formulaire
    Bonjour,

    j'ai un formulaire dans lequel j'ai les champs : classe, sous-famille, date de début, date de fin et description. J'ai bien créé ma requête pour alimenter ma table intervention, mais j'ai un problème avec les dates qui sont au format string et que je dois convertir en type timestamp avant des les enregistrer dans ma base.
    Soit j'en ai une sur deux qui passe, soit j'en ai aucune donc je fais un test sur mes variables et sur ma requête pour voir ce qu'elles contiennent et elles contiennent bien ce que j'ai choisi comme date à partir d'une fonction calendrier, par contre dans ma requête mes dates converties ne passent pas.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<title>ajout intervention</title>
    		<link rel="stylesheet" type="text/css" href="epoch_styles.css" /> <!--Epoch's styles-->
    		<script type="text/javascript" src="epoch_classes.js"></script>
    		<script type="text/javascript">
     
    	var dp_cal     
    	window.onload = function () {
    	dp_cal  = new Epoch('epoch_popup','popup',document.getElementById('popup_container'));
    	dp_cal  = new Epoch('epoch_popup','popup',document.getElementById('popup_container1'));
    	};
     
     
    		</script>
     
    	</head>
     
     
    <?php 
     
    if (isset($_GET['id'])){
    $id_projet = $_GET['id'];}
     
     
     session_start();
     
     // connexion au serveur
     $db = mysql_connect ('localhost', 'root', '');
     mysql_select_db('planing_projet', $db);
     
     $query2 = "SELECT id_intervenant FROM intervenant WHERE login_intervenant = '".$_SESSION['login']."'";
     $result2 = mysql_query($query2, $db);
     $row2 = mysql_fetch_array($result2);
     $id_intervenant = $row2['id_intervenant'];
     
     
    // condition en cas d'erreur
    if (mysqli_connect_errno()) { 
     	echo 'erreur : vous ne pouvez pas vous connecter';	 
    	exit;
    } //if (mysqli_connect_errno()) { 
     
    if (isset($_POST['valider']) && $_POST['valider']== 'Valider')
    {
     
      // verfication des champs vides
     if(isset($_POST['classe'])  && isset($_POST['sous_famille']) && isset($_POST['date_debut']) && isset($_POST['date_fin']) && isset($_POST['description']))
     
     {
     
     
      // création des variables	
     $classe=$_POST['classe']; 
     $ss_famille=$_POST['sous_famille']; 
     $ddebut=strtotime($_POST['date_debut']);
     $dfin=strtotime($_POST['date_fin']);
     $description=$_POST['description'];	
     
     
    echo 'aa'.$dfin;
    echo 'bb'.$_POST['date_fin'];
     
     
      // création de la requête à envoyer à la base de données
      $query = "INSERT INTO `intervention` (`id_intervention`, `date_debut`, `date_fin` , `id_projet`, `id_intervenant`, `id_classe`, `id_ss_famille`, `description_interv`)	VALUES ('', '$ddebut', '$dfin', '$id_projet', '$id_intervenant', '$classe', '$ss_famille', '$description')";
     
      echo $query;
     
      $result = mysql_query($query, $db);
     
      	if ($result) {
       		echo 'Votre intervention a bien &eacute;t&eacute; cr&eacute;&eacute;e<br /><br />';
      	}else{
      		echo 'Votre intervention n\'a pas pu &ecirc;tre cr&eacute;&eacute;e';
      	}
     }else
     {
     	echo 'Vous devez remplir tous les champs<br /><br />';
     }
     
    }
     
    ?>
     
     
    	<body>
     
    		Ajouter une intervention au projet
     
    		<form method="POST"  name="ajout" action="ajouterintervention.php?id=<?php echo $id_projet; ?>">
    			<table>
     
     
    				<tr>
    					<td> Nom de l'intervenant :</td>
    					<td> <?php echo $_SESSION['login'];?> </td>
    				</tr>
     
    				<tr>
    					<td> Classe :</td>
    					<td> 
    <?php 
     
    //création des listes déroulantes					
    $query = mysql_query("SELECT * FROM classe;") or die (mysql_error());
    if ($query) {
     
        echo '<select name="classe">';
        while ($array = mysql_fetch_array($query)) {
            if ($array["id_classe"]) {
                echo '<option value="' . $array['id_classe'] . '" selected>' . $array['libelle_classe'] . '</option>';
           } else {
                echo '<option value="'.$array['id_classe'] . '">' . $array['libelle_classe'] . '</option>';
           } 
        }
        echo '</select>';
     
    }
     
    ?>
    					</td>
    				</tr>
     
    				<tr>
    					<td> Sous-famille :</td>
     
    									<td> 
    <?php 
     
    $query = mysql_query("SELECT * FROM sous_famille;") or die (mysql_error());
    if ($query) {
     
        echo '<select name="sous_famille">';
        while ($array = mysql_fetch_array($query)) {
            if ($array["id_ss_famille"]) {
                echo '<option value="' . $array['id_ss_famille'] . '" selected>' . $array['libelle_ss_famille'] . '</option>';
            } else {
                echo '<option value="'.$array['id_ss_famille'] . '">' . $array['libelle_ss_famille'] . '</option>';
            }
        }
        echo '</select>';
       ;
     
    }
    ?>
     
    					</td>
    				</tr>
     
    				<tr>
    					<td> Date de d&eacute;but :</td>
    					<td> <input type= "text" name="date_debut" id="popup_container" width= 250px></td>
     
     
    				</tr>
     
    				<tr>
    					<td> Date de fin :</td>
    					<td> <input type= "text" name="date_fin" id="popup_container1" width= 250px></td></td>
     
     
    				</tr>
    				<tr>
     
    					<td>Description intervention :</td>
    					<td><textarea name="description">
     
    					</textarea></td>
     
    				</tr>
     
    			</table>
     
    			<input type= 'submit' value='Valider' name='valider'>
    			<input type= 'reset' value='Annuler'>
     
     
    		</form>
    	</body>
    </html>
    Je vous remercie par avance de votre aide.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Quel est le type de date de début et date de fin dans ta table : Time ou Date ? Si c'est Time, ça devrait fonctionner. En revanche, si c'est Date...

    Un conseil au niveau de l'exécution de la requête : tu peux utiliser mysql_error pour récupérer les erreurs en cas d'echec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = mysql_query($query, $db);
     
      	if ($result) {
       		echo 'Votre intervention a bien &eacute;t&eacute; cr&eacute;&eacute;e<br /><br />';
      	}else{
      		echo 'Votre intervention n\'a pas pu &ecirc;tre cr&eacute;&eacute;e <br/>'.mysql_error();
      	}

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour Celira,

    Je vous remercie de vous attarder sur mon problème.
    Dans ma table, mes champs date sont de type integer. Mais je suis vraiment dubitatif, j'ai testé plusieurs fois mon code et je me suis aperçu que ma variable $dfin ne contenait jamais rien alors que mon $_POST['date_fin'] contenait bien la valeur choisie avec la fonction calendrier.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Date fin ne fonctionne pas et date début fonctionne ? en voilà une erreur paranormale
    Serait-il possible d'avoir un echo de tout ça ? (parce que bon, de là où je suis, je ne vois pas bien ce que ton écran affiche )

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    En fait là plus aucune date ne fonctionne...

    Voici ce que me renvoie les différents "echo" dans l'ordre ( echo 'aa'.$ddebut, echo 'bb'.$_POST[date_debut], echo 'aa'.$dfin, echo 'bb'.$_POST[date_fin] et echo $query) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aabb13/03/2008aabb21/03/2008INSERT INTO `intervention` (`id_intervention`, `date_debut`, `date_fin` , `id_projet`, `id_intervenant`, `id_classe`, `id_ss_famille`, `description_interv`) VALUES ('', '', '', '2', '1', '3', '3', 'hgjhgkjhkjhlkkjl')
    En voilà une avec une date qui passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aa1217887200bb08/05/2008aabb28/03/2008INSERT INTO `intervention` (`id_intervention`, `date_debut`, `date_fin` , `id_projet`, `id_intervenant`, `id_classe`, `id_ss_famille`, `description_interv`) VALUES ('', '1217887200', '', '2', '1', '4', '5', 'jhjjkllklmk')

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ah voilà, je soupçonnais quelque chose de ce genre...
    La raison pour laquelle ça ne fonctionne pas est que strtotime prend les date au format US, c'est-à-dire MM/DD/YYYY Or toi, tu utilises des dates au format francophone, c'est-à-dire DD/MM/YYYY
    Donc 08/05/2008 fonctionne parce que ton script comprend que tu parles du 5 aout (même si tu voulais parler du 8 mai) et 13/03/2008 ne fonctionne pas parce qu'il n'y a pas que mois n°13.

    : Comment convertir une date au format francophone vers le format anglais ?

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Je vous remercie pour votre explication et pour votre aide.
    Vous avez trouvé le problème si rapidement alors que cela fait deux jours que j'essaie de comprendre...

    Merci encore et bonne fin de journée

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Question d'habitude. Note que la prochaine fois que tu as un problème avec des dates, il faudra vérifier ce genre de choses...
    Et n'oublies pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  2. Problème d'insertion avec un champ Date/Heure ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/06/2006, 10h37
  3. Problème d'accent avec formulaire cgi
    Par vodevil dans le forum Web
    Réponses: 3
    Dernier message: 15/04/2006, 11h48
  4. Problème d'INSERT avec caractères accentués: mysql 5.0
    Par yizashi dans le forum Installation
    Réponses: 2
    Dernier message: 05/04/2006, 10h26
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo