LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 16/02/2005 à 14:53
capping
Oui, tu as foiré ton mktime (mktime attend des chiffres en paramètres et non une chaine de caractères).

De plus, tu ne selectionnes pas de champs tps dans ta requete SQL alors que tu utilises $caping['tps'].
Il manque aussi la suppression des anciennes entrées dans la table :/

Bref, on va faire un code exemple, sinon on ve pas s'en sortir smiley

<?php
// imaginons que tu stockes l'ip du visiteur ainsi que la date où il charge cette page.
// pour cette date, on utilisera un champ SQL de type INT

// format de la table : table (id, ip, date)

// on calcul la date actuelle et celle d'hier
$tps_actuel = time();
$tps_hier = $tps_actuel - 86400;

// on supprime les anciennes entrées
$sql = 'DELETE FROM table WHERE date < "'.$tps_hier.'"';
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on cherche si l'adresse ip a une entrée dans la base
$sql = 'SELECT count(id) AS is_ip FROM table WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);

if ($data['is_ip'] == 0) {
// si non, on anjoute une entrée dans la base
$sql = 'INSERT INTO table VALUES("", "'.$_SERVER['REMOTE_ADDR'].'", "'.$tps_actuel.'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
}
?>


Code non testé.
LA GLOBULE
le 16/02/2005 à 11:12
newletter
Ok.

Sort le $expediteur = $_POST['expediteur']; du while (met le avant).

Ensuite, essaye cette ligne pour le mail :

mail($destinataire, $objet, $contenu, "Reply-to: $expediteur\nFrom: $expediteur");
LA GLOBULE
le 16/02/2005 à 10:56
correction
Bah :

- 1 xenon54
- 2 Rex
- 3 Country
- 4 dboisso
- 5 ptit fred

smiley
LA GLOBULE
le 16/02/2005 à 10:51
newletter
Ben remplace :

mail($destinataire, $objet, $contenu, "From: $expediteur\r\nReply-To: $expediteur");

Par :

mail($destinataire, $objet, $contenu);

Si tes variables sont bien remplies, comme tu le dis, ca devrait fonctionner.
LA GLOBULE
le 16/02/2005 à 10:48
capping
Pour mktime, voici ce que dis la doc :

int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])

mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié.


Exemple :

<?php
$tps = mktime(0, 0, 0, 1, 13, 1997);
?>


$tps contient donc le nombre de secondes écoulées entre le 1 er janvier 1970 à 0h0mn0s et le 13 janvier 1997 à 0h0mn0s.

Pour effacer automatiquement ta ligne, il suffit de faire le test que je t'ai dit : comparer le timestamp des deux dates et si il est supérieur à 24 heures, ben tu effaces.
LA GLOBULE
le 16/02/2005 à 10:27
newletter
Et si tu vires les headers de ton mail, ca arrive ou non ?
LA GLOBULE
le 16/02/2005 à 10:16
newletter
Affiche le contenu de tes variables :
$destinataire
$expediteur
$objet
$contenu

Dans le while.

Sont elles bien remplies ?
LA GLOBULE
le 16/02/2005 à 10:14
capping
Pour tes dates, tu peux les transformer en timestamp avec mktime, faire leur différence, puis tu compares cette différence avec 86 400 secondes (24 heures).
LA GLOBULE
le 16/02/2005 à 10:09
Update et LIMIT
Perso, je pense pas que tu tombes en timeout en modifiant 5000 éléments d'une base de données.
LoadingChargement en cours