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.042
148
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
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
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
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0
G Problema update di un database PHP 0

Discussioni simili