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

Форум PHP

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

 

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

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

тема: Undefined offset (4 предупреждения -1, 1, 2, 3)
 
 автор: Санька   (15.11.2007 в 01:25)   письмо автору
 
 

В этих строках предупреждение:
<code>do
{
$i--; $dt=explode("|", $lines[$i]);
echo '<a href="index.php?tid='.$i.'&id='.$dt[3].'">'.$dt[0].'</a>['.$dt[2].']</br>'.$dt[1].'';</code>
Как их объявлять? Помогите поправить.

   
 
 автор: exp   (15.11.2007 в 03:43)   письмо автору
 
   для: Санька   (15.11.2007 в 01:25)
 

< ..... .$dt[3].'">'.$dt[0].'</a>['.$dt[2].']</br>'.$dt[1] ....

просто пришёл пустой массив $dt
что покажет если перед зтим написать
<?

echo htmlspecialchars($lines3);
?

   
 
 автор: Санька   (15.11.2007 в 12:17)   письмо автору
 
   для: exp   (15.11.2007 в 03:43)
 

Пишет:
Warning: htmlspecialchars() expects parameter 1 to be string, array given
Понимаете кого в др. файле есть данные мне выводит все правильно на экран и предупреждений нет, а когда файл пустой выводит предупреждение, нужно скорей всего дописать типо того типа условия если файл пуст выводим сообщение "разделы не созданы". Помогите это реализовать.

   
 
 автор: exp   (15.11.2007 в 13:21)   письмо автору
 
   для: Санька   (15.11.2007 в 12:17)
 

незаметил.
имел ввиду так попробовать посмотреть перед explode

echo htmlspecialchars($lines[$i], 3);

в каком-то месте explode не делает того как должна делать

   
 
 автор: Санька   (15.11.2007 в 13:38)   письмо автору
 
   для: exp   (15.11.2007 в 13:21)
 

Перед explode:
Undefined offset: 0
После explode:
Undefined offset: -1
После того как я это прописал добавило ещё и рисунок, когда в файле есть текст выводит примерно так (рисунок)(ссылка)(число сообщений)
А при пустом файле сейчас:
(рисунок)(пустые скобки без числа)

   
 
 автор: Temnovit   (15.11.2007 в 13:45)   письмо автору
 
   для: Санька   (15.11.2007 в 01:25)
 

Чему равно $i до начала цикла?

   
 
 автор: Санька   (15.11.2007 в 14:01)   письмо автору
 
   для: Temnovit   (15.11.2007 в 13:45)
 

$i=count($lines);
$lines=file($datafile);

$datafile="database.dat";

   
 
 автор: bronenos   (15.11.2007 в 14:13)   письмо автору
 
   для: Санька   (15.11.2007 в 14:01)
 

эти три строки напишите в обратном порядке

   
 
 автор: Санька   (15.11.2007 в 14:34)   письмо автору
 
   для: bronenos   (15.11.2007 в 14:13)
 

Как в обратно? Написано так:
<code><?php
if(!isset($_GET['id])){
$add="";
tiptop($add);
$lines=file($datafile);
$i=count($lines);
$u="0";
do {
echo htmlspecialchars($lines[$i],3);
$i--;
$dt=("|", $lines[$i]);
echo '<a href="index?tid='.$i.'&id='.$dt[3].'">'.$dt[0].'</a>('.$dt[2].')<br/>'.$dt[1].'<br/>';
}
while($i>$u);
}
?></code>

   
 
 автор: Faraon   (15.11.2007 в 14:46)   письмо автору
 
   для: Санька   (15.11.2007 в 14:34)
 

Потеряли $datafile="database.dat"; :))

   
 
 автор: Санька   (15.11.2007 в 14:50)   письмо автору
 
   для: Faraon   (15.11.2007 в 14:46)
 

Нет не потеря через include выводиться, как по вашему тогда, у меня на экран выводятся данные в файле. include в самом верху.

   
 
 автор: exp   (15.11.2007 в 14:21)   письмо автору
 
   для: Санька   (15.11.2007 в 14:01)
 

приведите отрезок кода побольше
do насколько знаю работает как-то так

<?php 
$lines 
= array(1234567);
$i count($lines);
do
{
$i--; 
echo 
htmlspecialchars($lines[$i], 3);
}
while(
$i>0);

?>

   
 
 автор: Санька   (15.11.2007 в 14:43)   письмо автору
 
   для: exp   (15.11.2007 в 14:21)
 

Выше посмотрите, я написал.

   
 
 автор: exp   (15.11.2007 в 15:44)   письмо автору
 
   для: Санька   (15.11.2007 в 14:43)
 


<?php
$datafile 
'test.txt'#добавил здесь

/*
    структура test.txt

имя1|подпись1|цифра1|/adres1
имя2|подпись2|цифра2|/adres2
имя3|подпись3|цифра3|/adres3
имя4|подпись4|цифра4|/adres4
*/
if(1) {  // i   #поменял здесь if(!isset($_GET['id]))
    
$add="";
    
// tiptop($add); #закомментировал здесь
    
$lines=file($datafile);
    
$i=count($lines);
    
$u="0";
    do {
        
$i--;

        echo 
'<hr>' htmlspecialchars($lines[$i],3) . '<hr>';  // отладка 

        
$dt=explode("|"$lines[$i]);
        echo 
'<a href="index?tid='.$i.'&id=' rawurlencode(trim($dt[3])) . '">'.$dt[0].'</a>('.$dt[2].')<br/>'.$dt[1].'<br/>';
    }
    while(
$i>$u);
}
?>

   
 
 автор: Санька   (15.11.2007 в 16:15)   письмо автору
 
   для: exp   (15.11.2007 в 15:44)
 

Повторяет одно и тоже без перерыва с этими же предупреждениями. И на экран уже не выводится текст из файла.

   
 
 автор: Санька   (15.11.2007 в 16:47)   письмо автору
 
   для: Санька   (15.11.2007 в 16:15)
 

Ведь как получается если этим переменным есть что выводить они выводят, а если нет то правильно выводят предупреждение что нечего выводить, а как сделать чтоб вслучае пустого файла, писало разделы не созданы?

   
 
 автор: Temnovit   (15.11.2007 в 16:59)   письмо автору
 
   для: exp   (15.11.2007 в 15:44)
 

Массив удобнее было бы перебрать так:

<?php 
$datafile 
'test.txt'#добавил здесь 

/* 
    структура test.txt 

имя1|подпись1|цифра1|/adres1 
имя2|подпись2|цифра2|/adres2 
имя3|подпись3|цифра3|/adres3 
имя4|подпись4|цифра4|/adres4 
*/ 
if(1) {  // i   #поменял здесь if(!isset($_GET['id])) 
    
$add=""
    
// tiptop($add); #закомментировал здесь 
    
$lines=file($datafile);
    
    foreach(
$lines as $i=>$line) {
        
$dt=explode("|"$line);
        echo 
'<a href="index?tid='.$i.'&id=' rawurlencode(trim($dt[3])) . '">'.$dt[0].'</a>('.$dt[2].')<br/>'.$dt[1].'<br/>';  
    }

   
 
 автор: Санька   (15.11.2007 в 17:14)   письмо автору
 
   для: Temnovit   (15.11.2007 в 16:59)
 

Красиво написано :)
Работает на ура предупреждений больше нет :) а как сделать чтоб когда файл пустой выводилось сообщение что разделы не созданы.

   
 
 автор: bronenos   (15.11.2007 в 17:37)   письмо автору
 
   для: Санька   (15.11.2007 в 17:14)
 

