Aiuto con ricerca nominativi in un file CSV

  • Creatore Discussione Creatore Discussione T.W.
  • Data di inizio Data di inizio

T.W.

Nuovo Utente
25 Nov 2012
12
0
0
Salve ragazzi,
vi chiedo gentilmente un piccolo aiuto con questo script.
Da un form si sceglie la nazione desiderata (esempio germania)
e lo script stampa tutti i nominativi presenti in germania.

Esempio:

1) Marco|Germania
2) Francesco|Germania
3) Alessandro|Germania

Quello in cui non riesco è questo: è possibile ad esempio
far stampare questi nominativi saltando però quelli che
hanno deciso di non essere visualizzati?

Esempio:
1) Marco|Germania|sì
2) Francesco|Germania|sì

Il terzo nominativo non sarà mostrato anche se ancora presente nel database
perché ha scelto "no".

3) Alessandro|Germania|no

Spero di essere stato chiaro. Attendo un vostro piccolo aiuto, GRAZIE!!!!

PHP:
if (!empty ($_GET['nazione'])) {
    $merk = $_GET['merk'];
    $file_handle = fopen("dati.csv", "r");
    echo "<ol>";
	while (!feof($file_handle)) {
        $parti = fgetcsv($file_handle, 8000, "#");
        $pos = stristr($parti[0], $nazione);
if ($pos === false) {
	;
        } 
else {
	echo "<li>";
	$parti[0] = ucwords(strtolower($parti[0]));
	$testo=explode("|",$parti[0]);
	foreach($testo as $ch => $valore){
	echo "$valore <br />"; }
	echo "</li>"; }
	}
    echo "</ol>";
}
 
Ultima modifica di un moderatore:
ciao
sempre che non abbia capito male, tu hai un csv del tipo (es.)
Marco|Germania|no#Francesco|Germania|si#Alessandro|Germania|si#Sofonisba|Italia|si
e vorresti ottenere qualcosa di simile
1. Francesco Germania si
2. Alessandro Germania si
prova così (al massimo non funzia)
PHP:
<?php
//if (!empty ($_GET['nazione'])) {
    //$merk = $_GET['merk'];//non so a cosa serva
    $nazione=strtolower("Germania");//da sostituire con $nazione=strtolower($_GET['nazione']);
	$file_handle = fopen("dati.csv", "r");
	var_dump($file_handle);echo "<br>";//resource(3) of type (stream)
    $parti = fgetcsv($file_handle, 8000, "#");
	var_dump($parti);echo "<br>";//array(3) { [0]=> string(17) "Marco|Germania|no" [1]=> string(21) "Francesco|Germania|si" [2]=> string(22) "Alessandro|Germania|si" } 
	$parti=array_map("strtolower",$parti);//tutto minuscolo
	var_dump($parti);echo "<br>";// qui come sopra ma tutto minuscolo
	//verifica i dati in modo da avere solo quello con nazione = $parti
	$pat="/".$nazione."/";//definisco il patner
	var_dump($pat);echo "<br>";
	foreach($parti as $ch => $val){
		var_dump($ch,$val, preg_match($pat, $val));echo "<br>";
		if(!preg_match($pat, $val)){
			//tolgo dall'array i record con nazione no corrispondente
			unset($parti[$ch]);
		}
	}
	var_dump($parti);echo "<br>";//array(3) { [0]=> string(17) "marco|germania|no" [1]=> string(21) "francesco|germania|si" [2]=> string(22) "alessandro|germania|si" } 
	if(count($parti)==0){
		echo "nazione non trovata<br>";
	}else{
		echo "<ol>";
		foreach($parti as $valore){
			$dati=explode("|",$valore);
			if($dati[2]=="si"){
				echo "<li>".ucwords($dati[0])." ".ucwords($dati[1])." ".$dati[2]."</li>";
			}
		}
		echo "<ol>";
	}
//} // fine del if get nazione
?>

p.s.
ho messo vari var_dump per verificare lo sviluppo dell script, provalo e poi toglili
 
Grazie per avermi risposto e per la pazienza.
Proverò subito e ti farò sapere al più presto possibile
"A dopo"
 

Discussioni simili