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

  Все выпуски  

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


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

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

Выпуск № 530
от 01.12.2006, 15:35

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


Вопрос № 64222: Добрый день уважаемые эксперты. Кто нибудь видел админку Joomla,Mambo? В них есть такая штука что выводится табличка, например с новостями, и в левой колонке есть чекбоксы, т.е. несколько выделил и сразу удалил,ну понятно что здесь JAvaScript исп...
Вопрос № 64232: Ну что я делаю не так???! В базу данных не пишет. Хотя уже достижение, не выдаёт и ошибок! предыдущие вопросы, мои и других http://rusfaq.ru/?Step=info&Action=Question&ID=63987 (с этого у меня всё началось) http://rusfaq.ru/info/quest...
Вопрос № 64259: Здравствуйте. Как реализовать на PHP следующее: 1)при нажатии на html ссылку, значение переменной к примеру $i увеличивалось на единицу. 2) На html страницы лежат несколько Checkbox-ов с неизвестным именем, как узнать какие из них выбраны (checked=tr...
Вопрос № 64269: Нужно исправить ошибки. Делал простой скрипт и форму для отправки сообщений на емайл. В приложении коды. Запускал форму вводил данные и через гет метод данные передовались в строку браузра. Может что я не так допонял....

Вопрос № 64.222
Добрый день уважаемые эксперты.
Кто нибудь видел админку Joomla,Mambo? В них есть такая штука что выводится табличка, например с новостями, и в левой колонке есть чекбоксы, т.е. несколько выделил и сразу удалил,ну понятно что здесь JAvaScript используется. Пытался достать это из этих кмс, но сложновато. Нет ли у кого подобных скриптов или кто знает на них линки, очень бы хотелось научится создавать такие же.
Заранне благодарю.
Отправлен: 26.11.2006, 00:18
Вопрос задал: Nook (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Солошенко Александр
Здравствуйте, Nook!
Не совсем понимаю при чем тут JavaScript, я в своей CMS это реализовал без всякого JavaScript на чистом PHP, пример можно посмотреть в приложении. Правда у меня так реализуется не удаление, а включение/отключение модулей, но смысл тот же.
Сначала выводится форма с таблицей, в которой все элементы управления имеют нумерацию в массиве. Таким образом нас интересует параметр "param[$i][active]"? который соответствует флажкам, чтобы определить id строки в таблице в форме есть скрытое поле "param[$i][id]". После отправки формы скрипту просто проверяем, при каких $i у нас установлен флажок и удаляем соответствующие записи из таблицы.

PS Для простоты пример написан для PHP с включенной опцией register_globals
Надеюсь я правильно понял вопрос :-)
Удачи!

Приложение:

Ответ отправил: Солошенко Александр (статус: 1-ый класс)
Ответ отправлен: 26.11.2006, 09:37


Вопрос № 64.232
Ну что я делаю не так???! В базу данных не пишет. Хотя уже достижение, не выдаёт и ошибок!
предыдущие вопросы, мои и других
http://rusfaq.ru/?Step=info&Action=Question&ID=63987
(с этого у меня всё началось)
http://rusfaq.ru/info/question/64049
(на это даже никто не ответил, это как я пытался читать)
http://rusfaq.ru/?Step=info&Action=Question&ID=63731
http://rusfaq.ru/?Step=info&Action=Question&ID=60367

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

Приложение:

Отправлен: 26.11.2006, 02:25
Вопрос задал: Артём Талипов (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Загиров Рустам
Здравствуйте, Артём Талипов!
Конечно нужно сначала создать таблицу, а по-другому нельзя. Можете создать таблицы в PHPMyAdmin.
Вот примерный запрос для создания таблицы:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`status` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Рекомендую посетить сайт www.firststeps.ru.
---------
Этот мир обречён на нас
©Сергей Маврин
Ответ отправил: Загиров Рустам (статус: Специалист)
Ответ отправлен: 26.11.2006, 03:10
Оценка за ответ: 4
Комментарий оценки:
Спасибо! Кажись работает. Не сразу понял чо с этим делать, пришлось думать.

Отвечает: Марк Крейн
Здравствуйте, Артём Талипов!
Немножко поясню по сути кода, чтобы понятней было.

Когда вы проверяете успешность занесения в базу, не делайте так:

$res=mysql_query($query);
if ($res) echo "Данные занесены в БД.";
else echo "Не возможно записать данные в БД";

Дело в том, что $res вы уже присвоили значение mysql_query($query). И когда вы делаете вот это: if ($res) вы, по сути, говорите "а равна ли $res 0 или false?". Данная переменная у вас уже определена и ненулевая. Поэтому надёжней (и вернее) использовать следующий код в этом случае:

$res=mysql_query($query);
if (mysql_errno()==0) {echo "Данные занесены в БД.";}
else {echo "Не возможно записать данные в БД";}


ну или так:

$res=mysql_query($query);
if (mysql_error()=='') echo "Данные занесены в БД.";
else echo "Не возможно записать данные в БД";

mysql_errno() выдаёт номер последней ошибки SQL. Если 0, то всё нормально.
mysql_error() выдаёт текст последней ошибки SQL. Соответственно, если пусто, то всё нормально.
Ответ отправил: Марк Крейн (статус: Заблокирован)
Ответ отправлен: 26.11.2006, 05:52
Оценка за ответ: 5
Комментарий оценки:
Я воспользовался кодом который предложил Райкин Сергей Александрович.
И спасибо за замечание. информативно!

Отвечает: Бородин Александр Олегович
Здравствуйте, Артём Талипов!
Если нет таблицы, в которую Вы хотите вставить данные, то никуда Вы их и не вставите. Сначала надо создать таблицу. Сделать это лучше один раз, дабы не потереть при вторичном создании уже имеющиеся данные. Синтаксис в приложении.

Примечания.
1) Текст, написанный большими буквами, может быть написан и маленькими - это регистронезависимый синтаксис SQL. То, что написано маленькими буквами, может быть написано только в одном регистре(но не важно в каком именно).
2) Названия столбцов в апострофах - мне сложно сказать, насколько это принципиально, я как и Вы - программист-любитель(даже, можно сказать, "чайник"), но у меня ни одно приложение без заключения названий в апострофы, не шло.
3) Я добавил в таблицу столбец `user_id`. Вы наверняка обращали внимание, что у пользователей, помимо логинов, паролей, есть еще какие-то непонятные номера. Вот этот номер и есть `user_id`. Он не обязателен, но желателен. С таблицей(а значит, и с ее содержимым - людьми) в разы легче работать, больше порядка.

