Вопрос аналогичный предыдущему, все проверил но не работает

  • Автор темы Павлик 1717
  • Дата начала

Павлик 1717

Guest
Автор оригинала: WeirD
А попадает ли она вообще на эти ветки???
Я помоему допер в чем прикол, условие таково что при проходе цикла идет обращение к базе и сравнивает данный идентификатор с идентификатором по которому из базы и достаются значения, а если kat2_id=\"$kat2_id\", а если нет совпадающих идентификаторов во второй таблице, значит сие наталкивает меня на размышление такого толка:

Сообщение об ошибки нужно выводить раньше, так как если из базы нечего доставать с тем же идентификатором, то он попросту не чего и недостает, и этот цикл не срабатывает это и дает впечатление игнора для условия если имя файла отсудствует, ведь если по айли мы нечего не прочитали то файла как такового быть не может.

Но ведь условие !pdf_filename равнозначно тому что переменная false, так почему же он всетаки не срабатывает?

-~{}~ 03.03.05 15:06:

Дааа господа я не особый знаток синтаксиса но дело помоему тут:
pdf_filename varchar(255) NOT NULL default '',

щас проверю....
 

WeirD

Новичок
Я так понимаю, самым близким к оригиналу следует считать первый код...

Тогда если по запросу ничего выбрано не было, цикл попросту не начнется ( условие $row=mysql_fetch_array - false изначально), соответственно и переменная pdf_filename после цикла у тебя будет содержать пустую строку...

Поэтому либо вывод о найденности, ненайденности pdf нужно делать в самом цикле, либо проверять pdf_filename после цикла...
 

Павлик 1717

Guest
Автор оригинала: WeirD
Я так понимаю, самым близким к оригиналу следует считать первый код...

Тогда если по запросу ничего выбрано не было, цикл попросту не начнется ( условие $row=mysql_fetch_array - false изначально), соответственно и переменная pdf_filename после цикла у тебя будет содержать пустую строку...

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

Тогда вопрос будет звучать немного иначе:

Как проверить был ли столбец в базе с тем айди который у нас был, и мне кажется если эдакое можно сделать то все будет ок, только я себе даже приблизительно не представляю синтаксис, как это сделать, если есть соображения плиз..
 

WeirD

Новичок
Автор оригинала: Павлик 1717
Да все попробовал это условие ставил после цикла где он достает а точнее должен достать эту переменную, тогда он во все в которых нет не чего дописвает последний из предидущего цикла. так и должно быть.
А что мешает перед циклом обнулить эту переменную??? ( точнее присвоить ей пустую строку)

Тогда если он ничего не выбрал, то он ничего и не выведет...

Хотя может я задачу не понял... :(
 

Павлик 1717

Guest
Автор оригинала: WeirD
А что мешает перед циклом обнулить эту переменную??? ( точнее присвоить ей пустую строку)

Тогда если он ничего не выбрал, то он ничего и не выведет...

Хотя может я задачу не понял... :(
Обнуление это как раз то с чего я начал 2.5 дня назад

Вот от суда надо ковырять:

PHP:
$query="SELECT pdf_id, lang, pdf_filename, pdf_filesize, pdf_name FROM $table_name WHERE pdf_kat3_id LIKE '$kat3_id'";
Если ячейка pdf_kat3_id не ровна переменной $kat3_id'
то он чхать хотел на все что ниже, так что думаю условие нужно вешать на query, только синтаксис какой должен быть?

-~{}~ 03.03.05 15:41:

PHP:
$query="SELECT pdf_id, lang, pdf_filename, pdf_filesize, pdf_name FROM $table_name WHERE pdf_kat3_id LIKE '$kat3_id'";

Вот помоему догнал:

if (!$res3){
echo"нет файла";
}else{
echo"есть файл";
}
Щас буду проверять....
-~{}~ 03.03.05 15:46:

УРААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА

Мы нашли ответ!!!!!!!!!!!!!!

вот оригинал кода надо другое проверять было сам цикл а не переменные которых в нем вполне вероятно могло не быть!!! :)

PHP:
if (!mysql_fetch_array($res3)) {
echo"Файла нет";
}else{
while ($row=mysql_fetch_array($res3)){
$pdf_kat3_id = $row['pdf_kat3_id'];
$pdf_filename = $row['pdf_filename']; //номер по порядку
$pdf_filesize = $row['pdf_filesize'];
$lang = $row['lang'];
$pdf_name = $row['pdf_name'];
$kb=($pdf_filesize/1000);
 
$filepdf="
<tr bgcolor=\"#FFE2C6\">
<td colspan=3 height=1 bgcolor=\"black\"></td>
</tr>
<tr bgcolor=\"#FFE2C6\">
<td><font color=\"#000000\" size=2><a href=\"pdf/$pdf_filename\"> - <u>$pdf_name</u></a></font></td>
<td><center><font color=\"#000000\" size=2>$kb к/б</font></center></td>
<td><center><font color=\"#000000\" size=2>$lang</font></center></td>
</tr>"; 
}


//var_dump ($pdf_filename); 
echo"$filepdf";
}
-~{}~ 03.03.05 15:47:

Благодарю всех принявших в этой теме людей, и внесших свою лепту... :)
 

Павлик 1717

Guest
Автор оригинала: WeirD
Я боюсь, радость тут несколько преждевременна...
Дружище нет ты не прав все работает дело в этой строчке тут надо было проверять проверяем изначально mysql_fetch_array на исполнение $res3 и все далее все работает, так как если id не совпадают то mysql_fetch_array не отрабатывает:

PHP:
$db = mysql_select_db($db_name, $connection)
   or die("не возможно выбрать базу");      
  

