<?php
//соединение с базой данных при помощи функции mysql_connect()
//в аргументах функции укажите имя сервера, логин и пароль.
$db = mysql_connect("localhost","root","");
//функция mysql_select_db() выбирает текущую
//базу данных с именем "test"
mysql_select_db("bsm_demo" ,$db);
//функция mysql_query() выполняет запрос на выборку данных
//результирующий набор данных хранится в переменной $sql
$sql = mysql_query("SELECT * FROM lib" ,$db);
//после получения данных начнём формирование HTML-таблицы
echo ("<table cellspacing='2' cellpadding='2' border='1' width='100%'>");
//выводим строку заголовков
echo ("<tr><td>Статус</td><td>Название книги</td><td><br _moz_editor_bogus_node='on'></td></tr>");
//функция mysql_fetch_row() извлекает одну строку из результата
//и сохраняет её в массиве $tablerows
while ($tablerows = mysql_fetch_row($sql))
{
//теперь в цикле для каждой полученной строки сделаем вывод
//$tablerows[1] соответствует полю "status"
//$tablerows[2] соответствует полю "name"
$list="<select name='stat' size='1'><option value='$tablerows[1]' SELECTED>В наличии</option><option value='$tablerows[1]'> Отсутствует </option></select>";
echo("<tr><td width='50'");
if ($tablerows[1]>0)
echo ("class='n'");
else
echo ("class='y'");
echo ("></td><td>$tablerows[2]</td><td align='right'>$list</td></tr> ");
}
echo "</table>";
//закрытие соединение (рекомендуется)
mysql_close($db);
?>
Данный код выводит данные из таблицы
id | status | name
Подскажите как реализовать:
При генерации таблицы в php select форма соответствовала статусу
В наличии / Отсутствует
При смене в select формы происходила запись значения в базу к нужной книге
0 - В наличии
1 - Отсутсвует
данный скрипт для самообучения, так что за код не пинайте строго =)
Спустя 13 минут, 23 секунды (10.11.2010 - 14:43) Sanchopansa написал(а):
ну для удобства лучше юзай
тогда у тебя на выходе будет ассоциативный массив..
и можно будет обращаться к данным так
вместо
чтоб не менять сильно твой код можно сделать так.. но совсем правильно
а что по поводу записи при смене то отлавливай событие у селекта onchange и отправляй форму
while ($tablerows = mysql_fetch_assoc($sql))
тогда у тебя на выходе будет ассоциативный массив..
и можно будет обращаться к данным так
$tablerows['name']
вместо
$tablerows[2]
чтоб не менять сильно твой код можно сделать так.. но совсем правильно
$list=($tablerows[1])?"<select name='stat' size='1'><option value='$tablerows[1]' SELECTED>В наличии</option><option value='$tablerows[1]'> Отсутствует </option></select>":"<select name='stat' size='1'><option value='$tablerows[1]'>В наличии</option><option value='$tablerows[1]' selected> Отсутствует </option></select>";
а что по поводу записи при смене то отлавливай событие у селекта onchange и отправляй форму
Спустя 38 минут, 11 секунд (10.11.2010 - 15:22) Glomen написал(а):
$list=($tablerows[1])?"<form name='form_name' aсtion='insert_stat.php' method='post'><select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]' SELECTED>Отсутствует</option><option value='$tablerows[1]'> В наличии </option></select>":"<select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]'> Отсутствует</option><option value='$tablerows[1]' selected> В наличии </option></select></form>";
Вот делаю так , вроде должно быть правильно.
Но как я понимаю нужно увязывать статус книги с ее id ? Иначе нельзя будет записать изменения в таблицу.
Спустя 10 минут, 57 секунд (10.11.2010 - 15:33) Sanchopansa написал(а):
ну нужно сделать в документе форму.. а также в первом селекте тоже добавь яваскрипт на onchange
и нада написать функцию на яваскрипте для отправки формы.. типа так
а ХТМЛ типа такого :
и нада написать функцию на яваскрипте для отправки формы.. типа так
function sendForm(id)
{
var form = document.getElementById('myForm');
form.id = id;
form.submit();
}
а ХТМЛ типа такого :
<form action="" id="myForm" method="POST">
тут таблица твоя
<input type="hidden" name="id" />
</form>
Спустя 3 часа, 4 минуты, 36 секунд (10.11.2010 - 18:37) Glomen написал(а):
Вот что наколякал
Теперь только осталось написать запрос для апдейта в базе значений ?
Просто меняю значения в select, а он никак не реагирует, хотя бs должен бросать на файл, ан нет.
<head>
<script type="text/javascript">
function sendForm(id)
{
var form = document.getElementById('form_name');
form.id = id;
form.submit();
}
</script>
</head>
<?php
//соединение с базой данных при помощи функции mysql_connect()
//в аргументах функции укажите имя сервера, логин и пароль.
$db = mysql_connect("localhost","root","");
//функция mysql_select_db() выбирает текущую
//базу данных с именем "test"
mysql_select_db("bsm_demo" ,$db);
//функция mysql_query() выполняет запрос на выборку данных
//результирующий набор данных хранится в переменной $sql
$sql = mysql_query("SELECT * FROM lib" ,$db);
//после получения данных начнём формирование HTML-таблицы
echo ("<form action='' id='form_name' method='POST'>");
echo ("<table cellspacing='2' cellpadding='2' border='1' width='100%'>");
//выводим строку заголовков
echo ("<tr><td>Статус</td><td>Название книги</td><td><br _moz_editor_bogus_node='on'></td></tr>");
//функция mysql_fetch_row() извлекает одну строку из результата
//и сохраняет её в массиве $tablerows
while ($tablerows = mysql_fetch_row($sql))
{
//теперь в цикле для каждой полученной строки сделаем вывод
//$tablerows[1] соответствует полю "status"
//$tablerows[2] соответствует полю "name"
$list=($tablerows[1])?"<form name='form_name' aсtion='insert_stat.php' method='post'><select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]' SELECTED>Отсутствует</option><option value='$tablerows[1]'> В наличии </option></select>":"<select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]'> Отсутствует</option><option value='$tablerows[1]' selected> В наличии </option></select></form>";
echo("<tr><td width='50'");
if ($tablerows[1]>0)
echo ("class='n'");
else
echo ("class='y'");
echo ("></td><td>$tablerows[2]</td><td align='right'>$list</td></tr> ");
}
echo "</table>";
echo " <input type='hidden' name='id' /></form>";
//закрытие соединение (рекомендуется)
mysql_close($db);
?>
Теперь только осталось написать запрос для апдейта в базе значений ?
Просто меняю значения в select, а он никак не реагирует, хотя бs должен бросать на файл, ан нет.
Спустя 3 часа, 13 минут, 46 секунд (10.11.2010 - 21:51) Sanchopansa написал(а):
зачем ты делаешь две формы?
м тут форму
вот короче тебе пример:
файл index.php
и add.php
echo ("<form action='' id='form_name' method='POST'>");
м тут форму
$list=($tablerows[1])?"<form name='form_name' aсtion='insert_stat.php' method='post'><select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]' SELECTED>Отсутствует</option><option value='$tablerows[1]'> В наличии </option></select>":"<select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[1]'> Отсутствует</option><option value='$tablerows[1]' selected> В наличии </option></select></form>";
echo("<tr><td width='50'");
вот короче тебе пример:
файл index.php
<script type="text/javascript">
function send (id)
{
var form = document.getElementById('form1');
form.id.value = id;
form.submit();
}
</script>
<form action="add.php" id="form1" method="POST">
<select name="select1" onchange="send(1);">
<option value="1" selected>определен</option>
<option value="0">не определен</option>
</select>
<select name="select2" onchange="send(2);">
<option value="1">определен</option>
<option value="0" selected>не определен</option>
</select>
<input type="hidden" name="id" />
</form>
и add.php
$id = $_POST['id'];
$val = $_POST['select'.$id];
echo 'ID = ' . $id . ' Select value = ' . $val;
Спустя 1 день, 13 часов, 39 минут, 19 секунд (12.11.2010 - 11:30) Glomen написал(а):
Все запутался окончательно =) Решил упростить и сделать отправку кнопкой.
Вот что получилось
index.php
insert_stat.php
Все тихо, не работает ничего
Вот что получилось
index.php
<?php
//соединение с базой данных при помощи функции mysql_connect()
//в аргументах функции укажите имя сервера, логин и пароль.
$db = mysql_connect("localhost","root","");
//функция mysql_select_db() выбирает текущую
//базу данных с именем "test"
mysql_select_db("bsm_demo" ,$db);
//функция mysql_query() выполняет запрос на выборку данных
//результирующий набор данных хранится в переменной $sql
$sql = mysql_query("SELECT * FROM lib" ,$db);
//после получения данных начнём формирование HTML-таблицы
echo ("<form name='form_name' aсtion='insert_stat.php' method='post'>");
echo ("<table cellspacing='2' cellpadding='2' border='1' width='100%'>");
//выводим строку заголовков
echo ("<tr><td>Статус</td><td>Название книги</td><td><br _moz_editor_bogus_node='on'></td></tr>");
//функция mysql_fetch_row() извлекает одну строку из результата
//и сохраняет её в массиве $tablerows
while ($tablerows = mysql_fetch_assoc($sql))
{
//теперь в цикле для каждой полученной строки сделаем вывод
//$tablerows[status] соответствует полю "status"
//$tablerows[name] соответствует полю "name"
$list=($tablerows[status])?"<select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[status]' SELECTED>Отсутствует</option><option value='$tablerows[status]'> В наличии </option></select>":"<select onChange='document.forms['form_name'].submit()' name='stat' size='1'><option value='$tablerows[status]'> Отсутствует</option><option value='$tablerows[status]' selected> В наличии </option></select>";
echo("<tr><td width='50'");
if ($tablerows[status]>0)
echo ("class='n'");
else
echo ("class='y'");
echo ("></td><td>$tablerows[name]</td><td align='right'>$list</td></tr> ");
}
echo "</table>";
echo " <input type='submit' value='ВВОД'></form>";
//закрытие соединение (рекомендуется)
mysql_close($db);
?>
insert_stat.php
<?php
/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "bsm_demo"; // название базы данных
/* Таблица MySQL, в которой хранятся данные */
$table = "lib";
/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
/* Если была нажата кнопка редактирования, вносим изменения */
if(@$submit_edit) {
$query = "UPDATE $table SET status='$status' WHERE name='$name'";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die (mysql_error());
}
/* Закрываем соединение */
mysql_close();
/* Выводим ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.php\">Вернуться назад</a></div>");
?>
Все тихо, не работает ничего
Спустя 5 минут, 16 секунд (12.11.2010 - 11:35) Sanchopansa написал(а):
Что значит все тихо? форма не отправляется при выборе в селекте?
И покажи мне где ты в этом файле получаешь данные от формы?
И покажи мне где ты в этом файле получаешь данные от формы?
/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "bsm_demo"; // название базы данных
/* Таблица MySQL, в которой хранятся данные */
$table = "lib";
/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
/* Если была нажата кнопка редактирования, вносим изменения */
if(@$submit_edit) {
$query = "UPDATE $table SET status='$status' WHERE name='$name'";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die (mysql_error());
}
/* Закрываем соединение */
mysql_close();
/* Выводим ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.php\">Вернуться назад</a></div>");
Спустя 36 минут, 52 секунды (12.11.2010 - 12:12) Glomen написал(а):
Да данные не уходят из формы, видимо мож я что то с путями напутал к файлу который должен принимать данные, но они лежат в 1 каталоге.
Спустя 1 час, 43 минуты, 2 секунды (12.11.2010 - 13:55) inpost написал(а):
Glomen
Форму и скрипт-обработчик делай в одном файле, логика такая, в начале проверяется, есть ли $_POST, если нету - выводится форма, если есть - обрабатывается файл.
Путь пишется так: <form action="" method="post">
Теперь и с путями никогда проблем не будет, и скрипт легко импортируется под другие сайты.
echo в скобки брать не надо: echo "ТЕКСТ";, а ещё лучше использовать одинарные кавычки, в них отлично можно додерживаться стандартов ХТМЛ: echo '<span class="beer" id="beer">';
Форму и скрипт-обработчик делай в одном файле, логика такая, в начале проверяется, есть ли $_POST, если нету - выводится форма, если есть - обрабатывается файл.
Путь пишется так: <form action="" method="post">
Теперь и с путями никогда проблем не будет, и скрипт легко импортируется под другие сайты.
echo в скобки брать не надо: echo "ТЕКСТ";, а ещё лучше использовать одинарные кавычки, в них отлично можно додерживаться стандартов ХТМЛ: echo '<span class="beer" id="beer">';
Спустя 1 день, 23 минуты, 3 секунды (13.11.2010 - 14:18) Glomen написал(а):
Все запутался окончательно. Уже и форму пытался переделать и как-нибудь составить форму по другому, что бы можно было проще менять статус.
Помогите написать обработчик формы, что бы можно было при изменении селекта выставлять статус книги.
Вот что отображается
Структура базы
lib ===
id | name | status
Нужно по изменению селекта на форме изменять значение статуса книги в базе
0 - Доступен
1 - Не доступен
Помогите написать обработчик формы, что бы можно было при изменении селекта выставлять статус книги.
<?php
//соединение с базой данных при помощи функции mysql_connect()
//в аргументах функции укажите имя сервера, логин и пароль.
$db = mysql_connect("localhost","root","");
//функция mysql_select_db() выбирает текущую
//базу данных с именем "test"
mysql_select_db("bsm_demo" ,$db);
//функция mysql_query() выполняет запрос на выборку данных
//результирующий набор данных хранится в переменной $sql
$sql = mysql_query("SELECT * FROM lib" ,$db);
//после получения данных начнём формирование HTML-таблицы
echo ("<form action='' id='form1' name='stat' method='POST'>");
echo ("<table cellspacing='2' cellpadding='2' border='1' width='100%'>");
//выводим строку заголовков
echo ("<tr><td>Статус</td><td>Название книги</td><td><br _moz_editor_bogus_node='on'></td></tr>");
//функция mysql_fetch_row() извлекает одну строку из результата
//и сохраняет её в массиве $tablerows
while ($tablerows = mysql_fetch_assoc($sql))
{
//теперь в цикле для каждой полученной строки сделаем вывод
//$tablerows[status] соответствует полю "status"
//$tablerows[name] соответствует полю "name"
$list=($tablerows[status])?"<select name='select1' onchange='send(1);' size='1'><option name='a1' value='$tablerows[status]' SELECTED>Отсутствует</option><option value='$tablerows[status]'> В наличии </option></select>":"<select name='select2' onchange='send(2);' size='1'><option value='$tablerows[status]'> Отсутствует</option><option value='$tablerows[status]' selected> В наличии </option></select>";
echo("<tr><td width='50'");
if ($tablerows[status]>0)
echo ("class='n'");
else
echo ("class='y'");
echo ("></td><td>$tablerows[name]</td><td align='right'>$list</td></tr> ");
}
echo "</table>";
echo " <input type='button' value='Изменить' name='id' /></form>";
//закрытие соединение (рекомендуется)
mysql_close($db);
?>
Вот что отображается
Структура базы
lib ===
id | name | status
Нужно по изменению селекта на форме изменять значение статуса книги в базе
0 - Доступен
1 - Не доступен
Спустя 1 час, 4 минуты, 54 секунды (13.11.2010 - 15:23) inpost написал(а):
надо: input type="submit" , button используется для работы с JS как кнопка, которая вызывает какой-то скрипт.
Спустя 2 часа, 4 минуты, 33 секунды (13.11.2010 - 17:28) Glomen написал(а):
Да, что то я затупил =) все данные начались передаваться в скрипт.
А вот как передать значения Списков выпадающих ?
Я понимаю что нужно сравнить id или name колонку и по ней вставить status
Но вот тут список динамически формируется, как из него достать значение ?
то есть мне нужно что бы при нажатии кнопки Изменить скрипт собирал значения с select_ов и названия книг, передавал их скрипту для занесения в базу, а скрипт принимал значения и передавал в базу значения статуса книги, сравнивая его с именем книги, мои мысли в верном направлении идут ?
А вот как передать значения Списков выпадающих ?
Я понимаю что нужно сравнить id или name колонку и по ней вставить status
Но вот тут список динамически формируется, как из него достать значение ?
$list=($tablerows[status])?"<select name='select1' size='1'><option name='a1' value='1' SELECTED>Отсутствует</option><option value='0'> В наличии </option></select>":"<select name='select2' ' size='1'><option value='1'> Отсутствует</option><option value='0' selected> В наличии </option></select>";
то есть мне нужно что бы при нажатии кнопки Изменить скрипт собирал значения с select_ов и названия книг, передавал их скрипту для занесения в базу, а скрипт принимал значения и передавал в базу значения статуса книги, сравнивая его с именем книги, мои мысли в верном направлении идут ?
Спустя 1 день, 18 часов, 20 минут, 17 секунд (15.11.2010 - 11:48) Glomen написал(а):
так вроде разобрался немного.
Так формирую список значений.
Если проверить GET то получаю
Значит значения передаются. Подскажите как составить запрос в базу, что бы перенести туда значения.
$list=($tablerows[status])?"<select name='select_$tablerows[id]' size='1'><option name='a1' value='1' SELECTED>Отсутствует</option><option value='0'> В наличии </option></select>":"<select name='select_$tablerows[id]' size='1'><option value='1'> Отсутствует</option><option value='0' selected> В наличии </option></select>";
Так формирую список значений.
Если проверить GET то получаю
add.php?select_1=1&select_2=0&select_3=0&select_4=0&select_5=0&select_6=1&select_7=1&select_8=1&select_9=1&select_10=0&select_11=1&select_12=1&select_13=0&select_14=1&select_15=1&select_16=1&select_17=1&select_18=0&select_19=0
Значит значения передаются. Подскажите как составить запрос в базу, что бы перенести туда значения.
Спустя 2 часа, 36 минут, 9 секунд (15.11.2010 - 14:24) inpost написал(а):
Передаёшь POST, проверяешь:
Вставка в БД... ищи в гугле, вот один из примеров работы:
http://php.su/mysql/?functions
Мини пример:
echo "<pre>";
print_r($_POST);
echo "</pre>";
Вставка в БД... ищи в гугле, вот один из примеров работы:
http://php.su/mysql/?functions
Мини пример:
mysql_query("INSERT INTO `table` SET
`select1`='".$select1."',
`select2`='".$select2."'
");
Спустя 2 часа, 28 минут, 57 секунд (15.11.2010 - 16:53) Glomen написал(а):
Да так и сделал, но если количество книг увеличиться, то придется править в ручную запрос.
Спустя 2 дня, 17 часов, 15 минут, 33 секунды (18.11.2010 - 10:09) trish написал(а):
у меня другая проблема: есть 2 таблицы в БД - region (поля - region, name) и cities (city, name, region). Надо чтоб формировался выпадающий список из регионов (<select>) и при выборе конкретного региона формировался список городов, соответствующий данному региону (т.е. чтоб region.region = cities.region).
не знаю как передать значения из одного списка в другой. Помогите, пожалуйста, я уже третий день пытаюсь разобраться. Пробовала и через javascript, но вот где ошибки - не вижу......
<?
// соединение с базой
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("mybase", $conn);
echo "<form method=post action=sel_f.php>";
// первый выпадающий список
$query = "select * from cms_region";
$cat = mysql_query($query,$conn);
if(!$cat) exit(mysql_error());
// Если имеется хотя бы одна запись
// формируем выпадающий список
if(mysql_num_rows($cat) > 0)
{
echo "<select name=id>";
while($catalog = mysql_fetch_assoc($cat))
{
if($catalog['region'] == $catalog['region']) $selected = "selected";
else $selected = "";
echo "<option value=$catalog[region] $selected>$catalog[name]</option>";
}
echo "</select>";
}
// Формируем второй выпадающий список
$query = "select * FROM cms_cities WHERE region='$catalog[region]'";
$prd = mysql_query($query);
if(!$prd) exit(mysql_error());
if(mysql_num_rows($prd) > 0)
{
echo "<select name=id2>";
while($product = mysql_fetch_assoc($prd))
{
echo "<option value=$product[region]>$product[name]</option>";
}
echo "</select> ";
}
// Конец HTML-формы
echo "<br> <input type=submit value=Go!></form>";
?>
не знаю как передать значения из одного списка в другой. Помогите, пожалуйста, я уже третий день пытаюсь разобраться. Пробовала и через javascript, но вот где ошибки - не вижу......
Спустя 3 часа, 3 секунды (18.11.2010 - 13:09) inpost написал(а):
Одно и то же каждый день! Со своими проблемами в свою тему.
Спустя 58 минут, 10 секунд (18.11.2010 - 14:07) trish написал(а):
а вот нашла то, что надо в теме
Страна>Регион>Город selectы Спасибо!
Страна>Регион>Город selectы Спасибо!