Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2007, 10h33   #1
Membre du Club
 
Inscription : octobre 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 112
Points : 65
Points : 65
Envoyer un message via Skype™ à lebreton22
Par défaut plus de date

Bonjour
J'ai créé un formaulaire avec un champ date. celui-ci est alimenté par un calendrier qui affiche par exemple 23/02/2007
Après l'enregistrement, je retrouve dans ma table 0000-00-00
normal direz-vous, on passe du format fr au format us
Voilà le code que j'ai :
Code :
1
2
3
4
5
IF ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO inscriptions (DATE_INSCRIPTION, JOUEUR1, JOUEUR2) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['date'], "date"),
                       GetSQLValueString($_POST['licence1'], "text"),
                       GetSQLValueString($_POST['licence2'], "text"));
Est-ce que quelqu'un aurait une idée pour que cela fonctionne ?
Merci
lebreton22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2007, 21h57   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
à quoi ressemblent tes $_POST['date'] ?

qu'est-ce qu'il y a dans ton GetSQLValueString ?
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2007, 09h26   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 112
Points : 65
Points : 65
Envoyer un message via Skype™ à lebreton22
Bonjour
Je te joins le code complet de la page construire avec dreamweaver
Code :
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<?php require_once('Connections/perso.php'); ?>
<?php
IF (!function_exists("GetSQLValueString")) {
FUNCTION GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  RETURN $theValue;
}
}
 
