Hello,

Je souhaites faire une boucle d'enregistrement dans ma BDD avec en variable un changement de date (hormis l'id bien sur qui lui s'incrémente tout seul).

L'histoire est la suivante, je demande la date de début des vacances ainsi que la date de fin, je veux ensuite enregistrer en BBD autant de ligne que de jours de congés.

Exemple : en congés du 21 au 23 avril, 23 - 21 = 2 auquel je rajoute 1. Facile. Je souhaites donc enregistrer en BDD 3 lignes avec comme $date_jour_vacances 21.04.2010, 22.04.2010 et 23.04.2010. Le reste restant plus ou moins vide.

Ma question est la suivante : comment faire 3 INSERT INTO de suite en incrémentant $date_jour_vacances de 1 à chaque tour ?

Le code d'enregistrement unique :

mysql_query("INSERT INTO en_vacances VALUES('', '$date_debut_2', '$date_fin_2', '$date', '$date_jour_vacances', '$matin_1', '$matin_2', '$matin_3', '$matin_4', '$matin_5', '$apres_midi_1', '$apres_midi_2', '$apres_midi_3', '$apres_midi_4', '$apres_midi_5')") or die(mysql_error()); echo "Enregistrement OK";


Merci,
David
Salut,

ben tu fais une boucle for en PHP par exemple. Smiley rolleyes

tu convertis tes dates en format exploitable,ici des jours.

comment? ça depend du format initial.

for ($i=$jour_date_debut_2,$i<jour_$date_fin_2+1;$i++)
{
// tes insert a la bonne date. avec tes etats du matin et de l'apres-midi
}


n'espere pas faire la même chose en une seule requete SQL.

en sql serveur tu peux ecrire un curseur qui va faire plus ou moins la même chose.

apparement http://dev.mysql.com/doc/refman/5.0/fr/cursors.html y a un equivalent mysql.

tes champs me semblent redondants en information. mais bon j'imagine que c'est pour te faciliter la programmation.

Pascal
Modifié par CPascal (22 Apr 2010 - 09:15)
Hello

Merci pour ton aide. Je n'ai pas encore commencé la boucle parce que la date me pose un pb. Une soustraction dans le même mois est simple, par contre une soustraction du 3 juin au 24 mai donne un résultat bizarre. Je cherche un moyen de transformer une date en nombre de jour, aujourd'hui nous sommes le 111eme jour de l'année, mais comment trouver le nombre du 3 juin ?

idate, getdate etc... rien ne semble convenir Smiley decu

Les dates sont au format 2010-04-07 ou au format 07.04.2010 via un explode.

Peut etre que les champs sont redondant, généralement je fais le ménage ensuite. Je débute Smiley cligne

David
salut

tu fais un

$dateinitial=  mktime (3,0,0,$mois,$jour,$an);
$jourinitial = date("m",$dateinitial);



et tu fais pour $i jour de plus

$date = mktime (3,0,0,$mois,$jour+$i,$an); 
$jour = date("m",$date); 


faire la différence en timestamp c'est une solution mais laisser la fonction mktime gérer toute seule c'est pas plus mal.

de plus j'ai mis des dates à 3H. c'est exprès. ne pas oublier que le changement d'heure été/hiver ce fait à 3H

ça évite un bug en novembre et un mars.
Modifié par CPascal (24 Apr 2010 - 08:56)
Hello

Merci pour votre aide Smiley biggrin

J'ai transformer les dates en timestamp, fait les calculs et retransformer au format date avant d'enregistrer en BDD. La lecture de la BDD est plus simple dans ce format, pour un humain Smiley langue

J'ai fais le ménage dans les champs, effectivement yavait du déchet.

Par contre j'ai un soucis avec mon fichier de modification. J'ai un fichier de création (qui est maintenant terminé), le fichier de modification affiche les champs et un bouton Envoyer doit envoyer la valeur des champs en BDD. Le bouton fonctionne bien mais à l'ouverture du fichier l'enregistrement se fait, du coup les champs en BDD sont vidés (l'enregistrement se fait avant la récupération des valeurs). Suis certain que c'est un truc tout bête mais je ne vois rien qui cloche Smiley fache

David