corsa91 Skrevet 19. november 2010 Del Skrevet 19. november 2010 (endret) Hei Jeg har fått en oppgave der man skal Side 1 Denne siden skal vise alle endringene som er gjort på en ekstern fil. Det har jeg fått til. Side 2 skal en enkelt linje i filen slettes. Linjenummeret må oppgis via en tekstboks. Når en knapp trykkes leses filen inn i f.eks et array (linje for linje). Deretter slettes riktig element i arrayet og arrayet skrives tilbake til filen hvor alt overskrives. Slettefunksjonaliteten på side 5 kan evt. gjøres på samme side som 4 dersom dere synes det er mer hensiktsmessig. Hvordan skal jeg få til dette? Endret 21. november 2010 av corsa91 Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 Ingen som kan svare? Lenke til kommentar
Nickless Skrevet 20. november 2010 Del Skrevet 20. november 2010 Lenge siden jeg har holdt på med PHP, men uansett...Går det ikke ann å bare lese antall "\n" evt </br> (finnes kanskje funksjoner som finner dette ut for deg?) i filen for å finne ut hvor mange linjeskift det er i filen? Når du har funnet ut av det oppretter du et array som som er stor nok til å håndtere X antall linjer (eventuellt en list?). Når alle linjene er på plass kan du ikke da bare slette den opprinngelige filen som du har hentet linjene ifra, deretter slette linjenummeret som skal slettes og skrive array/liste-elemenetene tilbake linje for linje i en ny-opprettet fil med samme navn som den opprinnelige. Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 jepp men hvordan skal jeg gjøre det? Lenke til kommentar
Warz Skrevet 20. november 2010 Del Skrevet 20. november 2010 Først bruker du fopen() eller noe til å åpne filen, gå så igjennom alle linjene i en løkke, noe slikt: while($line != null) { $din_array_her[] = $line; } Det som vil skje nå er at du får en array nummerert fra 0 og oppover. Så er det bare å gjøre slik: unset($din_array_her[NUMMERET+1]); Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 Fungerer dette? $filref=fopen("side3fil.php","r"); fwrite($filref,"$meldinger"); fclose($filref); $filref=fopen("side3fil.php","w"); $filstring=fgets($filref); echo "Her er innholdet av filen : $meldinger <br/>".$filstring; $filstring=fgets($filref); echo $filstring; fclose($filref); Men hvordan skal jeg få slik at når du oppgir tallet så skal den arrayet slette den? Lenke til kommentar
Warz Skrevet 20. november 2010 Del Skrevet 20. november 2010 Fungerer dette? $filref=fopen("side3fil.php","r"); fwrite($filref,"$meldinger"); fclose($filref); $filref=fopen("side3fil.php","w"); $filstring=fgets($filref); echo "Her er innholdet av filen : $meldinger <br/>".$filstring; $filstring=fgets($filref); echo $filstring; fclose($filref); Skal vi se... $filref=fopen("side3fil.php","r"); Du begynner med å åpne side3fil.php ja... den er jo grei. fwrite($filref,"$meldinger"); Okeeeeii....? Her velger du altså å skrive til filen, og hva skriver du til filen, jo en helt tom variabel! $meldinger er jo ikke definert noe sted, med andre ord så sletter du innholdet i hele filen her. Så nei, dette er ikke riktig. For å lese en fil gjør du slik: <?php $file_handle = fopen("side3fil.php", "r"); while (!feof($file_handle)) { $line_of_text = fgets($file_handle); echo $line_of_text . "<br />"; } fclose($file_handle); ?> feof sjekker om du har kommet til enden av filen. Så lenge du ikke har gjort det (utropstegnet betyr NOT) så leser den linje etter linje... Men hvordan skal jeg få slik at når du oppgir tallet så skal den arrayet slette den? Vel, da må du jo først lage en html form så kommer variabelen med tallet inn... la oss si den blir lagret i variabelen $tall. da gjør du slik: unset($din_array_her[$tall+1]); Etterpå må du gå igjennom arrayen og skrive hver linje til filen. Men før du kommer så langt kan du jo sjekke at alt fungerer ved å skrive: echo '<pre>'; print_r($din_array_her); echo '</pre>; Den skriver ut alle verdier og ider i arrayen. Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 Kan du kontakte meg via PM så kan jeg sende deg hele skripten over slik at du kan skjekke? Lenke til kommentar
Warz Skrevet 20. november 2010 Del Skrevet 20. november 2010 Kan du ikke bare legge scriptet her eller her ? Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 (endret) Kan du ikke bare legge scriptet her eller her ? Det er på totalt 5 sider men jeg legger ut det viktigste http://pastebin.ca/1997519 Dette er side 3 Her er den jeg trenger hjelp med. Her har jeg lagt inn litt av hvert. Fant noe på nett men skjønte ikke det helt http://pastebin.ca/1997520 Endret 20. november 2010 av corsa91 Lenke til kommentar
Warz Skrevet 20. november 2010 Del Skrevet 20. november 2010 (endret) Du trenger bare å legge ut den delen som har med dette å gjøre da... kan jo ikke være så mange linjene med kode... eventuelt dump alt ned i en og samme pastebin url, null stress det.... edit: Ok ser den nå, men du har jo ikke endret noe enda? edit2: Jeg ser fil nummer 2, men tror du har misforstått litt, det var bare et eksempel, psudokode, det første jeg skrev... men !feof skal fungere fint så du må bare gjøre noe slik...: <?php // Fjerner linje 4: $tall = 4; $file_handle = fopen("side3fil.php", "r"); while (!feof($file_handle)) { $din_array_her[] = fgets($file_handle); } fclose($file_handle); unset($din_array_her[$tall-1]); echo '<pre>'; print_r($din_array_her); echo '</pre>'; ?> Endret 20. november 2010 av Warz Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 (endret) Det er den siste som trengs å endres. http://pastebin.ca/1997520 Men kan du gjøre det og forklare det slik at jeg skjønner Endret 20. november 2010 av corsa91 Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 Du trenger bare å legge ut den delen som har med dette å gjøre da... kan jo ikke være så mange linjene med kode... eventuelt dump alt ned i en og samme pastebin url, null stress det.... edit: Ok ser den nå, men du har jo ikke endret noe enda? edit2: Jeg ser fil nummer 2, men tror du har misforstått litt, det var bare et eksempel, psudokode, det første jeg skrev... men !feof skal fungere fint så du må bare gjøre noe slik...: // Fjerner linje 4: $tall = 4; $file_handle = fopen("side3fil.php", "r"); while (!feof($file_handle)) { $din_array_her[] = fgets($file_handle); } fclose($file_handle); unset($din_array_her[$tall+1]); echo '<pre>'; print_r($din_array_her); echo '</pre>'; Kan du ikke si hvordan ? Lenke til kommentar
corsa91 Skrevet 20. november 2010 Forfatter Del Skrevet 20. november 2010 (endret) Nå har du de viktigste filene. Resten er jo det samme. Så du kan bare skrive inn. Har stresset med den oppgaven i hele dag. Ikke lett for en nybegynner. Endret 20. november 2010 av corsa91 Lenke til kommentar
Warz Skrevet 20. november 2010 Del Skrevet 20. november 2010 Surra litt tidligere, skal selvsagt være MINUS 1 og ikke pluss Koden jeg har postet nå fungerer. Her er forklaringen: $tall = 4; Ok vi skal fjerne linje nummer 4, da setter vi denne variabelen, du vil kanskje heller sette $tall = $_POST['tall']; eller noe, for å hente ut det bruker skriver inn. $file_handle = fopen("side3fil.php", "r"); Du åpner fil og lagrer denne koblingen*/pekeren til filen i variabelen $file_handle; $file_handle peker liksom på filen og hvilken linje du er på. while (!feof($file_handle)) Nå sjekker vi om $file_handle er kommet til siste linje. Altså så lenge vi IKKE er på siste linje skal denne loopen kjøres... $din_array_her[] = fgets($file_handle); Her legger vi da linjen inn i arrayen. Siden vi skriver [] på slutten vil den øke med 1. Altså, først legger den inn i $din_array_her[0], neste legges inn i $din_array_her[1], osv... fclose($file_handle); stenger filen unset($din_array_her[$tall-1]); Her sletter vi variabelen med nummer $tall-1, altså 3... kunne likegjerne skrevet unset($din_array_her[3]); her... echo '<pre>'; print_r($din_array_her); echo '</pre>'; Skriver ut hele arrayen, og som du ser har vi nå fjernet linje nummer 4. Da gjenstår det bare å skrive denne arrayen til filen. Lenke til kommentar
corsa91 Skrevet 21. november 2010 Forfatter Del Skrevet 21. november 2010 <?php session_start(); echo "<h3>Dette er side 5</h3>"; $tall = 4; $file_handle = fopen("side3fil.php", "r"); while (!feof($file_handle)) { $din_array_her[] = fgets($file_handle); } fclose($file_handle); unset($$liste[$tall-1]); echo '<pre>'; print_r($liste); echo '</pre>'; $liste = array($1,$2,$3,$4,$5,$6,$7,); $1 = "Navn : ".$_SESSION["Navn"]. "\r\n"; $2 .= "Adresse : ".$_SESSION["Adresse"]. "\r\n"; $3 .= "Epost : ".$_SESSION["Epost"]. "\r\n"; $4 .= "Telefonnummer : ".$_SESSION["Telefonnummer"]. "\r\n"; $5 .= "Du er : ".$_SESSION["kunde"]. "\r\n"; $6 .= "Du har valgt spørsmåltype : ".$_SESSION["type"]. "\r\n"; $7 .= "Din beskjed : ".$_SESSION["beskjed"]."\r\n"; ?> <input type="submit" name="Knapp" value=" Bekreft " /> <textarea name="beskjed" rows="1" cols="5">Nr</textarea> Er det sånn ??? Lenke til kommentar
Warz Skrevet 21. november 2010 Del Skrevet 21. november 2010 Nå har du de viktigste filene. Resten er jo det samme. Så du kan bare skrive inn. Har stresset med den oppgaven i hele dag. Ikke lett for en nybegynner. Bare skrive inn? hehe... Kan du ikke bare gå opp til læreren din og gi ham all koden å si "her har du koden lærer, så kan du bare skrive inn!". Tror han hadde blitt litt lang i maska da... Du har jo allerede fått en fasit i dag... Jeg har selv vært nybegynner så jeg vet hvor greit det er å få fasit overlevert, men nå har jeg da begynt å lese fasiten nøye sånn at jeg skjønner alt som står der. Kan jo ikke akkurat kode alt for deg da lærer du jo ingen ting. Nå har du jo fått servert alt på fat her, så det burde vel ikke være en så big deal å fullføre den lille resten med å skrive til fil. Det finnes plenty av eksempler på nett om hvordan dette gjøres også... $liste = array($1,$2,$3,$4,$5,$6,$7,); $1 = "Navn : ".$_SESSION["Navn"]. "\r\n"; $2 .= "Adresse : ".$_SESSION["Adresse"]. "\r\n"; $3 .= "Epost : ".$_SESSION["Epost"]. "\r\n"; $4 .= "Telefonnummer : ".$_SESSION["Telefonnummer"]. "\r\n"; $5 .= "Du er : ".$_SESSION["kunde"]. "\r\n"; $6 .= "Du har valgt spørsmåltype : ".$_SESSION["type"]. "\r\n"; $7 .= "Din beskjed : ".$_SESSION["beskjed"]."\r\n"; ?> <input type="submit" name="Knapp" value=" Bekreft " /> <textarea name="beskjed" rows="1" cols="5">Nr</textarea> Er det sånn ??? Kan du forklare hva du har tenkt her.. jeg skjønner ikke sammenhengeng... hva som er meningen med denne koden... ? Lenke til kommentar
corsa91 Skrevet 21. november 2010 Forfatter Del Skrevet 21. november 2010 (endret) Problemet er at dette er min første oppgave som jeg skal få til å slette via en tekstboks. Og det har jeg ikke skjønt noe av. Har ikke gått igjennom noe av det. Har jo sett de eksemplene på nettet Nå har du de viktigste filene. Resten er jo det samme. Så du kan bare skrive inn. Har stresset med den oppgaven i hele dag. Ikke lett for en nybegynner. Bare skrive inn? hehe... Kan du ikke bare gå opp til læreren din og gi ham all koden å si "her har du koden lærer, så kan du bare skrive inn!". Tror han hadde blitt litt lang i maska da... Du har jo allerede fått en fasit i dag... Jeg har selv vært nybegynner så jeg vet hvor greit det er å få fasit overlevert, men nå har jeg da begynt å lese fasiten nøye sånn at jeg skjønner alt som står der. Kan jo ikke akkurat kode alt for deg da lærer du jo ingen ting. Nå har du jo fått servert alt på fat her, så det burde vel ikke være en så big deal å fullføre den lille resten med å skrive til fil. Det finnes plenty av eksempler på nett om hvordan dette gjøres også... $liste = array($1,$2,$3,$4,$5,$6,$7,); $1 = "Navn : ".$_SESSION["Navn"]. "\r\n"; $2 .= "Adresse : ".$_SESSION["Adresse"]. "\r\n"; $3 .= "Epost : ".$_SESSION["Epost"]. "\r\n"; $4 .= "Telefonnummer : ".$_SESSION["Telefonnummer"]. "\r\n"; $5 .= "Du er : ".$_SESSION["kunde"]. "\r\n"; $6 .= "Du har valgt spørsmåltype : ".$_SESSION["type"]. "\r\n"; $7 .= "Din beskjed : ".$_SESSION["beskjed"]."\r\n"; ?> <input type="submit" name="Knapp" value=" Bekreft " /> <textarea name="beskjed" rows="1" cols="5">Nr</textarea> Er det sånn ??? Kan du forklare hva du har tenkt her.. jeg skjønner ikke sammenhengeng... hva som er meningen med denne koden... ? Det er arrayet. Trenger en sånn knapp at når du skriver inn et tall og trykker bekreft så skal den gå inn slette også lagre Endret 21. november 2010 av corsa91 Lenke til kommentar
Warz Skrevet 21. november 2010 Del Skrevet 21. november 2010 Ok, her har du fasit: <?php session_start(); if($_POST) { $tall = $_POST['linjenr']; $filnavn = "side3fil.php"; $file_handle = fopen($filnavn, "r"); while (!feof($file_handle)) { $coarsy[] = fgets($file_handle); } fclose($file_handle); unset($coarsy[$tall-1]); $file_handle = fopen($filnavn, "w"); foreach($coarsy as $coarsyboy) { fwrite($file_handle, $coarsyboy); } fclose($file_handle); echo 'Linje har blitt slettet. Nå kan du åpne '.$filnavn.' og se forandringen! Den fryder '; } else { echo 'Skriv inn tall og trykk "Slett linje!"<br/>'; } ?> <form action="" method="post"> Linje Nr: <input type="text" name="linjenr" value="" /> <input type="submit" name="submit" value="Slett linje!" /> </form> Lenke til kommentar
corsa91 Skrevet 21. november 2010 Forfatter Del Skrevet 21. november 2010 Tusen hjertelig takk. Du redda meg. Fristen for å levere dette inn er 02.00 Jeg skal lære av det. Er ikke den typen som bare kopierer. I dag skal jeg sitte å prøve å skjønne det du har skrevet. 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å