PB écriture données dans fichier texte
Résolu
liadea
Messages postés
129
Statut
Membre
-
liadea Messages postés 129 Statut Membre -
liadea Messages postés 129 Statut Membre -
Bonjour,
Je me permets encore une fois de faire appel à vous car je n'ai vraiment aucune de comment faire.
Voila je m'explique, je souhaiterai récupérer toutes les adresses IP d'une entite.
Une seule entite peut avoir plusieurs adresses IP.
Je souhaiterai récupérer une seule fois l'entite et toutes les adresses IP associées à celle ci .
<CODE> :
- SELECT DISTINCT pour l'entite
$req1 = "SELECT DISTINCT EmailENTITE,ENTITE FROM ua
JOIN notifications ON ua.AdresseIP=notifications.AdresseIP
WHERE notifications.ETAT='Hors Ligne' AND notifications.DateUA='$today'";
$res1 = mysql_query($req1) or die('Erreur SQL !<br />' . $req1 . '<br />' . mysql_error());
//Récuperation des résultats
while ($rowTitle= mysql_fetch_array($res1)){
$mailentTitle = $rowTitle['EmailENTITE'];
$entiteTitle = $rowTitle['ENTITE'];
$fp = fopen("$entiteTitle.txt","a");
SELECT de toutes les autres informations dont j'ai besoin dans mon fichier dont l'adresse IP
$req2 = "SELECT ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,ua.SITE,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='Hors Ligne' AND notifications.DateUA='$today'
WHERE ENTITE='$entiteTitle'
AND EmailENTITE='$mailentTitle'";
$res2 = mysql_query($req2) or die('Erreur SQL !<br />' . $req2 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_array($res2)){
$netbios= $row['NomNetbios'];
$source = $row['SourceMAJ'];
$ip = $row['AdresseIP'];
$site = $row['SITE'];
$date = $row['DateUA'];
$eta = $row['ETAT'];
}
$hl = "Hors Ligne";
$etat=STR_REPLACE("1","$hl","$eta");
$dateFr = strftime("%d/%m/%Y", strtotime($date));
Ecriture du fichier :
fwrite($fp, "\nNOM NETBIOS : $netbios");
fwrite($fp, "\nSOURCE : $source");
fwrite($fp, "\nADRESSE IP : $ip");
fwrite($fp, "\nMAIL ENTITE : $mailentTitle");
fwrite($fp, "\nENTITE : $entiteTitle");
fwrite($fp, "\nSITE : $site");
fwrite($fp, "\nDATEUA : $dateFr");
fwrite($fp, "\nETAT : $etat");
fclose($fp);
Met dans ce système la je récupère bien mes distinct ENTITE mais qu'une seule adresse IP correspondante alors que je devrais en avoir plusieurs .
Je me permets encore une fois de faire appel à vous car je n'ai vraiment aucune de comment faire.
Voila je m'explique, je souhaiterai récupérer toutes les adresses IP d'une entite.
Une seule entite peut avoir plusieurs adresses IP.
Je souhaiterai récupérer une seule fois l'entite et toutes les adresses IP associées à celle ci .
<CODE> :
- SELECT DISTINCT pour l'entite
$req1 = "SELECT DISTINCT EmailENTITE,ENTITE FROM ua
JOIN notifications ON ua.AdresseIP=notifications.AdresseIP
WHERE notifications.ETAT='Hors Ligne' AND notifications.DateUA='$today'";
$res1 = mysql_query($req1) or die('Erreur SQL !<br />' . $req1 . '<br />' . mysql_error());
//Récuperation des résultats
while ($rowTitle= mysql_fetch_array($res1)){
$mailentTitle = $rowTitle['EmailENTITE'];
$entiteTitle = $rowTitle['ENTITE'];
$fp = fopen("$entiteTitle.txt","a");
SELECT de toutes les autres informations dont j'ai besoin dans mon fichier dont l'adresse IP
$req2 = "SELECT ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,ua.SITE,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='Hors Ligne' AND notifications.DateUA='$today'
WHERE ENTITE='$entiteTitle'
AND EmailENTITE='$mailentTitle'";
$res2 = mysql_query($req2) or die('Erreur SQL !<br />' . $req2 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_array($res2)){
$netbios= $row['NomNetbios'];
$source = $row['SourceMAJ'];
$ip = $row['AdresseIP'];
$site = $row['SITE'];
$date = $row['DateUA'];
$eta = $row['ETAT'];
}
$hl = "Hors Ligne";
$etat=STR_REPLACE("1","$hl","$eta");
$dateFr = strftime("%d/%m/%Y", strtotime($date));
Ecriture du fichier :
fwrite($fp, "\nNOM NETBIOS : $netbios");
fwrite($fp, "\nSOURCE : $source");
fwrite($fp, "\nADRESSE IP : $ip");
fwrite($fp, "\nMAIL ENTITE : $mailentTitle");
fwrite($fp, "\nENTITE : $entiteTitle");
fwrite($fp, "\nSITE : $site");
fwrite($fp, "\nDATEUA : $dateFr");
fwrite($fp, "\nETAT : $etat");
fclose($fp);
Met dans ce système la je récupère bien mes distinct ENTITE mais qu'une seule adresse IP correspondante alors que je devrais en avoir plusieurs .
A voir également:
- PB écriture données dans fichier texte
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
6 réponses
Si tu mets DISTINCT sur un champ c'est normal que tu ne récupéres qu'une seule fois les valeurs identiques de ce champ, enlèves DISTINCT de ta requette
Je suis obligée car je peux avoir plusieurs fois la même Entité donc avec le même Email mais des Adresse IP différentes et je voudrais envoyer un seul mail de la même Entité mais avec par exemple les 3 Adresse IP dans le même fichier
Une solution:
tu fais une première requette avec DISTINCT comme ça tu n'auras qu'une seule fois chaque entité (tu stockes dans un array par exemple) et tu fais par une boucle sur cet array, pour chacune de ces entités une autre requette avec comme condition WHERE entite=$entite
comme cela tu récupèrera bien tes adresses IP correspondantes à chaque entité
tu fais une première requette avec DISTINCT comme ça tu n'auras qu'une seule fois chaque entité (tu stockes dans un array par exemple) et tu fais par une boucle sur cet array, pour chacune de ces entités une autre requette avec comme condition WHERE entite=$entite
comme cela tu récupèrera bien tes adresses IP correspondantes à chaque entité
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question