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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: работа с файлами

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: cheops   (30.09.2005 в 12:34)   письмо автору
 
   для: zavragnov   (29.09.2005 в 22:47)
 

В прикреплённом скрипте всё работает. В вашем коде не понятны следующие моменты, зачем нужны следующие строки
<?php
if(!empty($_POST['a'])); 
if(!empty(
$_POST['b'])); 
if(!empty(
$_POST['c'])); 
?>

Почему вы проверяете на существование $_POST['d']
<?php
if(!empty($_POST['d']))   

?>

и не проверяете $_POST[save]?

   
 
 автор: Loki   (30.09.2005 в 00:24)   письмо автору
 
   для: isset   (29.09.2005 в 19:42)
 

Хм... а, например, необъявленная переменная - это критично?
Просто при той же постраничной навигации проще вывести все переменные на экран, нежели проверять существование каждой...

   
 
 автор: zavragnov   (29.09.2005 в 22:47)   письмо автору
 
   для: cheops   (29.09.2005 в 19:13)
 

Если в файле была информация то все выводиться.

например инфа содержащаяся в файле example.txt

название|инфрмация1|инфрмация2|инфрмация3

Тетерь что происходит:

1. запускаем скрипт
2. выбираем example.txt
3. заполняется форма содержимым файла example.txt
4. вносим изменения, нажимаем сохранить
5. выдаются сообщения об ошибках, приведенные выше


Идея скрипта - выбор файла из директории и его последующее редактирование. Вся инфа в файле пишется только в одну строку. Далее содержимое файла выводится в браузер другим скриптом. Короче говоря небольшая админ панель.

А вот откуда взята идея в приложенном файле.

   
 
 автор: isset   (29.09.2005 в 19:42)   письмо автору
 
   для: cheops   (29.09.2005 в 12:11)
 

Не совсем согласен, Notice это такая же ошибка и исправлять ее надо обязательно, а не игнорировать...

   
 
 автор: cheops   (29.09.2005 в 19:13)   письмо автору
 
   для: zavragnov   (29.09.2005 в 14:13)
 