if ($lines) {
    foreach($lines as $i=>$line) { 
        $dt=explode("|", $line); 
        echo '<a href="index?tid='.$i.'&id=' . rawurlencode(trim($dt[3])) . '">'.$dt[0].'</a>('.$dt[2].')<br/>'.$dt[1].'<br/>';   
    }
}
else {
  /* Если пусто */
}

   
 
 автор: Санька   (15.11.2007 в 17:57)   письмо автору
 
   для: bronenos   (15.11.2007 в 17:37)
 

if($lines) ставить нельзя иначе если в файле будут данные они не будут выводится, а при
if(1)
else {echo 'текст';};
не работает почему то. Какие еще будут варианты?

   
 
 автор: Temnovit   (15.11.2007 в 17:48)   письмо автору
 
   для: Санька   (15.11.2007 в 17:14)
 

Кстати, перед добавлением записи в такой файл, обязательно проверьте, чтобы ниодна из строк введенных пользователем не содержала символа " | ". Иначе вся структура поломается.

   
 
 автор: Санька   (15.11.2007 в 18:00)   письмо автору
 
   для: Temnovit   (15.11.2007 в 17:48)
 

А в этот файл только админ может записывать данные по этому не сломается :) помогите решить выше описаную проблему!

   
 
 автор: Санька   (15.11.2007 в 18:37)   письмо автору
 
   для: Санька   (15.11.2007 в 18:00)
 

Щетс, рано обрадывался, перехожу я по ссылки, а все данные выливаются в эту же страницу. Посмотрите оригинал моего кода и тот что я вставил, помогите поправить.

   
Rambler's Top100
вверх

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