andm Skrevet 1. august 2005 Del Skrevet 1. august 2005 Jeg har sett på denne, og ønsker å bruke lignende fremgangsmåte for å hente frem et sitat fra en fil/mappe og vise dette. Er dette mulig? Det er det samme om sitatene lagres separat i filer i en mappe, eller alle i én fil (noe som virker mindre tungvint). Lenke til kommentar
Magnus Holm Skrevet 1. august 2005 Del Skrevet 1. august 2005 hva med: <?php srand((double)microtime()*1000000); $rand = rand(0,10); include "path/til/filer/".$rand.".php"; ?> Så kaller du filene for 1.php, 2.php osv Lenke til kommentar
???????? Skrevet 1. august 2005 Del Skrevet 1. august 2005 Det finnes flere måter å løse dette på. Litt avhengig av hvor mange sitater du har så kan det nok være fordelaktig å lagre det i separate filer. Ulepmen med en fil er at den kan bli stor, og det kan bli mye jobb for PHP å dele opp sitatene for den må skille mellom alle sammen. Selvfølgelig, det beste er å lagre det i en database, men siden du spesifiserer at det skal være en fil så antar jeg at du ikke har tilgang til dette. Hvis meningen er at du bare skal kunne laste opp en ny fil med sitat, så er det beste om du åpner hovedfilen (eller en egen fil) hvor du lagrer alle filnavnene i en array. Da blir scriptet raskt. En annen mulighet er å lese fra filene i en mappe og velge en tilfeldig fil. Dette er litt mer jobb, men en fult mulig løsning dersom du ikke har alt for mange hits pr. dag. Da trenger du bare å laste opp nye sitater i nye filer så finner scriptet de nye automatisk. Og du kan også slette og scriptet finner det ut selv. Bruk readdir() for å lese inn filene i mappen, se i manualen og følg det eksempelet men i steden for å echo så lagre det i en array. Bruk så mt_rand() for å finne et tilfeldig tall, og count() for å finne antallet filer. Så bruker du bare include for å hente innholdet fra filen. Lenke til kommentar
???????? Skrevet 1. august 2005 Del Skrevet 1. august 2005 hva med:<?php srand((double)microtime()*1000000); $rand = rand(0,10); include "path/til/filer/".$rand.".php"; ?> Så kaller du filene for 1.php, 2.php osv 1. srand er ikke lengre nødvendig 2. bruk mt_rand og ikke rand 3. $rand = rand(0,10); her må det oppdateres når brukeren legger til eller fjerner sitater. Lenke til kommentar
Magnus Holm Skrevet 1. august 2005 Del Skrevet 1. august 2005 1: Hvis man har > PHP 4.2 2: Har alltid brukt rand, jeg... Hva er forskjellen? 3: I know. Noen forslag til hvordan teller man hvor mange filer det er i en mappe? Lenke til kommentar
???????? Skrevet 1. august 2005 Del Skrevet 1. august 2005 PHP 4.2 er vel tre og et halvt år eller noe, så det burde ikke akuratt være et problem. mt_rand() gir rett og slett en beddre verdi. Du leser inn alle filene i en mappe med readdir(), og da kan du bare lagre disse i en array, så bruker du bare array_rand() for å velge en tilfeldig. Lenke til kommentar
Magnus Holm Skrevet 1. august 2005 Del Skrevet 1. august 2005 (endret) <?php $handle = opendir('path/to/files'); while (false !== ($file = readdir($handle))) { $array[] = $file; $i++ } echo array_rand($array); ?> Sånn? (Har ikke PHP på denne pc'en ) EDIT: Glemte code-tag Endret 1. august 2005 av Judofyr Lenke til kommentar
???????? Skrevet 1. august 2005 Del Skrevet 1. august 2005 Tja... men hvorfor fjerner du ikke like godt $i? $array[] = "Hei"; // $array[0] er da Hei $array[] = "Hallo"; // $array[1] er da Hallo Eventuelt så kan du jo sjekke at det ikke er mapper, men faktisk filer. Kun aktuelt dersom du har undermapper i den mappen. Lenke til kommentar
andm Skrevet 1. august 2005 Forfatter Del Skrevet 1. august 2005 Jeg har tilgang til databaser, men jeg tenkte at dette blir en knotete måte å legge inn sitater på. Hvordan bruker jeg databaser til å løse dette, da? Lenke til kommentar
Gilbert Skrevet 1. august 2005 Del Skrevet 1. august 2005 SELECT * FROM quotes ORDER BY rand() LIMIT 1 Så bør du kanskje merke deg når et sitat var sist brukt, slik at du ikke får det samme to dager på rad. Lagre dato for sist brukt eller no, og bruker ORDER BY last_view DESC, rand() eller no. Lenke til kommentar
andm Skrevet 1. august 2005 Forfatter Del Skrevet 1. august 2005 Jeg har lite erfaring med PHP-koding og MySQl-databaser, så kan du være så snill å være litt mer grundig med forklaringen din? 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å