- Home
- Categorie
- Coding e Sistemistica
- Coding
- lettura database di testo
-
lettura database di testo
Vorrei leggere questo tipo di database
file.dat
marco</>[email protected]</>www.marco.it</>523;
luca</>[email protected]</>www.luca.it</>652;
andrea</>[email protected]</i>www.andrea.it</i>689;file.def
Username</>e-mail</>website</>topic
dove il file .dat contiene il database e il .def contiene le definizioni per ogni utente
come si può vedere ogni riga di utente è divisa da un punto e virgola e accapo.... (si può anche togliere il punto e virgola)
ora la cosa che mi chiedo è come faccio a visualizzare per esempio il profilo di andrea?
quindi per esempio la query di ottenere l'e-mail di andrea?
grazie a chi cercherà di aiutarmi
-
Più o meno così:
$righe = file("file.def"); $nomeCampi = explode("</>", $righe[0]); $righe2 = file("file.dat"); foreach ($righe2 as $riga) { $valCampi = explode("</>", $righe[0]); foreach ($valCampi as $key => $campo) echo "Campo " . $nomeCampi[$key] . " = $campo<br />\n"; }
-
Ottengo questo
Campo Username = Username
Campo e-mail = e-mail
Campo website = website
Campo topic = topic
Campo Username = Username
Campo e-mail = e-mail
Campo website = website
Campo topic = topic
Campo Username = Username
Campo e-mail = e-mail
Campo website = website
Campo topic = topic
è un errore nella query....?
con questa correzione:
<?
$riga = "andrea";
$righe = file("file.def");
$nomeCampi = explode("</>", $righe[0]);
$righe2 = file("file.dat");
foreach ($righe2 as $riga)
{
$valCampi = explode("</>", $righe2[0]);
foreach ($valCampi as $key => $campo)
echo "Campo " . $nomeCampi[$key] . " = $campo<br />\n";
}
?>
mi viene invece mostrato:Campo Username = marco
Campo e-mail = [EMAIL="[email protected]"][email protected][/EMAIL]
Campo website = www.marco.it
Campo topic = 523
Campo Username = marco
Campo e-mail = [EMAIL="[email protected]"][email protected][/EMAIL]
Campo website = www.marco.it
Campo topic = 523
Campo Username = marco
Campo e-mail = [EMAIL="[email protected]"][email protected][/EMAIL]
Campo website = www.marco.it
Campo topic = 523basta poi quindi mettere una variabile a $righe2[$variabile];
dove $variabile è presa da pagina.php?variabile=1 , cosi facendo 1 va a leggere il secondo record quindi luca
l'unico problema è..... cosi visualizza per varie volte lo stesso risultato...ma se io volessi visualizzarlo una sola volta, ma soprattutto solo un unico valore...quindi per esempio solo l'e-mail?
-
In realtà questa riga era sbagliata:
$valCampi = explode("</>", $righe2[0]);
Ma
$valCampi = explode("</>", $riga);
-
@Senamion said:
In realtà questa riga era sbagliata:
$valCampi = explode("</>", $righe2[0]);
Ma
$valCampi = explode("</>", $riga);
capito ma il problema resta sempre lo stesso
Campo Username = marco
Campo e-mail = [email][email protected][/email]
Campo website = www.marco.it
Campo topic = 523
Campo Username = luca
Campo e-mail = [email][email protected][/email]
Campo website = www.luca.it
Campo topic = 652
Campo Username = andrea
Campo e-mail = [email][email protected][/email]689perchè tutti questi campi? a me interessa solo l'e-mail di luca per esempio.....
-
Nell'esempio che ti ho fatto fa il ciclo su tutti.
Se vuoi aggiungere un test puoi farlo dentro il foreach:foreach ($righe2 as $riga) { $valCampi = explode("</>", **$riga**); if ($valCampi[0] == "luca") { foreach ($valCampi as $key => $campo) echo "Campo " . $nomeCampi[$key] . " = $campo<br />\n"; } }
Però è evidente che quando dici "solo luca per esempio" vuol dire che dietro ci dev'essere un'applicativo, dipende cosa vuoi fare, il mio esempio ti ha permesso di leggere i dati dal file ed associarli alle opportune definizioni.
-
Però è evidente che quando dici "solo luca per esempio" vuol dire che dietro ci dev'essere un'applicativo, dipende cosa vuoi fare, il mio esempio ti ha permesso di leggere i dati dal file ed associarli alle opportune definizioni. __________________
quello che volevo fare è visualizzare il campo e-mail di luca e non tutti i campi...ma solo un unico campo.....
forze è colpa del foreach che ripete tutti i campi definizioni per tutti i campi dati?
come faccio?
-
@alessiofbt said:
quello che volevo fare è visualizzare il campo e-mail di luca e non tutti i campi...ma solo un unico campo.....
forze è colpa del foreach che ripete tutti i campi definizioni per tutti i campi dati?
come faccio?
poi ho comunque risolto cosi:
[PHP]$record = file("db.def");
$record2 = file("db.dat");
foreach ($record2 as $riga)
{
$nomeCampi = explode("<~>", $record[0]);
$campo = explode("<~>", $riga);
if ($campo[0] == "nome2")
{
//echo "$campo[0]<br>";
echo "$campo[1] (dato di luca)";
}
}[/PHP]ora ho però un problema...ho scoperto di non poter fare if all'interno di queste righe:
if ($campo[0] == "nome2")
{
cioè per esempio non posso inserire constanti riguardanti il dato $campo[1] che vado ad ottenere.... ma perchè???
}
}
-
@alessiofbt said:
ora ho però un problema...ho scoperto di non poter fare if all'interno di queste righe:
if ($campo[0] == "nome2")
{
cioè per esempio non posso inserire constanti riguardanti il dato $campo[1] che vado ad ottenere.... ma perchè???
}
}
:bho:
-
spiegati meglio cosa non ti funziona?