Problema recupero dati da file [era: help script php]

turillo

Utente Attivo
23 Apr 2012
47
0
0
salve a tutti, mi sono appena iscritto ma utilizzo molto questo sito di mr.webmaster
perchè lo trovo molto utile per quanto riguarda i consigli sugli script ed in generale
sulla programmazione web.

ecco qui il mio problema: sto costruendo uno script che da un file legge delle stringhe
e mi costruisce un form con delle checkbox i cui valori sono riferiti a ciò che trovo dal file.
poi cliccando su un submit sotto il form c'è un div in cui viene caricato il contenuto a seconda
delle checkbox selezionate, solo che ho un problema: ogni riga del file la trasformo in array con
la funzione explode e vorrei fare in modo che se nell'array c'è un valore - lo sostituisco con uno spazio vuoto,
solo che non funziona con tutti, in alcuni lo sostituisce ma in altri no.

ecco qui il codice:
Codice:
<?php

$file=fopen('esempio.txt','r');

if(!$file) { // controllo se il file è aperto correttamente

echo "Errore, impossibile aprire il file";

}
echo "<html><head>";
echo "<style type='text/css'>";
echo "#checkcontainer {
       width: 600px;
	   height: 250px;
	   background: #C0C0C0; }
	  #form {
	   width: 100%;
	   height: 100%;
	  }
	  .item {
	   width: 100px;
	   height: 50px;
	  }
	  .submit {
	   display: block;
	   position: relative;
	   top: 20px;
	   left: 0px;	  
	  }
	  #showgraph {
	   width: 600px;
	   height: 250px;
	   background: #808080;
	   margin: 20px 0px;
	  }";
echo "</style>";

echo "</head><body>";

echo "<h2>Clicca sulla casella per tracciare il grafico del relativo algoritmo</h2>";

echo "<div id='checkcontainer'>"; // checkcontainer

echo "<form id='form' method='post' action='index.php'>";

while(!feof($file)) {

$stringa = fgets($file);
$a = explode('	',$stringa);
// $righe=count(file('genome.txt')); // numero righe totali
$per_riga=5;

if($inserite < $per_riga) {
echo "<span class='item'>";
echo "<input type='checkbox' name='alg[".$a[0]."]' value='$a[0]'/> ".$a[0]."";
echo "</span>";
$inserite=$inserite+1;
}
else {
echo "</br>";
$inserite=0;
}

}

echo "<input class='submit' type='submit' value='Mostra'>";
echo "</form>";
echo "</div>"; // checkcontainer
echo "<div id='showgraph'>"; // showgraph
if(sizeof($_POST['alg'])>0) {


foreach($_POST['alg'] as $algoritmo) {

$file=fopen('esempio.txt','r');

if(!$file) { // controllo se il file è aperto correttamente

echo "Errore, impossibile aprire il file";

}

while(!feof($file)) {
			
$riga=fgets($file);
$array = explode('	',$riga);

if($algoritmo == $array[0]) {
			
for($i=1;$i<count($array);$i++) {

if($array[$i]=='-') { // se trovo - lo sostituisco con un valore vuoto

echo "NULL	";

}
else {
						
echo $array[$i]."	";

}
						
}

echo "</br>";
			
}
		
		
} 
}
}
else { 
	// non mostro nulla 
}
echo "</div>"; // showgraph
echo "</body>";
fclose($file);

?>

in questo caso sostituisco a - la stringa NULL.

la struttura del file è questa

nome val val
nome val val

con una tab orizzontale tra i valori.

vi inserisco lo stamp di quello che viene, in cui si vede la pagina php e il file txt
Vedi l'allegato 1218

spero possiate aiutarmi

turillo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
devo ammettere che man mano che leggevo/modificavo il tuo codice mi sono perso

se ho capito cosa vuoi fare (non credo) puoi provare cosi:

PHP:
<?php

$file = fopen('esempio.txt', 'r');

if (!$file) { // controllo se il file è aperto correttamente
    echo "Errore, impossibile aprire il file";
}
echo "<html><head>";
echo "<style type='text/css'>";
echo "#checkcontainer {
       width: 600px;
	   height: 250px;
	   background: #C0C0C0; }
	  #form {
	   width: 100%;
	   height: 100%;
	  }
	  .item {
	   width: 100px;
	   height: 50px;
	  }
	  .submit {
	   display: block;
	   position: relative;
	   top: 20px;
	   left: 0px;	  
	  }
	  #showgraph {
	   width: 600px;
	   height: 250px;
	   background: #808080;
	   margin: 20px 0px;
	  }";
echo "</style>";

echo "</head><body>";

echo "<h2>Clicca sulla casella per tracciare il grafico del relativo algoritmo</h2>";