Перед вызовом цикла foreach необходимо проверять не является ли массив пустым
<?php
if(!empty($str_array))
{
  foreach(
$str_array as $line
  { 
     list(
$msg1$msg2$msg3$msg4) = explode("|",$line); 
  } 
}
?>

Выведите на экран содержимое $_POST['save'] - в нём что-нибудь имеется?

   
 
 автор: zavragnov   (29.09.2005 в 14:13)   письмо автору
 
   для: cheops   (29.09.2005 в 12:11)
 

А как быть с этим?

Это появляется после нажития кнопки сохранения


Warning: Invalid argument supplied for foreach() in z:\home\test2.ru\www\open.php on line 43

Warning: fwrite(): supplied argument is not a valid stream resource in z:\home\test2.ru\www\open.php on line 117

Warning: fclose(): supplied argument is not a valid stream resource in z:\home\test2.ru\www\open.php on line 119

   
 
 автор: cheops   (29.09.2005 в 12:11)   письмо автору
 
   для: zavragnov   (29.09.2005 в 01:30)
 

Notice является своеобразным советом и выводится, когда выставлена максимальная чувствительность PHP к ошибкам - её следует понизить, как это сделано на всех хостингах, иначе они не дадут работать. Для этого, следует выставить соответствующее значение для директивы error_reporting, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE

Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
?>

В качестве параметра, которой передать соответствующий уровень обработки ошибок.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4985

   
 
 автор: zavragnov   (29.09.2005 в 01:30)   письмо автору
 
   для: cheops   (29.09.2005 в 01:20)
 

все равно не сохраняет, после нажатиия на сохранить выдал такое:

Notice: Undefined variable: selectbase in z:\home\test2.ru\www\open.php on line 32

Notice: Undefined variable: chbase in z:\home\test2.ru\www\open.php on line 32

Notice: Undefined variable: basename in z:\home\test2.ru\www\open.php on line 36

Warning: Invalid argument supplied for foreach() in z:\home\test2.ru\www\open.php on line 43




Notice: Undefined variable: basename in z:\home\test2.ru\www\open.php on line 111



Notice: Undefined index: save in z:\home\test2.ru\www\open.php on line 115

Warning: fwrite(): supplied argument is not a valid stream resource in z:\home\test2.ru\www\open.php on line 117

Warning: fclose(): supplied argument is not a valid stream resource in z:\home\test2.ru\www\open.php on line 119

   
 
 автор: cheops   (29.09.2005 в 01:20)   письмо автору
 
   для: zavragnov   (29.09.2005 в 01:15)
 

Исправьте 115 строку следующим образом
<?php
  $fd 
fopen("$_POST[save]","w"); 
?>

PS Такие здоровые листинги лучше сразу прикреплять в виде файла.

   
 
 автор: zavragnov   (29.09.2005 в 01:15)   письмо автору
 
   для: cheops   (28.09.2005 в 23:42)
 

ВСЕ РАВНО НЕ РАБОТАЕТ

ВОТ ЧТО ПИШЕТ

Parse error: parse error, expecting 'T_STRING' or 'T_VARIABLE' or 'T_NUM_STRING' in z:\home\test2.ru\www\tmpbogwanjpjc.php on line 115

вот сам код скрипта, файл open.php


<?php
//Error_Reporting(E_ALL & ~E_NOTICE);

//Директория, где будут храниться файлы с данными
$basedir="data"

//Если еще не выбран файл, то предлагаем его создать
if(empty($selectbase)) {
    echo 
"Создать<br/><form name=addbase><input type=text name=addnbase><input type=hidden name=mod value=options><input type=hidden name=action value=randb>&nbsp;&nbsp;<input type=submit name='' value=\"Создать\"></form>";
    if(isset(
$addnbase)) {    @fclose(fopen("$basedir/$addnbase""a+")); }
    }
    
    else {
        
$basename=$basedir."/".$selectbase;
        
$chbase=$selectbase;
}

//А здесь предлагаем выбрать файл из имеющихся
echo "<br/>Выбрать<br/><form name=formbase><select name=selectbase size=\"1\"><option value=\"\">&nbsp;&nbsp;&nbsp;&nbsp;-- Выбор --&nbsp;&nbsp;&nbsp;&nbsp;</option>";

if (
$handle opendir("$basedir")) {
        while (
false !== ($basefile readdir($handle))) {
                if (
$basefile != "." && $basefile != "..") {
                        echo 
"<option value=$basefile>$basefile</option>";
                        }
                        }
                        
closedir($handle);
                        }
echo 
"</select>&nbsp;&nbsp;<input type=\"submit\" name=\"\" value=\"Выбрать\"></form>";

//Форма добавления нового кода
$addnban "<p>Добавить код в <b>" .$selectbase"</b><br/><form action=\"$PHP_SELF?mod=options&action=randb&subaction=add\" method=\"post\"><input  name=adcode type=text size=\"100\"><input type=hidden name=selectbase value=$chbase><br/><input type=submit name='' value=\"Добавить\"><input type=hidden name=\"yes\" value=\"0\"> <input type=\"checkbox\" name=\"adddupl\" value=\"1\"> Добавить, даже если такой код уже есть</form><p>
"
;


$filename "$basename"




  
$str_array file($filename); 
  
// Обходим массив в цикле 
  
foreach($str_array as $line
  { 
     list(
$msg1$msg2$msg3$msg4) = explode("|",$line); 
  } 
  
  
//echo $msg1;
//echo $msg2;
//echo $msg3;
//echo $msg4
?>






<html>
<head>
<title>Администрирование - <?php echo $msg1 ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>


<form action=open.php method=post enctype=multipart/form-data>
  <p><font color="#FF9900" size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
    </font></p>
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td><font color="#FF9900" size="1" face="Verdana, Arial, Helvetica, sans-serif">название 
        страницы<br>
        <input name="a" type="text" value="<?php echo $msg1?>" size="106">
        <br>
        ключевые слова<br>
        <input name="b" type="text" value="<?php echo $msg2?>" size="106">
        <br>
        описание станицы<br>
        <input name="c" type="text" value="<?php echo $msg3?>" size="106">
        <br>
        <br>
        <input name="Input" type="image" src="save.gif" width="134" height="22">
        <br>
        <br>
        контент <br>
        <textarea type=text  rows=20 cols=80 name='d'><?php echo $msg4?></textarea>
        <br>
        <br>
        <input name="Input2" type="image" src="save.gif" width="134" height="22">
        </font></td>
      <td width="50%" valign="top"><table width="100%" border="0" cellspacing="20" cellpadding="0">
          <tr> 
            <td valign="top"><font size="3" face="Arial, Helvetica, sans-serif"><?php echo $msg4?></font></td>
          </tr>
        </table>
        </td>
    </tr>
  </table>
  <p>&nbsp;</p>
  </form> 

<?php 
if(!empty($_POST['a']));
if(!empty(
$_POST['b']));
if(!empty(
$_POST['c']));
if(!empty(
$_POST['d']))  

 echo 
"<form action=open.php method=post> <input type=hidden name=save value=$basename> </form> ";     

// Открываем файл 
//$filename = "$_POST['save']"; 
$fd fopen("$_POST['save']","w"); 
// Записываем содержимое текстовых областей 
fwrite($fd$_POST['a']."|".$_POST['b']."|".$_POST['c']."|".$_POST['d']); 
// Закрываем файл 
fclose($fd); 

         }



?> 

</body>
</html>

   

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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