Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 17h44   #1
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
Par défaut Afficher les éléments d"un tableau en fonction d'un paramètre

Bonsoir,

Actuellement j'ai un csv qui est structuré comme ceci :

site;batiment;rack;ip
paris;a;bt0;10.31.0.1
paris;a;bt0;10.31.0.2
paris;b;bt2;10.31.0.3
paris;b;bt3;10.31.0.4
lima;a;bt01;10.31.1.56
paris;a;bt1;10.31.0.16
..

Comment faire pour par exemple afficher uniquement les adresses ip des sites de paris qui se situe dans le bâtiment a.
Voir même récupérer les adresses ip de lima qui se situe dans le rack bt01 du bâtiment a.

Actuellement j'ai un traitement de ce type :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
$fichier="export_switchv.csv";
	$fp = fopen ($fichier, 'r')
		or trigger_error('Le fichier '.$fichier.' est introuvable.', E_USER_WARNING);
	if ($fp<>false) {
		flock ($fp, LOCK_SH);
		while (($data = fgetcsv($fp, 1000, ";")) !== FALSE) {
			$site[] = $data[0] ;
			$batiment[] = $data[1];
			$rack[] = $data[2];
                        $ip[] = $data[3];
		}
		flock ($fp, LOCK_UN);
		fclose ($fp);
	}
?>
Comment faire pour arriver à afficher uniquement les élément qui m’intéresse.

Merci.
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 18h16   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Bonsoir bonsoir

Citation:
Envoyé par gege765
Comment faire pour par exemple afficher uniquement les adresses ip des sites de paris qui se situe dans le bâtiment a.
En fessant un test sur la données ?
Code :
if($data[0] == "paris" && $data[1) == "a")
Citation:
Envoyé par gege765
Voir même récupérer les adresses ip de lima qui se situe dans le rack bt01 du bâtiment a.
Code :
(if($data[0] == "lima" && $data[2] == "bt01" && $data[1] == "a")
Après je pense que le plus simple est d'utiliser un formulaire avec un champ text pour chaque éléments. Puis tu test le champ, si il est vide tu n'applique aucun filtre, sinon ...
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h18   #3
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
Merci de ton aide sa fonctionne.

Voila ce que j'ai fais :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        $site=strip_tags($_POST['site']);
        $batiment=strip_tags($_POST['batiment']);
	$rack=strip_tags($_POST['baie']);
		echo "<p>Vos choix sont : " . $site . " " . $batiment . " " . $rack ."</p>\n";
 
	$fichier=PATH_CSV .'/'. FILE_CSV;
	$fp = fopen ($fichier, 'r')
		or trigger_error('Le fichier '.$fichier.' est introuvable.', E_USER_WARNING);
	if ($fp<>false) {
		flock ($fp, LOCK_SH);
		while (($data = fgetcsv($fp, 64, ";")) !== FALSE) {
			if($data[0] == $site) {
				echo ($data[3]) . "<br>\n" ;
			}
			if($data[0] == $site && $data[1] == $batiment) {
				echo ($data[3]) . "<br>\n" ;
			}
			if($data[0] == $site && $data[2] == $rack && $data[1] == $batiment){
				echo ($data[3]) . "<br>\n" ;
			}
			else{
				echo ($data[3]) . "<br>\n" ;
			}
		}
		flock ($fp, LOCK_UN);
		fclose ($fp);
	}
Est-ce correcte ?

Par contre quand l'utilisateur ne choisit pas le critère comment lui indiquer dans la phrase : vos choix sont tous les éléments tout en gardant les valeurs de variable à "" ?

Car la si l'utilisateur ne sélectionne rien, il a :
Vos choix sont :
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h31   #4
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
A la limite tu vérifie que les champs ne soit pas vide, sinon tu n'affiche rien
Code php :
1
2
if(!empty($site) && !empty($batiment) && !empty($rack))
    echo "<p>Vos choix sont : " . $site . " " . $batiment . " " . $rack ."</p>\n";

Par contre je ne comprend pas tes multiple test, tu renvoie toujours la même chose : echo ($data[3]) . "<br>\n" ;
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h54   #5
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
arf non çà fonctionne pas.
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 14h37   #6
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
Je vais essayer de reformuler, dans l'espoir d'avoir de l'aide.

En faite, si le site est rempli je souhaite renvoyer toute les ip ($data[3]) du site en question.
Si le site et le bâtiment sont remplis je souhaite renvoyer toutes les ip qui correspondent à ce choix.
Et ainsi de suite...
Enfin si aucun choix n'est fait je souhaites renvoyer toutes les ip.

En réalité je ne fais pas un echo mais j'appel une fonction qui prend en paramètre les différentes ip trouvées.

Comment faire ?
Des if imbriqués ?

D'avance merci.
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h12   #7
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Désolé de ne pas avoir pu passer plus tôt mais mon week-end a été très chargé

Je pense que le plus simple serrait de faire ainsi :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$site=strip_tags($_POST['site']);
$batiment=strip_tags($_POST['batiment']);
$rack=strip_tags($_POST['baie']);
if(!empty($site) && !empty($batiment) && !empty($rack))
    echo "<p>Vos choix sont : " . $site . " " . $batiment . " " . $rack ."</p>\n";
 
[...]
 
while (($data = fgetcsv($fp, 64, ";")) !== FALSE) {
    $bool = true;
    if(!empty($site) && $site != $data[0])
            $bool = false;
    if(!empty($batiment) && $batiment!= $data[1])
            $bool = false;
    if(!empty($rack) && $rack!= $data[0])
            $bool = false;
 
    if($bool)
        echo $data[3];
}
humitake est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 18h03   #8
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
Salut,

Je te remercie pour ton aide ca fonctionne

J'ai juste eu à corriger la petite erreur ici.
Code :
1
2
if(!empty($rack) && $rack!= $data[0])
            $bool = false;
C'est dans les cas comme celui-ci que je m'aperçois qu'il me manque des notions d'algorithmies.

Bonne continuation.
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 19h35   #9
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Ah oui date et non data

Ravi d'avoir pu t'aider
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 19h40   #10
Membre à l'essai
 
Inscription : avril 2009
Messages : 125
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 125
Points : 24
Points : 24
Non c'est :
au lieu de Encore merci.
@+
gege765 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 19h48   #11
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
...

Et voila je travail un peu sur les dates et maintenant je les voit partout
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h22.


 
 
 
 
Partenaires

Hébergement Web