Вопрос № 97054: Добрый день. Вопрос может быть и не в тему, но все же..... Начинаю разбирать РНР, делаю своими силами авторизацию PHP+mySQL, но вопрос не в этом.....Итак: есть форма с полями для ввода имени пользователя и пароля и кнопкой ввод, постраничная навигаци...Вопрос № 97077: Доброе время суток, эксперты. Помогите разобраться.
Есть таблица zakazchik а в ней поле zakazchik
Мне нужно добраться до второго заказчика в столбце. Когда я делаю так
$query = "SELECT zakazchik FROM zakazchik";
$resul...Вопрос № 97111: Здравствуйте эксперты, вопрос такой..
1. Наверняка все когда-то посещали сайт знакомств.
При редактировании анкеты есть блоки с множественным выбором т.е. checkbox’ы не могу допереть для каждого checkbox’a в таблице создаётся своя ячейка в с...Вопрос № 97119: Здраствуйте, уважаемые эксперты!
Столкнулся с такой проблемой: мои рнр - программы, запускаемые на компьютере при помощи Апача, не передают данные сами в себя, т.е. например счетчик кликов не работает. При этом когда заливаю в интернет, все работ...
Вопрос № 97.054
Добрый день. Вопрос может быть и не в тему, но все же..... Начинаю разбирать РНР, делаю своими силами авторизацию PHP+mySQL, но вопрос не в этом.....Итак: есть форма с полями для ввода имени пользователя и пароля и кнопкой ввод, постраничная навигация и меню. На странице имеются ссылки вида
index.php?page=1
index.php?page=2
......
Подгружаю страницы через include_once "file1.php"; ну и т.д.
Вопрос: Можно ли сделать на PHP так, чтобы после успешной авторизации форма была неактивна и при переходе по ссылкам?
Я так думаю с помощью сессий, но вот чего-то не получается. На первой странице после успешной авторизации форма уходит, а при переходе по ссылке вновь появляется.
Заранее спасибо.
Приложение:
Отправлен: 02.08.2007, 06:33
Вопрос задал: Lamer (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Azrr
Здравствуйте, Lamer!
Для этого нужно в начале каждого файла вписать :
session_name("somename");
session_start();
тогда при переходе по ссылке сесия будет одна и та же, а не создаваться новая.
Ответ отправил: Azrr (статус: 2-ой класс)
Ответ отправлен: 02.08.2007, 07:11 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ. Сессия действительно работает, просто я одну переменную использовал в разных выражения. Отсюда и не шло.
Отвечает: Flynn
Здравствуйте, Lamer!
Проверь включаешь ли ты сессии на всех страницах. Т.е. в начале каждой страницы должно быть session_start() - без этого сессии использовать не сможешь.
Если включаешь - тогда уже проверяй значения сессий конкретно на той странице, где у тебя ничего не получается.
Самое простая же реализация сохраняет в сессию например айди пользователя и определенный код по которому проверяется каждый раз именно он ли это. И после этой проверки, если все ок, создается например переменная или константа по которой и определяешь потом - надо тебе выводить форму логина или же например "Вы вошли как Гуру..."
Ответ отправил: Flynn (статус: 4-ый класс)
Ответ отправлен: 02.08.2007, 08:40 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ. Я так, как Вы ответили и делал в общем то... просто недосмотрел за скриптом, начудил с переменными....
Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Lamer!
Оригинальная конечно табличка у Вас :)
Лично я использую вот такой вариант с использованием COOKIES. Мне такой больше нравится.
Приложение:
--------- Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.
Ответ отправил: Бобровский Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 02.08.2007, 18:21 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ. Кукисы конечно хорошо, но хотелось бы обойтись без них, тем более задача сама по себе довольно тривиальная и вобщем то воплне подьемная при помощи сессий.
Отвечает: Powoditch konstantin
Здравствуйте, Lamer!
Попробуйте проверять состояние сессии при входе на странице примерно вот так:
if (session_registered('a')){
// сессия активна, регистрация уже произошла
}
else {
// выводим форму для логина
}
Ответ отправил: Powoditch konstantin (статус: 3-ий класс)
Ответ отправлен: 02.08.2007, 19:31 Оценка за ответ: 5 Комментарий оценки: Спасибо. Хороший вариант, но почему то он у меня не получился. Может быть я не совсем корректно задал вопрос. Дело в том, что через include_once я подгружаю не всю страницу. Что то вроде самописного шаблона.
Вопрос № 97.077
Доброе время суток, эксперты. Помогите разобраться.
Есть таблица zakazchik а в ней поле zakazchik
Мне нужно добраться до второго заказчика в столбце. Когда я делаю так
всё нормально просто я не хочу использовать mysql_result а хочу вставить результат в массив , чтобы потом с ним работать ведь заказчиков много а я не могу даже до второго дойти. Подскажите в чём ошибка, я уже все функции методом тыка перепробовал.
$query = "SELECT zakazchik FROM zakazchik";
$result = mysql_query($query);
$i = 0;
while ( $a_row = mysql_fetch_array( $resul )) {
$i=$i+1;
if ($i == 2) {print '$a_row[zakazchik]';} }
выведет второго заказчика
Ответ отправил: Yumark (статус: 2-ой класс)
Ответ отправлен: 02.08.2007, 11:31
Отвечает: PVS
Здравствуйте, Александр Михайлович!
$zakazchiki = mysql_fetch_row($result);
присваивает переменной $zakazchiki новое значение (совсем не массив). Вам надо:
$zakazchiki[] = mysql_fetch_row($result);
тогда каждый следующий заказчик будет попадать в отдельный элемент массива
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 02.08.2007, 11:40
Отвечает: Flynn
Здравствуйте, Александр Михайлович!
Во первых посоветовал бы использовать вам разные названия для таблиц и полей. Сейчас ошибки может и не быть, но потом может и возникнуть как-нибудь.
Во вторых mysql_fetch_row заполняет массив начиная с нулевого элемента, а не с первого. А так как выбираетсчя только одно поле, то соответственно надо писать $zakazchiki[0].
В третьих чтобы не делать 20 раз присвоение рядов для получения 20-го заказчика лучше использовать такой запрос Select zak From zakazchiki Limit 19,1
После слова Limit первая цифра - номер выбранной строки начиная с нуля (0- первая, 1 - вторая...) 1 - количество рядов, которые выбираются начиная с этой строки. Т.е. для второго заказчика будет Limit 1,1. Т.е. оно выберет только одну нужную нам строку и ни придется делать лишних движений в РНР
Ответ отправил: Flynn (статус: 4-ый класс)
Ответ отправлен: 02.08.2007, 11:52
Отвечает: Юркин Александр
Здравствуйте, Александр Михайлович!
Зачем вы используете строку $zakazchiki = mysql_fetch_row($result); два раза?
Если нужно вывести весь массив заказчиков то пишем так:
$query=mysql_query("SELECT zakazchik FROM zakazchik;");
while($zakazchik = mysql_fetch_row($result))
{
echo "$zakazchik[0]
";
}
Если нужно вывести определенного заказчика, то делаем это в mysql запросе
где $id - идентификатор заказчика
$query=mysql_query("SELECT zakazchik FROM zakazchik WHERE id='$id';");
$zakazchik = mysql_fetch_row($result);
echo $zakazchik[0];
Ответ отправил: Юркин Александр (статус: Заблокирован)
Ответ отправлен: 02.08.2007, 14:03
Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Александр Михайлович!
Дело в том, что $zakazchiki это у вас не массив, а переменная!
--------- Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.
Здравствуйте эксперты, вопрос такой..
1. Наверняка все когда-то посещали сайт знакомств.
При редактировании анкеты есть блоки с множественным выбором т.е. checkbox’ы не могу допереть для каждого checkbox’a в таблице создаётся своя ячейка в строке или они так блоками и хранятся?!
То есть например вот блок
<b>Цель знакомства:</b><br>
<input type="checkbox"> Дружба и общение <br>
<input type="checkbox"> Переписка <br>
<input type="checkbox"> Любовь, отношения <br>
Для каждого checkbox’a Создать свою ячейку?! Или записать все выбранные варианты?! Если так то когда пользователь захочет отредактировать анкету как ему указать что он уже выбирал! Помогите.
Отправлен: 02.08.2007, 15:37
Вопрос задал: Koort (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Yadovit
Здравствуйте, Koort!
Вообще-то тут <input type="checkbox"> не хватает поля "name".
Пример:
<input type="checkbox" name="drujba">
<input type="checkbox" name="perepiska">
После отправки данных в скрипте появятся переменные $drujba и $obshenie.
Это будет означать, что данные элементы отмечены.
Я вас не понял.
Если имеете в виду ячейка в базе данных то можно создать одну ячейку и записывать строку вида 011 где 0 это не отмечено, а 1 - отмечено. То есть выходит первый элемент не отмечен, 2 и 3 отмечены. При редактировании разбираете строку, отмечаете те, что равно 1 и всё.
Чтобы элемент был отмечен нужно добавить к нему "checked". То есть, вот:
<input type="checkbox" name="perepiska" checked> Переписка <br>
Ответ отправил: Yadovit (статус: 8-ой класс)
Ответ отправлен: 02.08.2007, 15:54
Отвечает: Yurio
Здравствуйте, Koort!
Для всех checkbox’ов - одна ячейка, в которую будет заноситься - какой из checkbox’ов узверь выбрал.
Допустим Ваш вариант checkbox’ов. Но его необходимо немного доделать:
<input name="1w" type="checkbox" id="ForWhat" value="1">
Дружба и общение <br>
<input name="1w" type="checkbox" id="ForWhat" value="2">
Переписка <br>
<input name="1w" type="checkbox" id="ForWhat" value="3">
Любовь, отношения <br>
после отправки формы на сервер переменной ForWhat присвоится значение 1,2 или 3 - в зависимости от того, какой checkbox был выбран, или null - если ничего не выбрано.
При генерации страницы для редактирования можно поступить следующим образом.
<input name="1w" type="checkbox" id="ForWhat" value="1" <?php if ($ForWhat==1) echo "checked"; ?> >
Дружба и общение <br>
<input name="1w" type="checkbox" id="ForWhat" value="2" <?php if ($ForWhat==2) echo "checked"; ?> >
Переписка <br>
<input name="1w" type="checkbox" id="ForWhat" value="3" <?php if ($ForWhat==3) echo "checked"; ?> >
Любовь, отношения <br>
То есть смотрим - какой checkbox был кликнут юзером и "кликаем" его.
Ответ отправил: Yurio (статус: 2-ой класс)
Ответ отправлен: 02.08.2007, 16:06
Отвечает: Бородин Александр Олегович
Здравствуйте, Koort!
Лучше создать одно поле. Всем чекбоксам, естественно, разные значения, а если не отмечено, то ноль. А потом данные можно записать в таблицу в формате 0123406 и т. д. Отсюда становится ясно, что первый чекбокс не отмечен. Строку такую можно легко прочитать как массив. Если имя переменной $str, то каждый элемент строки вызовется как $str[номер позиции цифры в строке]. Строки, в таком случае, будут все одной длины, поэтому Вы не очень-то и рискуете.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Отвечает: Flynn
Здравствуйте, Koort!
Вариантов реализации такого может быть множество.
Можно для каждого свою ячейку - простой поиск будет.
Можно в отдельной таблице несколько полей - юзер и название чекбокса (т.е. если он там есть - значит его выбрали) - немного сложнее поиск и выборка, но уменьшенная избыточность.
Можно каждому значению присвоить какой-то квадрат двойки и суммировать их. Т.е. дружба - 1, переписка - 2, любовь - 4, еще что-нить - 8. Тогда например число 7 будет значить что выбраны 4(любовь),2(переписка) и 1(дружба), а 10 - это 8(что-то еще) и 2(переписка). Сумма хранится в одной ячейке и только уже в самом РНР переводится в значения. Но по такому методу сложно искать какой-то определенное значение или их совокупность.
Отредактировано: двойное обращение
--------- =deepTeNk= (Профессор)
Ответ отправил: Flynn (статус: 4-ый класс)
Ответ отправлен: 02.08.2007, 16:27
Отвечает: Сорочан Александр Александрович
Здравствуйте, Koort!
1.да
2.нет
3. добавить name в <input>
и заданая форма будет его отсылать куда надо.
пример:
Отвечает: Василенко Алексей Васильевич
Здравствуйте, Koort!
однозначного ответа на вопрос нет, т.к. все зависит от стиля вопроса.
Т.е. если вариант ответа должен быть один, то сохранить нужно только код варианта; если можно выбрать 2а и более варианта, то /*для данного примера*/ нужно сохранить состояние кажого из вариантов.
При редактировании нужно прочитать ранее выбранный вариант(ы) и предоставить форму для изменения выбора.
--------- Готовых решений небыло, нет и не будет... вся жизнь - это лишь размышления на тему
Здраствуйте, уважаемые эксперты!
Столкнулся с такой проблемой: мои рнр - программы, запускаемые на компьютере при помощи Апача, не передают данные сами в себя, т.е. например счетчик кликов не работает. При этом когда заливаю в интернет, все работает нормально. Раньше не было проблем и с локальной версией. Подскажите, пожалуйста, что могло вызвать эту проблему, и как ее исправить (какие настройки изменить)?
Отвечает: M@gi$†e®
Здравствуйте, Павел Владимирович!
Думаю, надо в локальном php.ini установить директиву register_globals = on
--------- Aquila non Capta Muscas
Ответ отправил: M@gi$†e® (статус: 3-ий класс)
Ответ отправлен: 02.08.2007, 18:08 Оценка за ответ: 4 Комментарий оценки: Уже пробовал, не помогло
Отвечает: Бородин Александр Олегович
Здравствуйте, Павел Владимирович!
Думаю, в локале директиву register_globals = On выставлять не надо, потому что и на хостинге она, скорее всего, тоже выключена. У любого вменяемого хостера эта директива отключена, потому что это серьезная угроза безопасности сервера. Поэтому чтобы не привыкать к "плохому", лучше и не приучаться. Собственно, поэтому я и думаю, что не "глобалсах" дело. Лучше бы Вы код привели.
Что касается отладки программ, то стоит попробовать отлаживать программы построчно. Вставляйте в программы заглушечные значения, тестовые значения, слова. Я понимаю, что совет не очень помогает, но любой программист должен уметь находить ошибки. Потому что он неминуемо их совершает.
С уважением, Бородин Александр Олегович
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 5-ый класс)
Ответ отправлен: 02.08.2007, 18:34 Оценка за ответ: 4 Комментарий оценки: При заливке на сайт (в интернете) все работает нормально! - не в коде дело. Проблема только с апачем. Я отлаживаю примерно так, но не в этом дело. register_globals = On не помогло, помогате сохранить данные $_GET[ ], но программа все равно работает не корректно.
Отвечает: Сорочан Александр Александрович
Здравствуйте, Павел Владимирович!
Каким способом передаються данные?
скорее всего через глобальные переменые значит надо включить опцию register_globals в php.ini (такой способ передачи не желателен из за безопасности).
Ответ отправил: Сорочан Александр Александрович (статус: 1-ый класс)
Ответ отправлен: 03.08.2007, 00:22 Оценка за ответ: 4 Комментарий оценки: Уже пробовал, не помогло