Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объсните как это работает
 
 автор: unded   (03.06.2005 в 11:36)   письмо автору
 
 

Вот есть фрагмент гостевой книги
Объясните пожалуйста по шагам как он работает
1 | <?
2 | $count=$i;
3 | $count1=$count;
4 | if (empty($start))
5 | {
6 | $start=0;
7 | }
8 | $start=intval($start);
9 | if($start<0)
10| {
11| $start=0;
12| }
13| print "<center>";
14| if ($count>$start+10) $count=$start+10;
15| if ($start !=0)
16| {
17| print "<A href=index.php?start=".($start-10).">Предыдущие</A>";
18| }
19| print "<a href=addrec.php>Добавить запись</A>";
20| if ($count>$start+10)
21| {
22| print "<A href=index.php?start=".($start+10).">Следующие</A>\n";
23| }
24| print "</center><br>";
25| ?>

   
 
 автор: cheops   (03.06.2005 в 12:24)   письмо автору
 
   для: unded   (03.06.2005 в 11:36)
 

Это элемент постраничной навигации
4 - проверяем не пуст ли параметр $start, который передаётся через строку запроса и обозначает позицию, начиная с которой выводятся сообщения. Если пуст, то присваиваем ему ноль
8 - приводим параметр $start к целому числу, на тот случай, если передана строка
9 - проверяем не передано ли в $start отрицательное значение
15 - если $start не равен нулю, значит имеются предыдущие значения - выводим на них ссылку
20 - если количество сообщений больше чем увеличенная на 10 (число сообщений на странице) текущая позиция, значит имеются следующие сообщения - выводим соответствующую ссылку.

PS Лучше воспользоваться постраничной навигацией, в гостевой книге с использованием MySQL, которую можно свободно загрузить из раздела downloads http://www.softtime.ru/info/gbzc.php - там она более прозрачная и лучше откомментирована.

   
 
 автор: unded   (03.06.2005 в 17:47)   письмо автору
 
   для: cheops   (03.06.2005 в 12:24)
 

до этого переменная $start нигде не описывается
откуда он берется

   
 
 автор: Akira   (03.06.2005 в 18:04)   письмо автору
 
   для: unded   (03.06.2005 в 17:47)
 


 <?
$count
=$i;
$count1=$count;
if (empty(
$start)) # Если переменной $start не существует функция (empty проверяет это),
  
{
    
$start=0# то приравниваем $start к нулю.
  
}
   
$start=intval($start);
if(
$start<0# Если $start меньше нуля, то обнуляем.
   
{
      
$start=0;
    }

   
 
 автор: unded   (03.06.2005 в 18:08)   письмо автору
 
   для: Akira   (03.06.2005 в 18:04)
 

пременная $start первый раз объявляется здесь
if (empty($start))
каким образом в нее передается значение

   
 
 автор: Sergey89   (03.06.2005 в 19:00)   письмо автору
 
   для: unded   (03.06.2005 в 18:08)
 

Из внешней переменной, переданной через url.

   
 
 автор: Akira   (03.06.2005 в 19:10)   письмо автору
 
   для: unded   (03.06.2005 в 18:08)
 

В данном случае if (empty($start)) в нее не передаеться значение , а проверяться.
Т.е. содержит ли $start какое либо значение. Если нет , то она пуста и ее нужно инициализировать.

   
 
 автор: cheops   (03.06.2005 в 19:30)   письмо автору
 
   для: unded   (03.06.2005 в 17:47)
 

Она берётся из строки URL, если URL будет иметь вид
http://www.mysite.ru/index.php?start=10
то в файле index.php переменная $start примет значение 10, если конечно это разрешено в конфигурационном файле, если нет, придётся обращаться к суперглобальному массиву $_GET['start'].

   
 
 автор: unded   (03.06.2005 в 21:07)   письмо автору
 
   для: cheops   (03.06.2005 в 19:30)
 

Могу ли я обращаться к массиву $_GET если в форме использую
метод POST

   
 
 автор: Tristan   (03.06.2005 в 21:18)   письмо автору
 
   для: unded   (03.06.2005 в 21:07)
 

Нет конечно :) Массив $_GET берет значения из адресса, а массив $_POST берет значения переменных из тела заголовка.

   
 
 автор: Akira   (03.06.2005 в 21:18)   письмо автору
 
   для: unded   (03.06.2005 в 21:07)
 

Насколько я помню нет.

$_POST - для post
$_GET - для get

Да и не обязательно использовать $_POST или $_GET.
Я просто использую имена переменных.

   
 
 автор: Tristan   (03.06.2005 в 21:20)   письмо автору
 
   для: Akira   (03.06.2005 в 21:18)
 

>Да и не обязательно использовать $_POST или $_GET.
>Я просто использую имена переменных.
Это зависит от настроек php

   
 
 автор: Akira   (03.06.2005 в 21:23)   письмо автору
 
   для: Tristan   (03.06.2005 в 21:20)
 