$editFormAction = $_SERVER['PHP_SELF'];
IF (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
 
IF ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO inscriptions (DATE_INSCRIPTION, JOUEUR1, JOUEUR2) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['date'], "date"),
                       GetSQLValueString($_POST['licence1'], "text"),
                       GetSQLValueString($_POST['licence2'], "text"));
 
  mysql_select_db($database_perso, $perso);
  $Result1 = mysql_query($insertSQL, $perso) OR die(mysql_error());
 
  $insertGoTo = "etat_inscriptions.php";
  IF (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
 
mysql_select_db($database_perso, $perso);
$query_rsjoueurs = "SELECT CONCAT_WS(' ',NOM, PRENOM) as NOM_PRENOM, IV_CLASSEMENT,LICENCE FROM joueurs";
$rsjoueurs = mysql_query($query_rsjoueurs, $perso) OR die(mysql_error());
$row_rsjoueurs = mysql_fetch_assoc($rsjoueurs);
$totalRows_rsjoueurs = mysql_num_rows($rsjoueurs);
 
mysql_select_db($database_perso, $perso);
$query_rsincsription = "SELECT * FROM inscriptions";
$rsincsription = mysql_query($query_rsincsription, $perso) OR die(mysql_error());
$row_rsincsription = mysql_fetch_assoc($rsincsription);
$totalRows_rsincsription = mysql_num_rows($rsincsription);
?><html>
<head>
 
<style>
input	{border:1px blue solid;width:80px;}
body	{font-family:Tahoma;font-size:12px}
td		{font-family:Tahoma;font-size:12px}
.Style2 {color: #0000FF}
</style>
 
<script LANGUAGE="javascript">
moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
JourM=["Di","Lu","Ma","Me","Je","Ve","Sa"];
 
var fermable_microcal=true;
var select_old= NULL;
 
var startWeek=0;//debut de la semaine 0=dim,1=lun,...
var jourPause={0:true,6:true}; //jour de pause de la semaine
var jourFeriee={"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"};
 
//structure la date 
FUNCTION strucDate(dateX) 
{RETURN {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};}
 
 
var dateS= strucDate(new Date());//date Selectionné
var dnow= strucDate(new Date());//date actuelle
 
 
//retourne le ième jour du 1er du mois
FUNCTION premJourMois(mois,annee) 
{RETURN (new Date(annee,mois-1,1).getDay());}
//retourne le jour max du mois
FUNCTION JmaxMois(mois,annee) 
{RETURN (new Date(annee,mois,0).getDate());}
 
 
/* Test une date si elle est correct...spécial killer*/
FUNCTION testTypeDate(dateEntree)
{
tst=false;
try
{rc=dateEntree.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
} catch(e) {}
RETURN tst;
}
 
//selection de la zone avec la souris
FUNCTION choix(koi,code)
{
IF (code) 
{  select_old= koi.style.background;
   koi.style.background ='#c0c0FF';
}
else 
{
koi.style.background =select_old;
}
}
 
 
FUNCTION testTravail(oldX,xx,jj,mm,aa)
{
styleX="font-family:Tahoma;font-size:10px;text-align:center;";
styleX+=(oldX)?"":"color:#e0e0e0;";
styleX+="cursor:hand;border-right:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;";
IF (jourPause[xx]||jourFeriee[jj+"-"+mm]!=NULL) styleX+="background:#f0f0f0;";
IF (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) styleX+="border:2px red solid;";
RETURN styleX;
}
 
//test si année bissextile
FUNCTION bissextile(annee) {
RETURN (annee%4==0 && annee %100!=0 || annee%400==0);
}
 
//Retourne le nombre de jour depuis le 1er janvier (num de semaine)
FUNCTION nbJAnnee(dateX){
var nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
j=dateX.jour ; m=dateX.mois ; a=dateX.annee;
nb=nb_mois[m]+j-1 ;
IF (bissextile(a) && m>2) nb++;
RETURN nb;
}
 
//affiche le calendrier
FUNCTION view_microcal(actif,ki,source,mxS,axS)
{
IF (actif)
{
//decalage du mois su ON clique sur -/+
IF (mxS!=-1) 
{
clearTimeout(cc);
ki.focus();
fermable_microcal=true;
dateS.mois=mxS;
dateS.annee=axS;
IF (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
IF (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
}
//init
Dstart=(premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
jmaxi=JmaxMois(dateS.mois,dateS.annee);
jmaxiAvant=JmaxMois((dateS.mois-1),dateS.annee);
//si ON veux ajouter le numero de la semaine ...
//idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;
 
ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
 
//generation du tableau
//--entête
htm="<table><tr style='font-size:10px;font-family:Tahoma;text-align:center;'>";
htm+="<td style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois-1)+","+dateS.annee+");\">-</td>";
htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
htm+="<td  style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois+1)+","+dateS.annee+")\">+</td></tr>";
//--corps
htm+="<tr>";
//affichage des jours DLMMJVS
FOR (x=0;x<7;x++) 
htm+="<td  style='font-size:10px;font-family:Tahoma;'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
htm+="</tr>"
 
 
//------------------------
FOR (y=0;y<=ymaxi;y++)
{
htm+="<tr>";
FOR (x=0;x<7;x++)
{
idxP=y*7+x-Dstart+1;   //numero du jour
aa=dateS.annee;
xx=(x+startWeek)%7;
//jour du mois précedent
IF (idxP<=0)
{
jj=idxP+jmaxiAvant;mm=dateS.mois-1;
IF (mm==0)
{mm=12;aa--;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";
}
else IF (idxP>jmaxi) //jour du mois suivant
{
jj=idxP-jmaxi;mm=dateS.mois+1;
IF (mm==13)
{mm=1;aa++;}
 
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";}
else //jour du mois en cours
{
jj=idxP;mm=dateS.mois;
htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";}
}
htm+="</tr>"
}//-------------------------
htm+="</table>"
//affiche le tableau
source.innerHTML=htm;
source.style.visibility="";
} else
{
//ferme le calendrier
IF (fermable_microcal) 
	cc=setTimeout(source.id+".style.visibility='hidden'",500);
}
}
 
</script>
</head>
<body style="margin:0px">
<center>
<h2 align="center"><span class="Style2">Inscriptions aux tournois par paire</span></h2>
<p>&nbsp;</p>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <p align="left">&nbsp;</p>
  <TABLE width="78%">
    <tr>
      <td width="50%">&nbsp;</td>
      <td width="25%">&nbsp;</td>
      <td width="25%">&nbsp;</td>
    </tr>
    <tr>
      <td>Choisissez la date
        :      
                    <TABLE align="left" cellpadding="0" cellspacing="0">
            <tr>
              <td ><input name="date" type="text" id="dateDebut" onFocus="view_microcal(true,dateDebut,microcal,-1,0);" onBlur="view_microcal(false,dateDebut,microcal,-1,0);" onKeyUp="this.style.color=testTypeDate(this.value)?'black':'red'" maxlength="10"></td>
            </tr>
            <tr>
              <td height="2"><div id="microcal" style="visibility:hidden;position:absolute;border:2px red dashed;background:#ffffff;"></div></td>
            </tr>
      </table></td>
      <td>joueur 1:
        <SELECT name="licence1" id="licence1">
        <?php
do {  
?><OPTION value="<?php echo $row_rsjoueurs['NOM_PRENOM']?>"<?php IF (!(strcmp($row_rsjoueurs['NOM_PRENOM'], $row_rsjoueurs['NOM_PRENOM']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rsjoueurs['NOM_PRENOM']?></option><?php
} while ($row_rsjoueurs = mysql_fetch_assoc($rsjoueurs));
  $rows = mysql_num_rows($rsjoueurs);
  IF($rows > 0) {
      mysql_data_seek($rsjoueurs, 0);
	  $row_rsjoueurs = mysql_fetch_assoc($rsjoueurs);
  }
?>
        </select>      </td>
      <td> joueur 2 :
        <SELECT name="licence2" id="licence2">
          <?php
do {  
?>
          <OPTION value="<?php echo $row_rsjoueurs['NOM_PRENOM']?>"<?php IF (!(strcmp($row_rsjoueurs['NOM_PRENOM'], $row_rsjoueurs['NOM_PRENOM']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rsjoueurs['NOM_PRENOM']?></option>
<?php
} while ($row_rsjoueurs = mysql_fetch_assoc($rsjoueurs));
  $rows = mysql_num_rows($rsjoueurs);
  IF($rows > 0) {
      mysql_data_seek($rsjoueurs, 0);
	  $row_rsjoueurs = mysql_fetch_assoc($rsjoueurs);
  }
?>
        </select>      </td>
    </tr>
    <tr>
      <td colspan="3"><div align="center">
          <input name="inscrire" type="submit" id="inscrire" value="S'inscrire" />
      </div></td>
    </tr>
  </table>
  <p align="center">&nbsp;</p>
    <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
<center>
</center>
</body>
</html>
<?php
mysql_free_result($rsjoueurs);
 
mysql_free_result($rsincsription);
?>
ps : pour récupérer les dates de MYsql, j'utilise DATE_FORMAT, donc pas de pb de ce côté. L'ennui, c'est pour les enregistrer correctement.
lebreton22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2007, 10h38   #4
Membre du Club
 
Inscription : octobre 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 112
Points : 65
Points : 65
Envoyer un message via Skype™ à lebreton22
J'ai presque résolu le pb de la manière suivante :
1 dans le formulaire j'ai mis le type date au lieu de text
Code :
1
2
 <td ><input name="date" type="date" id="dateDebut" onFocus="view_microcal(true,dateDebut,microcal,-1,0);" onBlur="view_microcal(false,dateDebut,microcal,-1,0);" onKeyUp="this.style.color=testTypeDate(this.value)?'black':'red'" maxlength="10"></td>
            </tr>
2 j'ai transformé la chaîne de la manière suivante :
Code :
1
2
3
    case "date":
      $theValue = ($theValue != "") ? "'" . substr($theValue,7,4)."/".substr($theValue,4,2)."/".substr($theValue,1,2) . "'" : "NULL";
      break;
sauf que ça donne 0007-02-25
au lieu de 2007, pourquoi ?
3 Donc mon très mauvais bricolage final apporte la réponse
Code :
1
2
3
    case "date":
      $theValue = ($theValue != "") ? "'" . "2".substr($theValue,7,3)."/".substr($theValue,4,2)."/".substr($theValue,1,2) . "'" : "NULL";
      break;
mais il doit y avoir un problème quelque part !
lebreton22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2007, 20h45   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 112
Points : 65
Points : 65
Envoyer un message via Skype™ à lebreton22
En y regardant de plus près la chaîne de date est complètement fausse.
Et pourtant, la variable $_POST['date'] est correcte
Le problème a donc lieu à l'enregistrement
Alors, si quelqu'un a une petite idée, je l'en remercie
lebreton22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 06h29   #6
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
1/ <input type=date> n'existe pas en HTML

2/ je pense que tu oublies qu'en PHP les chaînes commencent à zéro et non à un... mais comme je ne sais pas ce que tes utilisateurs sont censés saisir là-dedans, c'est dur de te dire exactement ou est le pb

3/ le format des dates en MySQL est '2007-02-25' et non '2007/02/25'. Par ailleurs, d'après tes explications, ça devrait donner 20007 et non 2007...
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 18h31   #7
Membre du Club
 
Inscription : octobre 2005
Messages : 112
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 112
Points : 65
Points : 65
Envoyer un message via Skype™ à lebreton22
en fait, rien n'est saisi par les utilisateurs : lorsque la souris est sur le champ de formulaire, il s'ouvre un calendrier, pas de problème de ce côté.
Pas de problème non plus du retour de mysql vers une page d'affichage
La difficulté est bien la suivante :
j'ai au départ une date 12/02/2007 et dans la bdd 0000-00-00
lebreton22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 22h49   #8
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Citation:
j'ai au départ une date 12/02/2007
donc, soit tu traites en PHP :
Code PHP :
1
2
3
4
5
6
7
 
$theValue = ($theValue != "") ? 
    "'" . 
    substr($theValue,6,4)."/".
    substr($theValue,3,2)."/".
    substr($theValue,0,2) . "'" 
  : "NULL";

Soit tu traites en SQL (à partir de la 4.1.1) :

Code SQL :
STR_TO_DATE('$_POST[date]', '%d/%m/%Y')
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web