Приветствую, форумчани!. Я начинающий(ну совсем начинающий :lol: ) php-программист и у меня возникла проблема при составлении запроса к бд. Принцип работы куска проекта, где у меня проблемы: На страничке два поля. Одно числовое, второе - с датой. Поля могут быть произвольными: пользователь имеет возможность вбить любое целое не минусовое число и любую дату. Каждому числу соответствует одна дата. Дата может уже быть в таблице, а может и не быть. Что я смог добиться: Вариант 1: Данные добавляются в таблицу, но не обновляются. Вариант 2: Данные добавляются в таблицу, но обновляются все поля и дата встает на все нули. Вариант 3: Ничего не работает. Собственно не один из трех вариантов мне по понятным причинам не подходит, сам проблему решить не могу(Да, доки читал, но понял не достаточно хорошо чтобы применить на практике) по-этому спрашиваю у вас. Заранее спасибо за помощь. NB: Страница с формой. PHP: <?php ob_start("ob_gzhandler"); require 'config.php'; session_start(); if (!empty($_GET['password']) == $add_admin_password) { echo " <center> <form method='post' action='restart.php'> <table> <tr><td>Введите количество смс:</td><td><input type='text' name='sms' value='' size='20' /><br></td></tr> <tr><td>Введите дату:</td><td><input type='date' name='smsdate' value='' size='20' /></td></tr> <tr><td><input type='hidden' name='add_admin_password' value='$add_admin_password' /></tr></td> <tr><td colspan=2 align='center'><input type='submit' value='Обновить информацию' /></td><td></td></tr> </table> </form> </center>"; } ?> Страница restart.php: PHP: <?php require 'config.php'; if(isset($_POST['sms'],$_POST['smsdate'],$_POST['add_admin_password'])&&$_POST['add_admin_password']==$add_admin_password) { $db = mysql_connect($server_db,$login_db,$pass_db) or die('mysql_connect '.mysql_error()); mysql_select_db($db_name) or die('mysql_select_db '.mysql_error()); mysql_query( "INSERT INTO ".$table_name."_users (sms,smsdate) VALUES ('".$_POST['sms']."','".$_POST['smsdate']."')") or die('select error:'.mysql_error()); mysql_close($db) or die('mysql_close '.mysql_error()); echo "<center><br>Количество смс за <strong>".$_POST['smsdate']."</strong> обновлено: <strong>".$_POST['sms']."</strong> шт.</center>"; } ?>
Кстати моя версия решения задачи: Шаг 1: получаем данные в переменные. Шаг 2: проверяем есть ли в бд поле с текущим значением smsdate и если есть, то делаем UPDATE, а если нету - INSERT. Только как реализовать проверку на то есть ли уже такая инфа в бд я хз.
Реализовывается просто: (как пример, все зависит от того что нужно проверить) PHP: <?php require 'config.php'; if(isset($_POST['sms'],$_POST['smsdate'],$_POST['add_admin_password'])&&$_POST['add_admin_password']==$add_admin_password) { $db = mysql_connect($server_db,$login_db,$pass_db) or die('mysql_connect '.mysql_error()); mysql_select_db($db_name) or die('mysql_select_db '.mysql_error()); $result = mysql_query("SELECT * FROM ".$table_name."_users WHERE `smsdate` = '".$_POST['smsdate']."'"); //тут конечно возможно придется обработать дату, в зависимости в каком формате она у тебя предаставлена в базе if ($result != false) { //здесь обновляем значение в таблице, т.к. оно уже есть } else { //здесь добавляем новую запись, т.к. его нет } } ?> Написал на скорую руку, по этому возможны и ошибки в проверке. Точно не помню что возвращает функция mysql_query в случае отсутствия записи. Кстати еще советовал бы тебе проверять форму, точнее поля для ввода. Защита прежде всего.
Есть информация об этой дате в бд или нет. В данном случае нет - функционал проекта поставлен таким образом, что получение взломщика даже полного контроля над всем и вся - глубоко фиолетово. Кстати у товарища из соседней(http://www.php.ru/forum/viewtopic.php?t=36759) темы в форме запроса был такой забавный ништячек(выделен ниже) без которого всё не хотело работать: Код (Text): <input name="fio" type="text" size="15" [забавный_ништячек]id="fio"[/забавный_ништячек]> Никак не могу понять что это за id? Просветит может кто?
2tommyangelo, а! так вот о чем речь! И в таблице нужно под него выделить поле? Или это тот, который задается после полей в выноске "Индекс"? (типа там где примари и тд). и если это он - с чем мне его связать? походу с smsdate? (тут выбор не велик - либо смс, либо смсдейт)
Koka id в базе данных обычно не имеет ничего общего с атрибутом id разметки. Но можешь привязать и к id базы. Совет - сначала выучи html+css, а только потом php для сайтов html первичен, так как именно его выводит браузер. php - вторичен.
я весьма не плохо знаю html+css. для меня пришло время именно php. всмысле? можно пример кода этой самой привязки? а то я не очень понял о чем ты.
никак не согласуются с отсутствием знания что такое id Это я не понял, что ты имел в виду под Честно скажу - мне лень вдумываться в чужие проблемы. Изначально в этой теме только ответил на вопрос, что такое id
я не знал о том, что id можно так использовать и подумал, что это какое-то из особых свойств <form></form>. (да, каюсь, дико затупил).