Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> uciekające znaczniki podziału ogłoszeń w pliku txt:(
andre991
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.12.2003
Skąd: Elbląg City

Ostrzeżenie: (0%)
-----


Poniżej przedstawie problem.
wszystko gra, lecz w momecie usuwania dowolnego ogloszenia (np 5-go ogłoszenia z pliku z danymi ) uciekają gdzieś wszystkie znaczniki oddzielające te ogłoszenia.
Przedstawie ponizej kody plików:

Plik: do usuwania ogloszenia:
[php:1:7415147dcc]<?php
$linia = addslashes($_REQUEST['linia']);
$table=file("adv/dane_data.php");
unset($table[$linia]);
for($n=0;$n<count($table);$n++)
{
$table[$n]=chop($table[$n]);
}
$cale=implode("rn"$table);
$open=fopen("adv/dane_data.php", "w");
fwrite($open,chop($cale));
fclose($open);

?>[/php:1:7415147dcc]

plik do zapisywania ogloszenia:
[php:1:7415147dcc]<?php
$url="http://adres ulr";
$base="adv/dane_data.php"; // zczytuje plik do zmiennej
$table=file($base); // wczytuje plik to tablicy

// zliczanie ogloszen
for($i=0; $i<count($table); $i++)// petla kreci na ostatnia linie
{
$wiersz=explode("*|*", $table[$i]);// wiersz przypisujemy ostatnia linie
}
$id = $wiersz[4]+1; //powieksza o jeden id z odtatniego wiersza
// koniec zliczania

$date=date("d-m-Y"); // przypisuje zmiennej date dzien miesiac i rok
$data="$id_og*|*$kontakt*|*$tekst*|*$date*|*$id*|*$cena"; //przypisuje
zmiennej data wszystkie dane z formularza
$data=str_replace("rn", "<br>", $data);
$data="$datan";
$f=fopen($base, a); // otwiera plik z base
flock($f, 2); // blokuje plik
fputs($f, $data); // zapisuje zmienne data
flock($f, 3); // odblokowuje plik
fclose($f); // zapisuje plik
echo "Wpis został dodany...<br><a href=$url>Pokaż wpisy</a>"; // wyswietla napis

?>[/php:1:7415147dcc]

Pozdrwaim
Go to the top of the page
+Quote Post
zombie
post
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zgubiłeś przecinek. w linii 9 masz:
[php:1:2f63cb6620]<?php
$cale=implode("rn"$table);
?>[/php:1:2f63cb6620]
a powinno być
[php:1:2f63cb6620]<?php
$cale=implode("rn", $table);
?>[/php:1:2f63cb6620]
Go to the top of the page
+Quote Post
andre991
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.12.2003
Skąd: Elbląg City

Ostrzeżenie: (0%)
-----


Cytat
Zgubiłeś przecinek. w linii 9 masz:
[php:1:f5a0398982]<?php
$cale=implode("rn"$table);
?>[/php:1:f5a0398982]
a powinno być
[php:1:f5a0398982]<?php
$cale=implode("rn", $table);
?>[/php:1:f5a0398982]


faktycznie zpomniałem dodać przecinka;] ale problem pozostaje:( doszedłem do wniosku iż plik odpowiadający za zapisanie danych do pliku dodaje go i na końcu umieszcza znacznik nowej lini "/n"" , a plik usuwający: dzieli dane z pliku na linie, i usuwa ten znacznik. No i w związku z tym proszę o pomoc.
Go to the top of the page
+Quote Post
zombie
post
Post #4





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


[php:1:6553689da3]<?php
fwrite($open,chop($cale));
?>[/php:1:6553689da3]
wywal chop()
[php:1:6553689da3]<?php
fwrite($open,$cale);
?>[/php:1:6553689da3]
Go to the top of the page
+Quote Post
andre991
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.12.2003
Skąd: Elbląg City

Ostrzeżenie: (0%)
-----


Cytat
[php:1:0622b2593d]<?php
fwrite($open,chop($cale));  
?>[/php:1:0622b2593d]
wywal chop()
[php:1:0622b2593d]<?php
fwrite($open,$cale);  
?>[/php:1:0622b2593d]


W sumie to nic nie zmieniło:) ale już chyba sobie poradziłem:
problem leżał w złym zapisywaniu danych do pliku przy usuwaniu, a konkretnie trzeba było dodać znak przejscia o linie nizej;]:

[php:1:0622b2593d]<?php
$linia = addslashes($_REQUEST['linia']);
$table=file("adv/dane_data.php");
unset($table[$linia]);
for($n=0;$n<count($table);$n++)
{
$table[$n]=chop($table[$n]);
}
$cale=implode("rn"$table);
$cale="$calern";
$open=fopen("adv/dane_data.php", "w");
fwrite($open,$cale);
fclose($open);
?>[/php:1:0622b2593d]

w kazdym bądź razie dziękuję za pomoc;]
pozdrawiam
Go to the top of the page
+Quote Post
zombie
post
Post #6





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
W sumie to nic nie zmieniło:) ale już chyba sobie poradziłem:  
problem leżał w złym zapisywaniu danych do pliku przy usuwaniu, a konkretnie trzeba było dodać znak przejscia o linie nizej;]:
[php:1:eabad096fc]<?php    
$cale="$calern";
?>[/php:1:eabad096fc]

a ja się upieram, że to przecinek przy implode. powyżej dodałeś tylko znak przejścia do linię niżej od ostatniej linii.
Go to the top of the page
+Quote Post
andre991
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.12.2003
Skąd: Elbląg City

Ostrzeżenie: (0%)
-----


Cytat
Cytat
W sumie to nic nie zmieniło:) ale już chyba sobie poradziłem:  
problem leżał w złym zapisywaniu danych do pliku przy usuwaniu, a konkretnie trzeba było dodać znak przejscia o linie nizej;]:
[php:1:d5fe4d9c0b]<?php    
$cale="$calern";
?>[/php:1:d5fe4d9c0b]

a ja się upieram, że to przecinek przy implode. powyżej dodałeś tylko znak przejścia do linię niżej od ostatniej linii.


Przyznaję rację ,że przecinek powinien się tam znajdować (i się już znalazł 8) ) ale poprostu człowiek zapomniał;]hehe No i dodałem znak końca lini ponieważ w momencie gdy usuwałem ostanie ogłoszenie to ten sktrypt usuwał wraz z nim ostatni znak przejścia do następnej lini i w konsekwencji w chwili dopisywania nowego ogłoszenia, zostawało ono dopisane do ostatniego ogłoszenia w pliku a nie w nowej ninii;]

teraz już wszystko gra i trąbi;]

[php:1:d5fe4d9c0b]<?php

$linia = addslashes($_REQUEST['linia']);
$table=file("adv/dane_data.php");
unset($table[$linia]);
for($n=0;$n<count($table);$n++)
{
$table[$n]=chop($table[$n]);
}
$cale=implode("rn",$table);
$cale="$calern";
$open=fopen("adv/dane_data.php", "w");
fwrite($open,$cale);
fclose($open);

?>[/php:1:d5fe4d9c0b]

pozdrawiam

Ps. powiedz mi jeszcze czemu wcześniej ten chop miał być usunięty??
Go to the top of the page
+Quote Post
zombie
post
Post #8





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


[manual:5f49d98689]chop[/manual:5f49d98689] to alias do [manual:5f49d98689]rtrim[/manual:5f49d98689], a więc usuwa znaki podziału /r/n. Dodawałeś je, a później usuwałeś przy zapisie. :wink:
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:40