LMarie Skrevet 1. september 2009 Del Skrevet 1. september 2009 Hei Trenger hjelp med å få resultatet av følgende kode inn i en tabell. Hver linje i test.txt inneholder følgende: kode::dato::navn::adresse::telefon I koden under søker jeg opp linjene med kode 301 og skal vise resultatet i en tabell hvor navn, adresse og telefon skal inn i hvert sitt felt: Navn______________________Adresse_______________Telefon Karl Hansen_______________Grefsenveien 6________63927288 De to første feltene skal ikke være med i tabellen (kode og dato). <html> <body> <h5>Liste 301</h5> <br></br> <?php $fil = fopen("/home/www/test.txt", "r"); while (!feof($fil)) { $line = fgets($fil); if(preg_match('~^301::~', $line)) { echo "<tr><td>$line</td></tr>"; } } fclose($fil); ?> </html> </body> Hva må legges til for å få til dette? Lenke til kommentar
Ståle Skrevet 1. september 2009 Del Skrevet 1. september 2009 du kan se på funksjonene explode() og file() Lenke til kommentar
BlueEAGLE Skrevet 2. september 2009 Del Skrevet 2. september 2009 Nå har ikke jeg testet denne koden, men jeg ville gjort noe som likner på dette <?php $filnavn = 'listefil.txt'; $kode = 301; //Oppføringer med denne koden skal vises. $avgrenser = '::'; //Dette er tegnet/tegnene som avgrenser felt. $struktur = array('kode', 'dato', 'navn', 'adresse', 'telefon'); //Dette er strukturen på linjen $navnebase = file($filnavn); //Åpne filen og lese inn hver linje som en oppføring i en matrise //Sjekk at vi kunne åpne filen uten problemer. if(!$navnebase) die('Kan ikke åpne filen.'); //Gå igjenom hver linje i basen foreach($navnebase as $linje) { $felt = explode($avgrenser, $navnebase); //Del opp linjen i felt if($felt[0]=$kode) //Sjekk om denne linjen skal være med i resultatet. { $resultat[]=array_combine($struktur, $felt); //Smelt sammen struktur og verdier for å holde orden /*Finn ut hvilken funksjon som gjør en matrise til nøkler og en matrise til verdier*/ } } //Skrive ut resultatet if(count($resultat)!==0) { foreach($resultat as $linje) { echo "{$linje['navn']}, {$linje['adresse']}, {$linje['telefon']}<br/>"; } } else { echo "Det finnes ingen oppføringer med kode '$kode'<br/>"; } ?> ...eller det vil si, jeg ville brukt en SQL-database da denne fremgangsmåten ikke egner seg med større mengder data, men for et par hundrede oppføringer og ikke alt for mange oppslag i timen så bør det virke rimelig greit. Hadde dette vært en database så hadde du sluppet unna med koden: <?php //Koble til databasen $vert = 'localhost'; $bruker = 'db_username'; $passord = 'db_password'; $database = 'database'; $db = mysql_connect($vert, $bruker, $passord); mysql_select_db($database); //Velg riktig database $kode = 301; //Det er en fordel å legge en spørring i en egen variabel da man enklere kan feilsøke spørringen ved å skrive ut innholdet i variabelen og faktisk se hva som blir sendt til databasen. //Dette er spesielt hendig når det er flere variabler inne i bildet. Det er enklere å se en manglende verdi fremfor en stavefeil i en variabel o.l. $sporring = "SELECT navn,adresse,telefon FROM brukertabell WHERE kode=$kode"; $resultat=mysql_query($query) or die(mysql_error()); //Skrive ut resultatet if(!$resultat) { while($linje = mysql_fetch_assoc($resultat)) { echo "{$linje['navn']}, {$linje['adresse']}, {$linje['telefon']}<br/>"; } } else { echo "Det finnes ingen oppføringer med kode '$kode'<br/>"; } ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå