Je trouve pas l'erreur sur mon script

cs_Akash Messages postés 4 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 28 novembre 2003 - 27 nov. 2003 à 18:55
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006 - 28 nov. 2003 à 17:22
Salut à tous j'espère que vous pourrez m'aider. Voila le problème :

Pour mon script de calendrier evenementiel j'ai besoin d'afficher des évènements par périodicité (du temps au temps).
Pour cela j'utilise la date en timestamps et je fait une requete de ce type :
select * from sortie where debut ='$DateConvertie' and fin >='$DateConvertie'

Ou
- $DateConvertie est la date du jour sélectionné convertie en timestamp.
- debut est le debut de l'évement (ex: 1069887600)
- et fin la fin de l'évènement (ex: 1073689200)

Normalement sa devrait me prendre en compte tout les resultats comprit entre 1069887600 et 1073689200, non ?

mon script :

<code>
/*
* Studio Hornet Script
* http://www.studiohornet.net
*
* Auteur : Hotin Fabrice (aka Akash^^)
* Email : admin@studiohornet.net
*
*/

class agenda
{
var $LeJour = '';
var $LeMois = '';
var $Annee = '';
var $PremierJour = '';
var $DernierJour = '';
var $Aujourdhui = '';
var $NombreJour = '';
var $Calendrier = '';
var $PremierJourSemaine = '';
var $TableauMois = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Aout','Septembre','Octobre','Novembre','Decembre');
var $TableauMoisE = array('January','February','March','April','May','June','July','August','September','October','November','December');

# ----------------------- CONFIGURATION ----------------------------------------
var $Script = 'index.php'; //Chemin d'accès vers ACE agenda.
var $CouleurWeekEnd = 'whitesmoke'; //Couleur des cellules pour Samedi et Dimanche.
var $CouleurDuJour = 'pink'; //Couleur de la cellule pour la date du jour.
var $CouleurFerie = 'yellow'; //Couleur pour les jours féries (fonction non disponible)
# ------------------------------------------------------------------------------

# ----------------------- CONSTRUCTEUR -----------------------------------------
function agenda($mois='',$annee='',$jour=''){
$this->LeJour = (!empty($jour)) ?$jour:'';
$this->LeMois = (!empty($mois)) ?$mois:date('n');
$this->Annee = (!empty($annee))?$annee:date('Y');

$this->NombreJour = date('t', mktime(0,0,0,$this->LeMois,1,$this->Annee));
$this->Aujourdhui = mktime(0,0,0,date('m'),date('d'),date('Y'));
$this->PremierJour = mktime(0,0,0,$this->LeMois,1,$this->Annee);
$this->DernierJour = mktime(0,0,0,$this->LeMois,$this->NombreJour,$this->Annee);
$this->PremierJourSemaine = date('w', mktime(0,0,0,$this->LeMois,1,$this->Annee));
}

# ----------------------- METHODE ----------------------------------------------
function calendrier(){
//Barre de navigation. << MOIS >>
$MoisSuivant = (date('m',$this->PremierJour))+1;
$MoisPrecedent = (date('m',$this->PremierJour))-1;
$AnneeSuivante = date('Y',$this->PremierJour);
$AnneePrecedente = date('Y',$this->PremierJour);

if($MoisSuivant==13){
$MoisSuivant = 1;
$AnneeSuivante = $AnneeSuivante+1;
$this->Annee = $AnneeSuivante;
}
if($MoisPrecedent==0){
$MoisPrecedent = 12;
$AnneePrecedente = $AnneePrecedente-1;
$this->Annee = $AnneePrecedente;
}

$this->Calendrier = "\n\";
$this->Calendrier .= \"<caption>\n\";
$this->Calendrier .= \"Script?mois=$MoisPrecedent&annee=$AnneePrecedente'><< \n\";
$this->Calendrier .= $this->TableauMois[$this->LeMois-1].\" ($this->NombreJour)\n\";
$this->Calendrier .= \"Script?mois=$MoisSuivant&annee=$AnneeSuivante'>>>\n\";
$this->Calendrier .= \"</caption>\n\";
$this->Calendrier .= \"----
\n L\n";

}

function voirJour($jour='',$mois='',$annee=''){
if($jour!=''){
global $mid; //Identifiant de la connection.

//Conversion de la date en timestamp
$moisEnAnglais = $this->TableauMoisE[date('m',mktime(0,0,0,$mois,$jour,$annee))-1];
$DateConvertie = "$jour $moisEnAnglais $annee";
$DateConvertie = strtotime("$DateConvertie");

//On recherche les données dans la base de données.

/*
Oh toi qui regarde mon script, dis moi pourquoi sa fonctionne pas ??
Bon je pense que le problème viens de ma requete, mais je voie pas où !!!
*/$code "select * from sortie where debut'$DateConvertie' and fin >='$DateConvertie'";
$result = mysql_query($code,$mid);

//Affichage des résultats.
if(mysql_affected_rows()){
while($row = mysql_fetch_object($result)){
echo("$row->nom");
}
}
else echo("Rien aujourd'hui U_U!");
}
}

function voirCalendrier(){
echo("$this->Calendrier");
}

# ----------------------- DEBUG ------------------------------------------------
function show(){
$i = 1;
$JourActuel = $this->PremierJour;
while($JourActuel<=$this->DernierJour){
echo date('r',$JourActuel)."
\n";
$i++;
$JourActuel = mktime(0,0,0,$this->LeMois,$i,$this->Annee);
}
}

}

$mid = mysql_connect('localhost','root','');
mysql_select_db('datenagumo1', $mid);

$agenda = new agenda($mois,$annee,$jour); //Initialisation de la class agenda.
$agenda->Calendrier(); //Création du calendrier.
$agenda->voirCalendrier(); //Affichage du calendrier.
$agenda->voirJour($jour,$mois,$annee);

4 réponses

floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
27 nov. 2003 à 19:12
je n'ai pas le temps de lire tout ton code mais le timestamp php et différent du timestamp mysql !
souvent cela cause des erreurs

désolé et bon courage
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
27 nov. 2003 à 19:15
pardon j'avais pas tout vu !

Akash-> Normalement sa devrait me prendre en compte tout les resultats comprit entre 1069887600 et 1073689200, non ?

si ta table est ordonnée dans le sens croissant oui, sinon non !
0
cs_Akash Messages postés 4 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 28 novembre 2003
28 nov. 2003 à 17:08
Ben en fait le timestamp je le génère en php avec strtotime(), c'est donc bien un timestamp php.

Sinon pour ce qui est de l'ordre pour la table, ça n'a rien changé U_U.

Merci quand même :)
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
28 nov. 2003 à 17:22
le timestamp généré avec strtotime() est un timestamp unix !
si dans ta table, tu as déclaré comme type mysql un type timestamp, ca ne marchera pas parce qu'ils n'ont pas le même format !
pour éviter ce problème, définit tes variables mysql de tes variables de type timestamp unix comme des bigint (je crois que c assez mais c'est à vérifier) ou au pire comme des varchar que tu convertiras ensuite en int.
j'espere que t'as capté ce que je voulais dire .

tente ca et tiens nous au courant

+
0
Rejoignez-nous