RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 542
от 15.12.2006, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 391, Экспертов: 51
В номере:Вопросов: 4, Ответов: 8


Вопрос № 66214: Добрый день. На сайте установил скрипты по продаже мобильного контента. Проблема в том, что не отображаются картинки-превьюшки. Вместо них кресты. Сами картинки на сайт загружаются. Посмотреть можно по адресу kupec.biz/kup/play/...
Вопрос № 66217: Здравствуйте! Сделал небольшой скрипт, который использует переменные окружения. Но на сервере моего сайта он неработает(на денвере все в порядке). Я так понимаю, что это из-за register_globals = Off. Что нужно добавить в скрипт или ...
Вопрос № 66240: Здравствуйте! Пожалуйста подскажите как правильно удалять строку из таблицы mysql. Я похоже делаю, что-то не так. Сам запрос вродебы верен, но вот после, обработка ошибок, я не понимаю вообще структуры команд с "or". ...
Вопрос № 66320: Здравствуйте! не могу найти функций, чтобы узнать первый не занятый id записи в бд (т.е. тот номер под которым будет сохранена следующая строчка). А ещё нужно как-то легко узнать id только что сделаной записи. Pls подскажите!...

Вопрос № 66.214
Добрый день.
На сайте установил скрипты по продаже мобильного контента. Проблема в том, что не отображаются картинки-превьюшки. Вместо них кресты. Сами картинки на сайт загружаются. Посмотреть можно по адресу kupec.biz/kup/play/
Отправлен: 09.12.2006, 12:26
Вопрос задал: Mish2001 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Райкин Сергей Александрович
Здравствуйте, Mish2001!
Возможно у вас картинки находятся не в папке kup/play/tmp/название.картинки
или буквы в файле большые, напр. Название.КАРТИНКИ, некоторые серверы чувствительны к регистру...
---------
программист должен работать в свое удовольствие
Ответ отправил: Райкин Сергей Александрович (статус: 2-ой класс)
Ответ отправлен: 09.12.2006, 12:37

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Mish2001!

Я посмотрел - Вы пытаетесь загрузить картинки с kupec.biz/kup/play/tmp/, а находятся они в kupec.biz/kup/play/.

Либо создайте паку tmp в парке play и перенесите картинки туда, либо измените ссылки на картинки, убрав там "tmp/".

С уважением,
Антон Цепковский.

---------
Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 5-ый класс)
Ответ отправлен: 09.12.2006, 15:07


Вопрос № 66.217
Здравствуйте!
Сделал небольшой скрипт, который использует переменные окружения.
Но на сервере моего сайта он неработает(на денвере все в порядке). Я так понимаю, что это из-за
register_globals = Off.
Что нужно добавить в скрипт или директорию сайта, чтобы включить эту опцию?
Спасибо!
Отправлен: 09.12.2006, 12:45
Вопрос задал: Valeraorg (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Олег Владимирович
Здравствуйте, Valeraorg!

Можно в ту директорию, где скрипт, добавить файл .htaccess , где прописать php_flag register_globals on
Но по-моему, лучше использовать глобальные массивы $_POST['переменная'], $_GET['-//-']

Удачи!
---------
Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 8-ой класс)
Ответ отправлен: 09.12.2006, 13:52
Оценка за ответ: 5

Отвечает: Денис Сергеевич
Здравствуйте, Valeraorg!

Еще можно добавить в начале скрипта:
ini_set('register_globals','1');
или
ini_set('register_globals','on');

Но лучше, наверное, последовать совету Олега Владимировича и использовать глобальные массивы, поскольку при включенном register_globals сильно страдает безопасность Вашего скрипта. Кроме того, с другой проблемой Вы уже столкнулись. Код, написанный для включенного register_globals, не будет работать там, где этот режим выключен. А при использовании массивов $_POST и $_GET Ваш код сохранит работоспособность в обоих случаях...
Ответ отправил: Денис Сергеевич (статус: 1-ый класс)
Ответ отправлен: 10.12.2006, 20:32


Вопрос № 66.240
Здравствуйте!

Пожалуйста подскажите как правильно удалять строку из таблицы mysql. Я похоже делаю, что-то не так. Сам запрос вродебы верен, но вот после, обработка ошибок, я не понимаю вообще структуры команд с "or".

Приложение:

Отправлен: 09.12.2006, 16:05
Вопрос задал: Талипов А Н (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Алексей Смуриков
Здравствуйте, Талипов А Н!
Попробуйте запрос вот в такой форме:
mysql_query("DELETE FROM cat1 WHERE id=".$p_id, $conn)
or die ("

неудаётся удалить описание объекта.

");

p.s. Возможно также придётся заключить условие в кавычки (id='Vasa') если id строковое значение!
---------
Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 09.12.2006, 17:30
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Работает! Опять моя не внимательность.Обидно, глупая ошибка.

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Талипов А Н!

Вроде Вы всё делаете правильно.

Вы выполняете запрос посредством функции mysql_query; если функция возвратит FALSE, тогда выполнится комманда die("...") т.е. скрипт прекратит работу и выдаст ошибку. Если функция возвратит TRUE, то die не выполнится и скрипт продолжить работу со следующей строки.

В данном случае mysql_query и должна возвращать TRUE или FALSE.

Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.

Если возникает ошибка в базе данных или в запросе - попробуйте её узнать изменив скрипт так:

// удаление описания объекта
mysql_query("delete * FROM `cat1` where id=".$p_id, $conn)
or die ("<p>неудаётся удалить описание объекта: ".mysql_error()."</p> ");

// удаляем связи
mysql_query("delete * from `cat_l` where `obj`=".$p_id, $conn)
or die ("<p>не могу удалить связи: ".mysql_error()."</p> ");

функция mysql_error() выведет Вам ошибку возникшую с последним запросом.

С уважением,
Антон Цепковский.

Приложение:

---------
Вся наша жизнь - RPG

Ответ отправил: Цепковский Антон Сергеевич (статус: 5-ый класс)
Ответ отправлен: 09.12.2006, 17:34

Отвечает: Игорь Елизаров
Здравствуйте, Талипов А Н!
после удаления строк индексы не освобождаются.
индексы присваиваются последовательно при создании строки, но при удалении строк не освобождаются. Да, конечнов базе остаются Дыры в индексах, но зато это препятсятвует появлению ошибок, связанных с повторным использованием освободившихся индексов, что особенно актуально для связанных таблиц.
то есть в одной таблице записис удалили, а в подчиненной- забыли.
эти записи нельзя будет использовать, даже если Вы введете новую запись в главную таблицу, ведь у новой записи будет новый ID.
Ответ отправил: Игорь Елизаров (статус: 8-ой класс)
Ответ отправлен: 09.12.2006, 20:59
Оценка за ответ: 5


Вопрос № 66.320
Здравствуйте!

не могу найти функций, чтобы узнать первый не занятый id записи в бд (т.е. тот номер под которым будет сохранена следующая строчка).
А ещё нужно как-то легко узнать id только что сделаной записи.
Pls подскажите!

Приложение:

Отправлен: 10.12.2006, 09:22
Вопрос задал: Талипов А Н (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: Алексей Смуриков
Здравствуйте, Талипов А Н!
Можно конечно каждый раз подсчитывать этот id самостоятельно:
SELECT MAX(id) FROM f_posts;
И потом просто прибавить единицу!
Но целесообразнее будет использовать автоматический счётчик! Для этого надо будет добавить к типу id слово auto_increment или auto_i, и при добавлении записи просто не указывать данное поле:
INSERT INTO `f_posts` (post) VALUES ('test message!');
---------
Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 10.12.2006, 09:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное