PHP: Помощ за php скрипт

Това е друг код (предполагам с него правиш първите записи във файла?), но ще тръгнем от тук.
Няколко неща не разбирам, други могат да станат по елегантно:

$zapis = $ime.'&<a href="http://'.$link.'">DownloaD</a>&'.$ip.'<a href="http://'.$ip.'">»</a>'."\n";
# '<a href=http://$ip>»</a>'


Тук е малка каша... Имаш променлива, чиято стойност е низ, който е цяло безумие от отварящи и затварящи знаци... За парсера частта в червено е нещо пуснато отникъде, което не разбира, защото ; след знака за нов ред означава край на израз, а твоят продължава. Освен това изразите се ограждат обикновено в единични или двойни кавички. Няма страшно, ще привикнеш да следиш за тези неща ;)

Този ред трябва (и може) да изглежда така:

$zapis = "$ime&<a href='http://$link'>DownloaD</a>&$ip<a href='http://$ip'>»</a>\n# <a href=http://$ip>»</a>"

По-надолу не виждам друг проблем. Притеснява ме обаче, че тук записваш низа на два реда - \n в средата на низа. Ако тези два реда попадат в същия файл, който листваме (и според твоите вътрешни връзки трябва да върви в пакет при триенето), вече получаваш първата причина за разминаването.
Пробвай да видиш дали ще ти даде проблем или ще направи записа и пусни следващия скрипт.

И още нещо: съществува ли файла, в който записваш? Ако не, трябва да зададеш стойност а+ при отварянето на файла за запис. Моят съвет при стойност "а" е да използваш разширената й алтернатива "а+" - разликата е единствено в това, че не само пише в края на съществуващ файл, но може и да го създава, ако липсва...

Чакам следващия код! :)
 
Ок, грешка. Извинявай!
Минах машинално през кода и приех, че това е символа, който използваш, за да делиш реда.

Значи записът ти ще е така:

$zapis = "$ime&<a href='http://$link'>DownloaD</a>&$ip<a href='http://$ip'>»</a>\n"

Просто ограждай с кавички.
 
del.php
Код:
<? 
$filelocation="db.inc"; 
$fm=file("$filelocation"); 

$kolko=count($fm); 

$newfile = fopen($filelocation,"w+"); 
fclose($newfile); 

for ($i=0; $i<$kolko; $i++){ 
if ($i==$id) continue; 
$red=$fm[$i]; 
$newfile = fopen($filelocation,"a+"); 
fwrite($newfile, "$red"); 
fclose($newfile); 
} 

echo "Редът е изтрит успешно!"; 
?>
list.php
Код:
<? 
if (file_exists ("db.inc")) { 

$filelocation="db.inc"; 
$fm=file("$filelocation"); 

$kolko=count($fm); 

for ($i=0; $i<$kolko; $i++){ 
$red=$fm[$i]; 
echo "<BR>$red .............. <A HREF='del.php?id=$i'>Изтриване!</A>"; 
} 
} 
else { 
echo "<BR>Няма направени записи!"; 
} 
?>
 
В лист и дел не виждам нищо обезпокоително.

Първия код тръгна ли? Направи ли запис?
Запиши няколко реда в db.inc и ми пусни съдържанието му да видя как изглежда.
 
Moga li da triq? В смисъл, записите ти са само примерни?

Ще изтрия rrr&....

Дава проблем. А НЕ ТРЯБВА! Виж стойността на ид в адрес-бара, когато посочиш линка. Първия елемент на масива е 0, после 1, 2 и т.н

Отвори текстовия файл през хоста си и ми го копирай, включително с празните редове. И постави записа на новия ред в началото на израза, който записваш.

Виж, докато не оправим проблема, не го пускай кода за ползване. А ще го оправим :) Открием ли какво се случва, ако трябва ще ти напиша по-различен скрипт. Горе главата! Само да го хванем къде е :)

_____________________
Сега, признавам - ПИПАМ НАСЛЯПО:

Първото, което ме съмнява е празен ред в записа или разчленяване на записите, които правиш затова, искам да ми листнеш дб.инк с този код:

<?
$filelocation="db.inc";
$fajl= fopen($filelocation,"r");
$tekst = fread($fajl,filesize($filelocation));
fclose($fajl);
echo nl2br($tekst);
?>

Това е стандартен код за четене на файл и изписване на съдържанието му. Функцията в червено ще изпише <БР> на всеки нов ред. Нуждая се от това. Запиши скрипта в нов файл в същата директория под каквото и да е име и ми дай връзка към него. Не пиши допълнителен код към скрипта - нека всичко е чисто.

_______________