echo "<div id='checkcontainer'>"; // checkcontainer
// richiamo la stessa pagina con PHP_SELF
echo "<form id='form' method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
$riga = 1;
while (!feof($file)) {
    $stringa = fgets($file);
    $stringa = str_replace(" ", ";", $stringa);

    $a = explode(';', $stringa);

    echo "<span class='item'>";
    echo "<input";
    if (isset($_POST['alg' . $riga]) && $_POST['alg' . $riga] == $a[0]) {
        echo " checked='checked'";
    }
    echo " type='checkbox' name='alg" . $riga . "' value='$a[0]'/> " . $a[0] . "";
    echo "</span>";
    $riga++;
}
echo "<input class='submit' type='submit' value='Mostra'>";
echo "</form>";
echo "</div>"; // checkcontainer
echo "<div id='showgraph'>"; // showgraph
//
//verifico che sia settato il post
if (isset($_POST)) {
    foreach ($_POST as $key => $valore) {
        $file = fopen('esempio.txt', 'r');
        if (!$file) { // controllo se il file è aperto correttamente
            echo "Errore, impossibile aprire il file";
        }
        while (!feof($file)) {
            $riga = fgets($file);
            $riga = str_replace(" ", ";", trim($riga));
            $array = explode(';', $riga);

            if ($_POST[$key] == $array[0]) {
                foreach ($array as $value) {
                    if (!empty($value) && $value != "-") {
                        echo $value . "<br/>";
                    }
                }
            }
        }
        fclose($file);
    }
}
echo "</div>"; // showgraph
echo "</body>";
?>

credo di aver modificato parecchio e ho commentato poco
se hai bisogno chiedi

Intanto copialo e incollalo e vedi se piu o meno è quello che vuoi fare

PS: cambia il titolo della discussione con qualcosa di più apprpriato in modo che si capisca di cosa stiamo parlando

ciao
 

turillo

Utente Attivo
23 Apr 2012
47
0
0
scusa se il titolo del topic non era preciso, ti ringrazio per il tuo contributo.

copiando e avviando il tuo codice purtroppo non funziona.

però forse adesso ti spiego meglio: quando io estraggo la riga dal file con fgets la trasformo in un array
con explode. quindi adesso ho un array in cui ogni cella contiene un pezzo della riga del file che ho estrapolato
considerando come carattere di "taglio" la tabulazione.

il problema è che quando devo tirar fuori i dati dall'array non è detto che ci sia un numero(come hai visto nell'immagine)
e quindi se trovo il simbolo '-' lo sostituisco con null solo che quando faccio il controllo con if($array[$i]=='-') non lo sostituisce
a tutti ma solo ad alcuni. la porzione di codice che è riferita al problema è questa

Codice:
foreach($_POST['alg'] as $algoritmo) {

$file=fopen('esempio.txt','r');

if(!$file) { // controllo se il file è aperto correttamente

echo "Errore, impossibile aprire il file";

}

while(!feof($file)) {
			
$riga=fgets($file);
$array = explode('	',$riga);

if($algoritmo == $array[0]) {
			
for($i=1;$i<count($array);$i++) {

if($array[$i]=='-') { // se trovo - lo sostituisco con un valore vuoto

echo "NULL	";

}
else {
						
echo $array[$i]."	";

}
						
}

echo "</br>";
			
}
		
		
} 
}

non so se sono stato più chiaro, spero di si.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Non lo sostituisce a uno o a piu variabili? (Ho una mezza ipotesi ma mi serve saperlo)

Inoltre per i molteplici echo piuttosto lunghi all'inizio potresti usare <<<EOF per facilitarti la vita ;)
 
Ultima modifica:

turillo

Utente Attivo
23 Apr 2012
47
0
0
diciamo che mi sono accorto che la sostituzione avviene solo se la '-' si trova dentro l'array
per quanto riguarda le righe del file che non sono l'ultima, dove invece la '-' viene sostituita
in ogni occorrenza.

mi sto dannando, possibilmente è una cavolata:crying:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Non lo sostituisce a uno o a piu variabili? (Ho una mezza ipotesi ma mi serve saperlo)

Inoltre per i molteplici echo piuttosto lunghi all'inizio potresti usare <<<EOF per facilitarti la vita ;)
per la precisione: usa la sintassi heredoc, al posto di <<<EOF si può scrivere <<<PINCO e alla fine (prima colonna) PINCO;
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
copiando e avviando il tuo codice purtroppo non funziona.

a me in locale funzionava:

es.png

non so però se è quello che volevi fare

Ora mi rileggo con calma la discussione
 

turillo

Utente Attivo
23 Apr 2012
47
0
0
ragazzi ho risolto il problema!!!

praticamente quando estraggo la riga con fgets($file) invece di convertirlo subito in array con explode
prima gli tolgo gli spazi a inizio e fine stringa con trim(fgets($file)) ;)

vi ringrazio tanto per i vostri consigli e contributi
 
Discussioni simili
Autore Titolo Forum Risposte Data
S problema con recupero dati tabella mysql PHP 2
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
Emix Problema recupero Dati da MYSQL PHP 20
T Problema con form e recupero dati da mysql PHP 17
W Problema recupero dati database Javascript 2
A Problema recupero valori da select con chiamata ajax Ajax 1
O problema recupero valore con getElementById Ajax 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7

Discussioni simili