Надеюсь, я Вам помог.

Приложение:

---------
Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.

Ответ отправил: Бородин Александр Олегович (статус: 2-ой класс)
Ответ отправлен: 27.11.2006, 07:52
Оценка за ответ: 5
Комментарий оценки:
Спасибо, тоже помогло.


Вопрос № 64.259
Здравствуйте. Как реализовать на PHP следующее: 1)при нажатии на html ссылку, значение переменной к примеру $i увеличивалось на единицу. 2) На html страницы лежат несколько Checkbox-ов с неизвестным именем, как узнать какие из них выбраны (checked=true)? Заранее спасибо.
Отправлен: 26.11.2006, 12:43
Вопрос задал: Сергей Николаевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Барков Илья Андреевич
Здравствуйте, Сергей Николаевич!
1) я бы реализовал это с помощии технологии AJAX.
примерно так : <a href='/somelink' onclick='incrase({$id})'>Link</a>
в функции incrase пишем примерное следующее:
function incrase(id) {
var req = new Subsys_JsHttpRequest_Js();
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.responseText) {
alert('id #'+id+' incrased');
}
}
}
req.open('GET', './ajax.php?incrase='+id, true);
req.send();
}
в файле ajax.php пишем:
if (numeric($_GET['incrase'])) {
// вызов функции с обработкой инкрейса. в переменную передается ID (ну или что захотите)
// операции с БД. апдейт поле, лала.
echo 'done';
}

2. Перебор чекбоксов:
Для начала лучше выделать чекбоксы в отдельный блок (div)
Примерно так:
<div id='inputs'>
<input ...><input ...><input ...>
</div>
ну и вот JavaScript функция:
function asd() {
var block=document.getElementById('inputs');
for (var i=0;i<document.getElementsByTagName("INPUT").length;i++) {
if (block.getElementsByTagName("INPUT")[i].checked( {
var checked_index=i;break;
var val=block.getElementsByTagName("INPUT")[i].value;
}
alert(checked_index); // в этой переменной будет индекс нужного инпута.
// в переменной val будет значение выбранного чекбокса.
// единственное, не помню точно, в начале массиа либо .length либо .count. вроде ленгтх )
}
}
Удачи!
Ответ отправил: Барков Илья Андреевич (статус: 4-ый класс)
Ответ отправлен: 26.11.2006, 13:17


Вопрос № 64.269
Нужно исправить ошибки. Делал простой скрипт и форму для отправки сообщений на емайл. В приложении коды. Запускал форму вводил данные и через гет метод данные передовались в строку браузра. Может что я не так допонял.

Приложение:

Отправлен: 26.11.2006, 13:32
Вопрос задал: _Master_ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Марк Крейн
Здравствуйте, _Master_!
В приложении мой вариант скрипта.

При этом надо предусмотреть, что именно пользователь напишет в поле from_email. Он же теоретически может всё что угодно написать. Поэтому я рекомендую ещё дополнительно проверить это поле. На PHP, к сожалению, так сразу не приходит в голову вариант, поэтому привожу функцию на JavaScript.


function isEmail(email){
var foundAt = false
var foundDot = false

for (var i=0; i {
if (email.charAt(i) == "@")
{
foundAt = true
}
else if (email.charAt(i) == ".")
{
foundDot = true
}
}
if (foundAt && foundDot)
{
return true
}
else
{
return false
}
}


Удачи!

Приложение:

Ответ отправил: Марк Крейн (статус: Заблокирован)
Ответ отправлен: 26.11.2006, 15:21


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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

В избранное