Ce n'est pas compliqué : l'inscription a lieu en VB6; je n'ai pas trouvé comment insérer un enregistrement MySQL en VB6; alors le programme VB6 crée un fichier sur mon serveur; "de temps en temps" un script php récupère les fichiers et injecte les enregistrement en MySQL.la question est de savoir comment ils ont pu s'inscrire deux fois avec le même Usrerid
Le code est celui auquel on est finalement arrivé pour réduire le temps d'affichage, objet de ce post, à savoirTu peux ouvrir un autre post avec cette problématique et fournir le code.
Code : Tout sélectionner
$results = mysql_query("
SELECT rlog.Userid as 'Userid',DATE_FORMAT(rlog.Timestamp , '%d/%m/%Y') as 'date_jour',
DATE_FORMAT(rlog.Timestamp , '%T') as 'heure_jour',rlog.Version,rlog.Module,rusers.Prenom,rusers.Nom,rusers.Email
FROM RVRTlog as rlog
INNER JOIN RVRTusers as rusers
ON rlog.Userid = rusers.Userid
ORDER BY rlog.Timestamp DESC
");
while ($result = mysql_fetch_array($results)) {
echo "<tr><td>" . $result['date_jour'] . "</td><td>" . $result['heure_jour'] . "</td><td>" . $result['Version'] . "</td><td>" . $result['Module'] . "</td>";
echo "<td>" . $result['Userid']. "</td><td>" . $result['Prenom'] . "</td><td>" . $result['Nom'] . "</td><td>" . $result['Email'] . "</td></tr>";Code : Tout sélectionner
$dir = opendir("Users");
while($file = readdir($dir))
{
if(substr($file,-3)=="pwd")
{
$myfile = fopen("Users/".$file, "r") or die("Unable to open file!");
$Record = fgets($myfile);
$Sep1=strpos($Record,";");
$Sep2=strpos($Record,";",$Sep1+1);
$Sep3=strpos($Record,";",$Sep2+1);
$Sep4=strpos($Record,";",$Sep3+1);
$Date = substr($Record,0,$Sep1);
$Userid = substr($Record,$Sep1+1,$Sep2-$Sep1-1);
$Prenom = substr($Record,$Sep2+1,$Sep3-$Sep2-1);
$Nom = substr($Record,$Sep3+1,$Sep4-$Sep3-1);
$Email = trim(substr($Record,$Sep4+1));
mysql_query("INSERT INTO RVRTusers (Dates, Userid, Prenom, Nom, Email) VALUES ('$Date', '$Userid', '$Prenom', '$Nom', '$Email')")
or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
fclose($myfile);
unlink("Users/".$file);
echo "<br>Enregistré : ".$Date." ".$Userid;
}
}
Il suffit de vérifier si 2 lignes successives sont identiques (même timestamp, même userid).Il n'est pas possible d'éviter d'afficher ces deux lignes, la seule façon est des les retrouver et de les supprimer.
Ben oui, c'est un log d'utilisation du logiciel, ce cas signifie qu'un même utilisateur a utilisé le logiciel à 2 moments différents, donc on compte 2 utilisations.Si j'ai un Userid identique mais un timestamp différents alors il faut afficher les deux lignes ?
Code : Tout sélectionner
$PrevDate="";
$PrevTime="";
$PrevUser="";
while ($result = mysql_fetch_array($results))
{
$Date=$result['date_jour'];
if($PrevDate <> "" AND $Date <> $PrevDate)
{
echo "<tr><td colspan=8></td></tr>"; // Une ligne de tableau vide quand on change de date
}
$PrevDate=$Date;
if($PrevTime<>$result['heure_jour'] OR $PrevUser<>$result['Userid']) // Evite les doublons de la table Users
{
echo "<tr><td>" . $Date . "</td><td>" . $result['heure_jour'] . "</td><td>" . $result['Version'] . "</td><td>" . $result['Module'] . "</td>";
echo "<td>" . $result['Userid']."</td><td>" . $result['Prenom'] . "</td><td>" . $result['Nom'] . "</td><td>" . $result['Email'] . "</td></tr>";
}
$PrevTime=$result['heure_jour'];
$PrevUser=$result['Userid'];
}Code : Tout sélectionner
SELECT DISTINCT(DATE_FORMAT(rlog.Timestamp , '%d/%m/%Y')) as 'date_jour', rlog.Userid as 'Userid',
DATE_FORMAT(rlog.Timestamp , '%T') as 'heure_jour',rlog.Version,rlog.Module,rusers.Prenom,rusers.Nom,rusers.Email
FROM RVRTlog as rlog
INNER JOIN RVRTusers as rusers
ON rlog.Userid = rusers.Userid
ORDER BY rlog.Timestamp DESC
Code : Tout sélectionner
$results = mysql_query("SELECT rlog.Userid as 'Userid', DATE_FORMAT(rlog.Timestamp , '%d/%m/%Y') as 'date_jour', DATE_FORMAT(rlog.Timestamp , '%T') as 'heure_jour',
rlog.Version, rlog.Module, rusers.Prenom, rusers.Nom, rusers.Email
FROM RVRTlog as rlog
INNER JOIN RVRTusers as rusers ON rlog.Userid = rusers.Userid
ORDER BY rlog.Timestamp DESC
");