Пак въртях комбинации в демото - там не дава проблем, а е вързан със същата форма, както и твоя скрипт (ВСЪщНОСТ, ПУСНИ МИ кода на форма.пхп и на едит.пхп). Разминаването става или заради начина, по който правиш основните записи във файла или си добавил нещо към формата.

Записа ли новия код за листване?
 
Eтова е съдържанието във файла който ползвам:

demo&<a href="http://">DownloaD</a>&87.126.185.144<a href="http://87.126.185.144"> »</a>
demo2&<a href="http://">DownloaD</a>&87.126.185.144<a href="http://87.126.185.144"> »</a>
demo3&<a href="http://">DownloaD</a>&87.126.185.144<a href="http://87.126.185.144"> »</a>
rrr&<a href="http://">DownloaD</a>&87.126.185.144<a target="_blank" href="http://87.126.185.144"> »</a>
demo4&<a href="http://">DownloaD</a>&87.126.185.144<a target="_blank" href="http://87.126.185.144"> »</a>
демо&<a href="http://демо">DownloaD</a>&87.126.185.144<a target="_blank" href="http://87.126.185.144"> »</a>
1&<a href="http://1">DownloaD</a>&87.126.185.144<a target="_blank" href="http://87.126.185.144"> »</a>
2&<a href="http://2">DownloaD</a>&87.126.185.144<a target="_blank" href="http://87.126.185.144"> »</a>

можеш да го погледнеш тук :?

################################

Ето листването с функцията нл2бр ТУК

Ето кодовете :

forma.php

Код:
<? 
$filename="db.inc"; 
$fp = fopen($filename, "r"); 
$text = fread($fp,filesize($filename)); 
fclose($fp); 
echo "
<FORM METHOD=POST ACTION=edit.php> 
<div align=center><TEXTAREA NAME=text COLS=105 ROWS=15 WRAP=virtual class=boxstyle>$text</TEXTAREA></div> 
<div align=center><input type=submit class=buttonstyle value=Редактирай! onclick='this.disabled=1; this.form.submit();'></div>
<div class='style2' align=center><a href='index.php' class='style2'>Върни се в началото</a></div> 
"; 
?>

edit.php

Код:
<? 
$text=$HTTP_POST_VARS['text'];
$filelocation="db.inc"; 
$newfile = fopen($filelocation,"w+"); 
fwrite($newfile, "$text"); 
fclose($newfile); 
echo "<span class='style2'>Запис!</span>"; 
?>
 
Всъщност ще направим друго: вместо да трием реда, ще го изпишем, заедно с ид-то му. Така ще повторим алгоритъма в лист.пхп имам чувството, че подусловието if ($i==$id) continue; не получава стойност. Как вземаш стойността на ид в дел.пхп?

Чакай, не пипай нищо - формата едва ли е проблема. Проблема е в цикъла. Ще добавиш нещио към него, сек.

Добави този ред на първия ред в скрипта на дел.пхп:

$id=$HTTP_GET_VARS['id'];

Обикновено той е излишен, но нека ползваме регистъра, който сървъра ти поддържа на изпратените променливи...

А към:
echo "Редът е изтрит успешно!";
добави променлива:

echo "Ред $id е изтрит успешно!";
 
Всичко го взимам от моя хост.
Като трябва да сменям .inc трябва на сички php скриптове да го сменя в съдържанието им.
Кога да го напрая това.
Сега или довечера?
###################################
del.php
Код:
<? 
$filelocation="db.inc"; 
$fm=file("$filelocation"); 

$kolko=count($fm); 

$newfile = fopen($filelocation,"w+"); 
fclose($newfile); 

for ($i=0; $i<$kolko; $i++){ 
if ($i==$id) continue; 
$red=$fm[$i]; 
$newfile = fopen($filelocation,"a+"); 
fwrite($newfile, "$red"); 
fclose($newfile); 
} 

echo "Редът е изтрит успешно!"; 
?>
 
DJCharge каза:
Според мен това
<a href='http://$link'>DownloaD</a>

е по-добре да го направиш
<a href='$link'>DownloaD</a>

.. а target='_blank' няма ли да ти трябва?

като го направя като червенкото както си казал става така:
(ако $link e http://data.bg)
http://моя.сайт/http://data.bg
бланк-а сам го сложил. :wink:

И Специални благодарности на sizif ,който 2 - 3 дена се занимаваше с тоя код и най накрая сичко е 6+ !!!
 
Smirnoff каза:
Мии аз на първата страница където се пише линка във формата съм сложил value="http://" да се знае :roll:
:lol: :lol:
Е да де.. ти направо им казваш "сложете грешен линк" :( :D
По-добре това http:// да е преди полето за писане, а не в него! :twisted:
(те пък ще вземат да си помислят, че трябва да добавят линк започващ с http://) :lol:

EDIT: добре ще е да сложиш проверки за полетата.. :)
 

Back
Горе