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

Signaler
-
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
-
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 :







17 réponses

Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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.
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.
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;
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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
Merci stay

Et pour mon problème de doublon, tu penses que cela viendrai d’où ?
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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
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
C'est pas ce que tu attendais Stay ? Car j'ai eu que cela en rouge.
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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
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.
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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
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 :
Toujours pas ce que tu attendais Stéph?
UP Please personne qui aime les défis ;)
Up , Please
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
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