Смотря какой хост =) В большинстве это включено =) Register globals = on
Если мне не изменяет память ;)

   
 
 автор: unded   (03.06.2005 в 21:27)   письмо автору
 
   для: Akira   (03.06.2005 в 21:23)
 

ОК хорошо спасибо я попробую

   
 
 автор: Akira   (03.06.2005 в 23:14)   письмо автору
 
   для: unded   (03.06.2005 в 21:27)
 

index.php

<form action=test.php>
<input type=text name=imya />
<input type=submit />
</form>

test.php

<? 
echo $imya # При включенном режиме  Register globals = on переменная $imya будет доступна в это виде не зависимо от того каким способом (POST или GET)
?>

PS Когда пишите на email, то указывайте обратный адрес.

   
 
 автор: unded   (06.06.2005 в 17:25)   письмо автору
 
   для: Akira   (03.06.2005 в 23:14)
 

я поменял register globals= on
но я по прежнему не могу понять откуда $start получает значение
тоесть к примеру
вот у меня есть форма

<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="example.php">
<input type="Text" name="s1"><br>
<input type="Text" name="s2"><br>
<input type="Submit" value="go">
</form>
</body>
</html>

вот скрипт
<?
if ($s1>$s2){echo ("ok");}
else {echo (bad);}
?>
вот урл
http://localhost/proba1.php?s1=&s2=

в данном случае я сам ввожу значения $s1 и $s2
что же касается $start то непонятно откуда она получает значение

   
 
 автор: Akira   (06.06.2005 в 19:10)   письмо автору
 
   для: unded   (06.06.2005 в 17:25)
 

1)$s1>$s2 можно использовать если только вы используете числа.
2)http://localhost/proba1.php?s1=&s2= в данном случае s1 и s2 пустые поэтому будет выводиться bad. Поробуйте http://localhost/proba1.php?s1=6&s2=5
3) $start в начале пуста и не имеет не какого значиния, поэтому ей присваеться значие 0, т.е. нулевой странице. Если мы перейдем к следующей , то значение $start перемениться с нуля на большее поэтому мы ее не обнуляем.
PS Листинг не правельный. Вот исправленная версия.

<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="example.php">
<input type="Text" name="s1"><br>
<input type="Text" name="s2"><br>
<input type="Submit" value="go">
</form>
</body>
</html>


вот скрипт

<?
if ($s1>$s2){echo ("ok");}
else {echo (
bad);} 
?>

вот урл

http://localhost/example.php?s1=&s2=

   
 
 автор: cheops   (06.06.2005 в 19:12)   письмо автору
 
   для: unded   (06.06.2005 в 17:25)
 

При таком раскладе оно не получает значение и остаётся пустым, и срабатывают строки
4 | if (empty($start))
5 | {
6 | $start=0;
7 | }
Но, если вы перейдёте по ссылкам
17| print "<A href=index.php?start=".($start-10).">Предыдущие</A>";
или
22| print "<A href=index.php?start=".($start+10).">Следующие</A>\n";
но в строке запроса появится параметр start который обеспечит значение для переменной $start.

   
 
 автор: unded   (07.06.2005 в 19:39)   письмо автору
 
   для: cheops   (06.06.2005 в 19:12)
 

тоесть первоначально $start равен 0 а потом изменяется в зависимости от
кол-ва сообщеий на 10 (кол-во сообщений на странице)

   
 
 автор: Akira   (07.06.2005 в 19:49)   письмо автору
 
   для: unded   (07.06.2005 в 19:39)
 

$start - это указатель страницы, а кол-во страниц определяеться кол-ом сообщений.
Если сообщений у нас 100, то получиться примерно так:
Стр1.

($start = 0)
1)Сообщение: Простой текст
***
2)Сообщение: Простой текст
***
...
10)Сообщение: Простой текст
***
Следующие (при переходе $star передаеться со значением $start + 10)

Стр2.

($start = 10)
11)Сообщение: Простой текст
***
12)Сообщение: Простой текст
***
...
20)Сообщение: Простой текст
***
Следующие (при переходе $star передаеться со значением $start + 10 т.е. $start = 20)

И так все повторяеться.

   
 
 автор: unded   (09.06.2005 в 16:59)   письмо автору
 
   для: Akira   (07.06.2005 в 19:49)
 