$query="SELECT pdf_id, lang, pdf_filename, pdf_filesize, pdf_name FROM $table_name WHERE pdf_kat3_id LIKE '$kat3_id'";

$res3=mysql_query($query,$connection)
      or die(mysql_error());

//вот она истина где пошла

if (!mysql_fetch_array($res3)) {
echo"Файла нет";
}else{
while ($row=mysql_fetch_array($res3)){
$pdf_kat3_id = $row['pdf_kat3_id'];
$pdf_filename = $row['pdf_filename']; 
$pdf_filesize = $row['pdf_filesize'];
$lang = $row['lang'];
$pdf_name = $row['pdf_name'];
$kb=($pdf_filesize/1024);

echo"Выводим переменные"
   }
}
 

WeirD

Новичок
Павлик 1717

Вызываем mysql_fetch_array($res3) в if-е ... если запрос вернул какой-то результат, то:
1. эта функция разбивает строку в массив.
2. Переходит на следующую строку результата....

Далее в цикле мы уже начинаем со второй строки результата... Так что проверь соответствует ли количество выводимых у тебя строку ожидаемому количеству...

P.s. если с терминологией что не так у меня, то извините...
 

Павлик 1717

Guest
Автор оригинала: WeirD
Павлик 1717

Вызываем mysql_fetch_array($res3) в if-е ... если запрос вернул какой-то результат, то:
1. эта функция разбивает строку в массив.
2. Переходит на следующую строку результата....

Далее в цикле мы уже начинаем со второй строки результата... Так что проверь соответствует ли количество выводимых у тебя строку ожидаемому количеству...

P.s. если с терминологией что не так у меня, то извините...
Да дружище теперь я верю твоим заключениям, качество как ты сказал говно полное, он париться в подцикле изза этого.

щас буду разбираться....
 

WeirD

Новичок
PHP:
if (0 == mysql_num_rows($res3)) {
   echo"Файла нет";
}else{
   while ($row=mysql_fetch_array($res3)){
       $pdf_kat3_id = $row['pdf_kat3_id'];
       $pdf_filename = $row['pdf_filename']; 
       $pdf_filesize = $row['pdf_filesize'];
       $lang = $row['lang'];
       $pdf_name = $row['pdf_name'];
       $kb=($pdf_filesize/1024);

        echo"Выводим переменные";
   }
}
С минимальными изменениями я бы переделал твой скрипт так...
 

Павлик 1717

Guest
Автор оригинала: WeirD
PHP:
if (0 == mysql_num_rows($res3)) {
   echo"Файла нет";
}else{
   while ($row=mysql_fetch_array($res3)){
       $pdf_kat3_id = $row['pdf_kat3_id'];
       $pdf_filename = $row['pdf_filename']; 
       $pdf_filesize = $row['pdf_filesize'];
       $lang = $row['lang'];
       $pdf_name = $row['pdf_name'];
       $kb=($pdf_filesize/1024);

        echo"Выводим переменные";
   }
}
С минимальными изменениями я бы переделал твой скрипт так...
Ну ты просто дружище!!! я пришел в тупик и было зашел опять попросить совета но ты уже все сам ответил без вопроса хотя еще не пробовал но думаю по логике вещей должно быть именно по твоему щас проверю..... :)
 

WeirD

Новичок
Павлик 1717

[offtop]
28го января говоришь День рождения??? Ну-ну ;)
[/offtop]
 

Павлик 1717

Guest
WeirD!!!!! форева, я не гей но я люблю тебя!!!!! :) Все именно так все работает причудеснейше и именно так как я задумал....
Спасибо огромное!!! Начну завершающую стадию работы над сайтом :))))) СПА СИ БО !

-~{}~ 03.03.05 16:24:

Автор оригинала: WeirD
Павлик 1717

[offtop]
28го января говоришь День рождения??? Ну-ну ;)
[/offtop]
Д ент я там не правду указал, надо подправить профайл....

-~{}~ 03.03.05 16:41:

WeirD

Да кстати работает то все работает, но если тебя не затруднит, ответь мне на такие вопросы:

1. Какая разница между ! и 0
ведь тут ты сравниваеш ноль с целым выражением.

2. Ну думаю на первый вопрос ответ сто процентов есть, и судя по всему ! - это falce а 0 это 0 значит если не суждено считать столбец из таблицы значит все выражение принимает значение 0 так это?

3. Да и вообще какая разница между ! 0 и фалсом

Ламерские вопросы, но пока внятных ответов в книгах я не получал...
 

WeirD

Новичок
mysql_num_rows() returns the number of rows in a result set.
Отсюда, если в результате пусто, то количество строк равно 0. С ним и сравниваем....

Да и вообще какая разница между ! 0 и фалсом
Прочитай про типы данных, где-нибудь... Необязательно даже, чтобы это "где-нибудь" относилось к PHP... Тогда разница станет очевидна...

Хотя в пхп эта разница до безобразия размыта... (ИМХО)
 

Павлик 1717

Guest
Автор оригинала: WeirD
Отсюда, если в результате пусто, то количество строк равно 0. С ним и сравниваем....



Прочитай про типы данных, где-нибудь... Необязательно даже, чтобы это "где-нибудь" относилось к PHP... Тогда разница станет очевидна...

Хотя в пхп эта разница до безобразия размыта... (ИМХО)
Понятно спасибо, а про ! 0 и фалс??

Ну тогда на и этом спасибо!!!! :) в моей книге не хрена не написано толком про размытость согласен... но это вопрос моего желания знать это, если припрет то как миленький узнаю, а пока просто пытался использовать возможность быстро получить ответ, так что не бида :)
 
Сверху