Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edytowanie news'a
Forum PHP.pl > Forum > Gotowe rozwiązania
Ive
Mam system newsów i zapisuje te newsy do jednego pliku news.txt w postaci:
Kod
$nr|*|/*|$nick|*|/*|$emb|*|/*|$temat|*|/*|$data|*|/*|$trescn

i jak teraz zrobić edytor do tych newsów że np podaje numer news'a a on mi wyszukuje go w tablicy i wyświetla (np. w takim stylu że:
Kod
Nick <input type=text name=nick value=$nick><br>

Emblemat <input type=text name=emb value=$emb><br>

...

bardzo proszę o pomoc
dob
[php:1:fbae1547fe]<?php
$tablica=file("news.txt");
$ile=count($tablica);


$czesc=explode("|*|/*|", $tablica[$_GET['id']]);

echo "Nick <input type='text' name='nick' value='".$czesc[1]."'><br>
Emblemat <input type='text' name='emb' value='".$czesc[2]."' <br>";
?>[/php:1:fbae1547fe]

Może będzie działać laugh.gif pamietaj ze w php liczy sie od 0, zmienne sobie jakoś przygotuj do wyswietlania (np. stripslashes(), trim() itp.)

PS żeby zobaczyc w formularzu zawartosć którejś linii z pliku txt musisz wejsć w plik php ze zmienną w adresie o numerze lini w pliku (pamietaj że liczymy od zera). Przykładowy adres index.php?id=0 (dla pierwszej linijki)
Ive
Cytat
[php:1:de7f7ddb2a]<?php
$tablica=file("news.txt");
$ile=count($tablica);


$czesc=explode("|*|/*|", $tablica[$_GET['id']]);

echo "Nick <input type='text' name='nick' value='".$czesc[1]."'><br>  
Emblemat <input type='text' name='emb' value='".$czesc[2]."' <br>";
?>[/php:1:de7f7ddb2a]

Może będzie działać  :lol:  pamietaj ze w php liczy sie od 0, zmienne sobie jakoś przygotuj do wyswietlania (np. stripslashes(), trim() itp.)

PS żeby zobaczyc w formularzu zawartosć którejś linii z pliku txt musisz wejsć w plik php ze zmienną w adresie o numerze lini w pliku (pamietaj że liczymy od zera). Przykładowy adres index.php?id=0 (dla pierwszej linijki)

dzieki dob ;]
Ive
A jak teraz napisać kod żeby nadpisywał mi tą zmieniona już linię w pliku ? :?
dob
ja to robilem na zasadzie 2 pętli tzn wpierw usuwam z tablicy element o numerze linii edytowanej, od 0 do posta którego edytujesz - 1 pętelką wrzucam wszystko do tablicy następnie za linijkę którą edytuje również wrzucam do tablicy (z nowymi danymi) potem o dnumeru lini edytowany+1 pętlą wrzucałem niezmienione linijki to tablicy a poźniej zapisywałem tablice tutaj przykład kodu :
[php:1:6741089b43]<?php
$tablica=file($plik);
$ile=count($tablica);
$nr=$_POST['edit'];
unset($tablica[$nr]);
for($i=0; $i<=$nr-1; $i++){
$tab[]=$tablica[$i];
}
$tab[]=$nr."|*|/*|".$nick."|*|/*|".$emb."|*|/*|".$temat."|*|/*|".$data."|*|/*|".$tresc."n";
for($i=$nr+1; $i<=$ile-1; $i++){
$tab[]=$tablica[$i];
}
$fp=fopen($plik, "w");
flock($fp, 2);
fwrite($fp, str_replace("r", '', implode('', $tab)));
flock($fp, 3);
fclose($fp);
?>[/php:1:6741089b43]
Ive
heh nie działa mi to sad.gif
dob
bo to jest wklejone z jakiegoś mojego pliku, w formularzu musisz mie ukryte pole o wartosci edytowanego newsa - czyli tego samego co w formularzu itp. Pokombinuj z tym a będzie ci działało
Ive
Cytat
bo to jest wklejone z jakiegoś mojego pliku, w formularzu musisz mie ukryte pole o wartosci edytowanego newsa - czyli tego samego co w formularzu itp. Pokombinuj z tym a będzie ci działało

zrobiłem tak:
plik edit_news.php:
[php:1:703b7f09ec]<?php
$tablica=file("news.txt");
$ile=count($tablica);
$_GET['id'] = $_GET['id'] -1;

$czesc=explode("|*|/*|", $tablica[$_GET['id']]);

echo "<form method=post action=zamiana.php?nr=$id>
Nick ".$czesc[1]."<input type=hidden value=".$czesc[1]." name=nick><br>
Emblemat <input type='text' name='emb' value='".$czesc[2]."'><br>
Temat <input type=text name=temat value=".$czesc[3]."><br>
Data <input type=text name=data value=".$czesc[4]."><br>
Treść <textarea name=tresc cols=25 rows=10>".$czesc[5]."</textarea><br>
<input type=submit value=Ok>";

?>[/php:1:703b7f09ec]

plik zamiana.php:
[php:1:703b7f09ec]<?php

$plik = "news.txt";
$tablica=file($plik);
$ile=count($tablica);
$nr=$_POST['edit'];
unset($tablica[$nr]);
for($i=0; $i<=$nr-1; $i++){
$tab[]=$tablica[$i];
}
$tab[]=$nr."|*|/*|".$nick."|*|/*|".$emb."|*|/*|".$temat."|*|/*|".$data."|*|/*|".$tresc."n";
for($i=$nr+1; $i<=$ile-1; $i++){
$tab[]=$tablica[$i];
}
$fp=fopen($plik, "w");
flock($fp, 2);
fwrite($fp, str_replace("r", '', implode('', $tab)));
flock($fp, 3);
fclose($fp);

?>[/php:1:703b7f09ec]
nie wiem wg mnie wszyscho dobrze zrobiłem ale on zamienia mi tą linię ale wstawia ją na początku ;/
dob
[php:1:74ad4907da]<?php
$plik = "news.txt";
$tablica=file($plik);
$ile=count($tablica);
$nr=$_GET['id'];
unset($tablica[$nr]);
for($i=0; $i<=$nr-1; $i++){
$tab[]=$tablica[$i];
}
$tab[]=$_POST['nr']."|*|/*|".$_POST['nick']."|*|/*|".$_POST['emb']."|*|/*|".$_POST['temat']."|*|/*|".$data."|*|/*|"
.$tresc."n";
for($i=$nr+1; $i<=$ile-1; $i++){
$tab[]=$tablica[$i];
}
$fp=fopen($plik, "w");
flock($fp, 2);
fwrite($fp, str_replace("r", '', implode('', $tab)));
flock($fp, 3);
fclose($fp);
?>[/php:1:74ad4907da]

Jakl to nei będzie działało to napisz do mnie na priva to ci napisze przykład cały
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.