ок спасибо с этим понятно
теперь возникла другая проблема
у меня в отдельном каталоге находятся 3 файла file.htm,send.php,writing.php
и каталог saves
------------------------------------------------------------------------
send.php
--------------------------------------------------------------------------
<?
function recording ()
{
$f=fopen("saves\save.".time(),"w");

fputs($f,$tt1);
fclose($f);
echo("Файл сохранен");
}
recording();
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV ='Refresh' CONTENT='0 ; URL=writing.php'>\n";
print "</HTML></HEAD>\n";
?>
--------------------------------------------------------------------------
writing.php
-----------------------------------------
<?
$direct=opendir("saves");
$i=0;
while($file=readdir($direct))
{
$names[$i]=substr($file,6);
$i++;
}
closedir($direct);
$count=$i;
$count1=$count;
if (empty($start))
{
$start=0;
}
$start=intval($start);
if($start<0)
{
$start=0;
}
print "<center>";
if ($count>$start+10) $count=$start+10;
for ($i =$start; $i<$count;$i++)
{
$entry=$names[$i];
$data=file("saves/save.".$entry);
print "<table border=2 cellspacing2 cellpading=2>
<tr><td>";
print "$tt1;</td></tr>";

}
?>
---------------------------------------------------------------------------
file.htm
---------------------------------------------------------------
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="send.php" method="post">
<textarea cols="40" rows="20" name="tt1"></textarea><br>
<hr>
<input type="Submit" value="send">
</form>
</body>
</html>

send.php записывет введенный текст из формы в файл а
затем writing.php должен вывести все сохраненные файлы
С этим и проблема
апачи пишет что не может найти файл или каталог
Помогите еще раз please

   
 
 автор: Akira   (09.06.2005 в 17:21)   письмо автору
 
   для: unded   (09.06.2005 в 16:59)
 

Немного не понял, что надо, но вот скрипт, поудобнее.
index.htm

<html>
<head>
<title>Record file</title>
</head>
<body>
<form action="record.php" method="post">
<textarea cols="40" rows="20" name="rec"></textarea><br>
<hr>
<input type="Submit" value="send">
</form>
</body>
</html>

record.php

<?
$file 
fopen('records.txt'"a");
      
$query date("m.d.y H:i:s ").$rec."\n";
      
fwrite($file$query);
      
fclose($file);
header ("Location: see.php")
?>

see.php

<?
$array_files 
file("records.txt");
foreach (
$array_files as $str)
{
  print 
$str."<br>";
}
print 
"You want and more? <a href=index.htm>Yes!</a>";
 
?>

Если честно я не стал вникать в тот код. Слишко громоздкий. Быстрее написать новый.

   
 
 автор: unded   (16.06.2005 в 16:18)   письмо автору
 
   для: Akira   (09.06.2005 в 17:21)
 

Это не совсем то
У меня есть каталог с файлами
Мне нужно содержимое этих файлов вывести на экран

   
 
 автор: unded   (17.06.2005 в 21:51)   письмо автору
 
   для: unded   (16.06.2005 в 16:18)
 

Это не совсем то
У меня есть каталог с файлами
Мне нужно содержимое этих файлов вывести на экран

   
 
 автор: cheops   (17.06.2005 в 22:03)   письмо автору
 
   для: unded   (09.06.2005 в 16:59)
 

>апачи пишет что не может найти файл или каталог
Хм... а вы правильно указываете путь к файлу writing.php? Ведь если даже Apache не может найти файл, то он не выполняется или выводится предупреждение PHP? Не могли бы вы привести текст, который выдаёт Apache?

   
 
 автор: unded   (18.06.2005 в 19:26)   письмо автору
 
   для: cheops   (17.06.2005 в 22:03)
 

Апачи пишет так

Warning: file(saves/save.) [function.file]: failed to open stream: No such file or directory in C:\Apache2\new\save in file\writing.php on line 29
;

Warning: file(saves/save.) [function.file]: failed to open stream: No such file or directory in C:\Apache2\new\save in file\writing.php on line 29

   
 
 автор: unded   (20.06.2005 в 19:57)   письмо автору
 
   для: unded   (18.06.2005 в 19:26)
 

Апачи пишет так

Warning: file(saves/save.) [function.file]: failed to open stream: No such file or directory in C:\Apache2\new\save in file\writing.php on line 29
;

Warning: file(saves/save.) [function.file]: failed to open stream: No such file or directory in C:\Apache2\new\save in file\writing.php on line 29

   
 
 автор: cheops   (20.06.2005 в 20:11)   письмо автору
 
   для: unded   (20.06.2005 в 19:57)
 

Пропустил ваш предыдущий пост... А директорию C:\Apache2\new\save у вас существует? Если нет попробуйте её создать - скорее всего скрипт построен таким образом, что запись будет производится туда...

   
 
 автор: unded   (21.06.2005 в 15:10)   письмо автору
 
   для: cheops   (20.06.2005 в 20:11)
 

Да конечно я создал такую директорию
==================================================
У меня такая задача
Есть каталог с файлами
Мне надо вывести содержимое этих файлов в браузер

   
 
 автор: cheops   (21.06.2005 в 18:41)   письмо автору
 
   для: unded   (21.06.2005 в 15:10)
 

>Мне надо вывести содержимое этих файлов в браузер
Вы можете воспользоваться готовым решением в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4792 или массой других скриптов, которые можно найти поиском по форуму, передав в качестве ключевого слова opendir

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования