Probleme Script calendrié avec date de debut et date de fin. [Résolu]

neotux56 - 19 déc. 2012 à 16:44 - Dernière réponse : cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention
- 20 févr. 2013 à 19:50
Bonjour à tous,

Après des heures et des heures de recherche, je viens vous demander de l'aide car la je sèche...
Voici mon problème:

Déjà, je récupère le boulot d'un autre donc pas simple.
Mon souci est que quand je rentre une date de début et de fin dans une fiche client, cela me génère bien une liste de tous les jours qui ce trouve entre ses deux dates mais j'ai un doublon de date aléatoire. Ce qui génère un autre problème que tous les paramètres dédié à une date ne son pas prise en compte après ce doublon.

Pas facile d’être clair désolé...

Voici le code :







Afficher la suite 

17 réponses

Répondre au sujet
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 20 déc. 2012 à 00:58
+3
Utile
J'espère que tu n'utilise pas ce code en production !
Il y a un problème de sécurité pour la db.
De plus, c'est quoi ce code HTML, ça existe encore ?

Mais pour répondre à ta question, Je vois un seul paramètre entré (SQL) pour la date et il faut regarder dans la db si tu n'as pas des enregistrements en doublons.
Mais comme ça, c'est difficile de t’aidée.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
+3
Utile
Merci déjà de te pencher sur mon problème

Pour le code html, j'en suis pas l'auteur, mon taf (bénévole car c'est pour un ami qui est du coup dans la me..e) c'est de corriger un certain nombre d'erreurs.
TU vois ou la faille de sécurité pour la db?

Et sinon j'ai pas encore les accès de la db pour regarder si j'ai des doublons dessus. Mais je vais les demander pour regarder.

Merci encore.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
+3
Utile
Up

Je reviens vers vous en espérant trouver mon sauveur.
J'ai maintenant accès à la DB.
J'ai réussi a cibler un peu plus le problème:
Le doublon ce fait que pour le moi octobre et toujours a la même date en fonction de l'année ( La date diminue de un jours tout les ans)









Et la du coté de la DB:

Pour une date rentré en admin entre le 20/10/2012 et le 31/10/12



Merci d'avance

Donc du coté de la DB, j'ai pas le doublons mais il me manque le 31/10/2012...

Si quelqu'un pourrai m'expliquer cette ligne svp car l'histoire du +1 -1 me parai louche... :

 $nbjours = (round((strtotime($date_fin) - strtotime($date_debut))/(60*60*24)-1))+1;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 24 janv. 2013 à 11:36
+3
Utile
Salut,

Imaginons que :

<?php 
$date_debut = '2012/12/06';
$date_fin = '2012/12/12';
$nbjours = (round((strtotime($date_fin) - strtotime($date_debut))/(60*60*24)-1))+1;
echo $nbjours;
?>


- La fonction round arrondit un nombre à virgule flottante, voir la doc.
- La fonction strtotime() essaye de lire une date au format anglais fournie par le paramètre time, voir la doc.
- 60*60*24 est égal à 24 heurs.
- Donc, $date_fin moins $date_debut arrondit, diviser par 24h est égal à 6.
- Le moins 1 et plus 1 ne sert à rien, tu peux les retirer.

$nbjours = (round((strtotime($date_fin) - strtotime($date_debut))/(60*60*24)));


stéph
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 24 janv. 2013 à 12:10
+3
Utile
Salut, j'ai oublié de t'expliquer quelques détails sur les dates.
Tu peux également ajouter les heures dans les deux variables.

Imaginons les dates comme ceci :

<?php 
$date_debut = '2012/12/06 00:00:00';
$date_fin = '2012/12/12 23:59:59';
?>


Le résultat sera 7 jours.

stéph
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
+3
Utile
Merci stay

Et pour mon problème de doublon, tu penses que cela viendrai d’où ?
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 25 janv. 2013 à 03:04
+3
Utile
Salut, peux-tu sous cette ligne de code :

$nbretour3=mysql_num_rows($resultat3);


insérer ceci :

echo '';
print_r($nbretour3);
echo '

';


et m'écrire ce qu'il en retourne.
Tu verras un array écrit en rouge.

stéph
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
+3
Utile
Voila:

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
+3
Utile
C'est pas ce que tu attendais Stay ? Car j'ai eu que cela en rouge.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 29 janv. 2013 à 08:59
+3
Utile
Salut, non désolé, j'ai fait une erreur.
Je ne travail plus avec des boucle while depuis longtemps.
Au dessus de ta boucle while, écrit ceci.

echo '';
$data_resultat3 = mysql_fetch_array($resultat3);
print_r($nbretour3);
echo '

';

while ($data_resultat3 = mysql_fetch_array($resultat3)){
...


Le but ici, c'est de vérifier si dans l'array retourné, il n'y a pas de doublon en vérifiant les id de chaque enregistrement.

stéph
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
+3
Utile
Alors voici en image avant ton code :



et avec ton code :



J'ai vérifié les autres artistes ou il y a pas de doublon et j'ai que des "1".
Mais quand j'ai un doublon, j'ai des "1" jusqu’à la date doublée et après le doublon, les dates sont bien affichées.

J’espère que cela va t'aider.

Merci encore Steph.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 30 janv. 2013 à 10:38
+3
Utile
Salut, la difficulté pour moi ici c'est que depuis plusieurs années, je code qu'avec des Framework.

Mes requests ce fond à-peu-près comme ceci :

<?php
$t = new self;
$select = $t->select();
$select->where("ma_table.id = :id");
$select->bind(array(':id' => $id));
$o_ma_table = $t->fetchAll($select);
if (isset($o_ma_table))
    $a_ma_table = (array) $o_ma_table->toArray();


Donc, par la suite pour déboguer, j'affiche le contenu comme ceci :

<?php
print_r($a_ma_table);


L'objectif ici, c'est d'afficher avec le print_r, ce genre de contenu :

Array
(
    [0] => Array
(
    (
[id] => 1
[language] => fr
[name] => Toto
    )
)
    [1] => Array
(
    (
[id] => 2
[language] => fr
[name] => Einstein
    )
)
)


Comme ceci, il est possible de vérifier le contenu de la table avant de la traiter dans l'HTML.
Mais avec la méthode que tu utilises, méthode archaïque pour moi, c'est plus compliqué.

La solution peut-être, c'est dans l'HTML, tu affiches l'id de l'enregistrement à coté de la date et voir quel est le doublon.
Exemple :
<?php
$data_resultat3['id'].' le '.$date_affiche_final.' :


stéph
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_stay
+3
Utile
Salut Stéph,

J'ai fait ta manip.
Donc j'ai bien l'ID qui est affiché à coté de la date mais arrivé au doublon, plus rien :
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
+3
Utile
Toujours pas ce que tu attendais Stéph?
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
+3
Utile
UP Please personne qui aime les défis ;)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
+3
Utile
Up , Please
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neotux56
cs_stay 496 Messages postés jeudi 7 juillet 2005Date d'inscription 24 mai 2017 Dernière intervention - 20 févr. 2013 à 19:50
0
Utile
Désoler de ne pas être revenu vers toi plustôt mais code-source à rencontré des problèmes avec les alertes e-mails et j'avais oublié l'existence du problème que tu rencontres.
Je vois que la table n'est très optimisé car tu n'as pas de primary key.

Cela va être difficile sans point de repère pour déboguer.

stéph
Commenter la réponse de cs_stay

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.