Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Добавление записи в БД [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
Altynayka
Отправлено: 29 Апреля, 2008 - 08:18:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Возник вопрос при обработке запроса, т.е. если у меня в базе данных уже есть такая запись с таким номером, который является уникальным, то при попытке ввести запись с таким же номером, обрывается сообщение об ошибке, генерируемым mysql. Можно ли обработать это сообщение и вывести свое сообщение. И вообще как можно обрабатывать различные сообщения mysql.
Заранее спасибо.
 
 Top
EuGen Администратор
Отправлено: 29 Апреля, 2008 - 09:32:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если Вам нужно оставлять свои сообщения об ошибках, то придется проверять вручную ситуацию, когда ошибка возникает.
В Вашем примере разумно использовать свойство auto_increment, но как пример можно делать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //простая проверка на уникальность
  4. $field0=(int)($_POST['field0']);
  5. if ($field0)
  6. {
  7.    $res=mysql_query("SELECT `field0` FROM `table0` WHERE `field0`=".$field0);
  8.    if(mysql_num_rows($res))
  9.       $error="Ошибка - в таблице найдено переданное значение";
  10.    else
  11.    {
  12.       mysql_query("INSERT INTO `table0` (`field0`) VALUES (".$field0.")");
  13.       if(!mysql_error())
  14.          $error="Успешно обработано";
  15.       else //в этом случае ошибка будет другого рода, нежели ошибка "duplicate entry"
  16.          $error="Ошибка при работе с таблицей: ".$mysql_error();
  17.    }
  18.    echo($error);
  19. }
  20. ?>
  21.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Altynayka
Отправлено: 23 Мая, 2008 - 05:35:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Еще один вопрос по добавлению записей.
Как сделать запрос, если нужно добавить значение в checkboxe. Т.е. нужно добавить "0" или "1", либо "истина"/ "ложь".
При чем есть несколько checkbox-ов, и при изменении одного из checkboxов , например, записывались в БД все текущие состояния.
И еще какой тип данных при этом дучше использовать в БД?

(Отредактировано автором: 23 Мая, 2008 - 05:46:34)

 
 Top
EuGen Администратор
Отправлено: 23 Мая, 2008 - 09:49:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если у Вас несколько чекбоксов, то лучше использовать тип BOOL и несколько полей в таблице (так будет проще отображать, да и использовать - тоже).
В MySQL тип BOOL на самом деле есть TINYINT(1). Принимает соответственно целочисленные значения 0 и 1.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SergeantPEPPER
Отправлено: 23 Мая, 2008 - 09:54:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


Помог: 0 раз(а)




Вопрос я понял так: есть несколько чекбоксов, при изменении любого из них, со ВСЕХ чекбоксов снимается текущая информация и записывается в бд.

По порядку:
- показания чекбоксов снимаются Javascript-ом
- обращение к серверу при изменении статуса чекбокса делается AJAX-ом
- запись данных в бд делается PHP-скриптом, который был вызван прошлым пунктом.

Для хранения данных (1 и 0) - хорошо подходит булевский тип (можно также взять маленький TINYINT).
 
 Top
Altynayka
Отправлено: 30 Мая, 2008 - 10:09:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen,SergeantPEPPER
вы немогли бы показать мне простой пример, отображения данных из БД и запись в ту же БД посредством AJAX.
Много читала, но все так запутанно, что в голове каша, а понять ничего не могу.
Очень прошу.
 
 Top
D1mOn
Отправлено: 30 Мая, 2008 - 10:15:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


А при чем здесь Аякс?
 
 Top
scuter
Отправлено: 30 Мая, 2008 - 14:57:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




D1mOn Радость
Altynayka Радость
чтобы через аяксус передавать переменные,
надо пользоваться JSON, чтобы закидывать данные в ДБ
надо пользоваться PHP скриптом,

надеюсь конект бедной интернет странички с базой данных будет достигнут.
Радость Радость Радость Радость
(Добавление)
хотя можно и без JSON,
можно попробовать так
детаем функцию для аякса
PHP:
скопировать код в буфер обмена
  1. function file_get_contents( url ) {
  2.     var req = null;
  3.     try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
  4.         try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
  5.             try { req = new XMLHttpRequest(); } catch(e) {}
  6.         }
  7.     }
  8.     if (req == null) throw new Error('XMLHttpRequest not supported');
  9.  
  10.     req.open("GET", url, false);
  11.     req.send(null);
  12.  
  13.     return req.responseText;
  14. }

когда кнопка субмит нажамётся делаем следующие действия,
PHP:
скопировать код в буфер обмена
  1. function pusi_cat() {
  2.     var url = 'http://exemple.com?'; //ссылка на скрипт
  3.     url += 'COLL1='+document.getElementById('COLL1').value+'&';
  4.     url += 'COLL2='+document.getElementById('COLL2').value+'&';
  5.     url += 'COLL3='+document.getElementById('COLL3').value+'&';
  6.     url += 'COLL4='+document.getElementById('COLL4').value;
  7.     return file_get_contents(url);
  8. }

потом php получает это дело через GET
и ты закидываеш это дело в базу как то так
PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO  `content` (  `COLL1` ,  `COLL2` ,  `COLL3` ,  `COLL4` ) VALUES ('".$_GET['COLL1']."',  '".$_GET['COLL2']."',  '".$_GET['COLL4']."', '".$_GET['COLL1']."' )");

чер не обижаться пише в слепую могу гдето ошибиться.
(Добавление)
забыл сказать одну важную вещ это косяки аякса,
первый косяк не работает с windows-1251(лучше юзять UTF-8),
второй косяк кеширование данных(надеюсь этот косяк обойдёт тебя стороной).
 
 Top
D1mOn
Отправлено: 30 Мая, 2008 - 23:47:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


scuter пишет:
D1mOn
Altynayka
чтобы через аяксус передавать переменные,
надо пользоваться JSON, чтобы закидывать данные в ДБ
надо пользоваться PHP скриптом,

Во-первых, я научился юзать аякс уже давно, и написал
D1mOn пишет:
А при чем здесь Аякс?
только, потому, что мне не было понятно почему Altynayka, хочет именно аяксом добавлять в базу.

Во-вторых, вот это:
scuter пишет:
req.open("GET", url, false);
req.send(null);

return req.responseText;
лучше заменить на более изощеренное вот это
PHP:
скопировать код в буфер обмена
  1. var url="page.php?var2=1&var2=1;
  2. request.open("GET",url,true);
  3. request.onreadystatechange=MYFUNCTION(); // эта функция примет вернувшийся ответ
  4. request.send(null);


И уже в MYFUNCTION() выводим ответ посредством req.responseText, но в ней также надо проверять текущее состояние. Их всего 4. Нам нужно именно четвертое, поэтому в этой функции пишем примерно так:
CODE (text):
скопировать код в буфер обмена
  1. if(request.readyState==4)
  2.  {
  3.    if(request.status==200)
  4.    alert(req.responseText); // выводим ответ
  5.  }


Работаем дальше
Что касается кодировки, то все работает, просто когда посылаете ответ, нужно использовать echo iconv('windows-1251', 'UTF-8', "ВАШ ТЕКСТ");

Что касается хеширования, то оно легко убирается, если поставить в скрипте, вначале, вот такой код:
PHP:
скопировать код в буфер обмена
  1. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  2.    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  3.    header("Cache-Control: no-store, no-cache, must-revalidate");
  4.    header("Cache-Control: post-check=0, pre-check=0", false);
  5.    header("Pragma: no-cache");
(вот так хеширование обойдет Вас стороной)

Кстати, почему-то когда разговор заходит об аяксе, ни Valenok, ни EuGen и т.д. как-будто не замечают этого разговора (не видят), даже когда обращаешся к ним. Может быть эта тема "больная" у них )Это так мысли вслух.

(Отредактировано автором: 31 Мая, 2008 - 00:00:23)

 
 Top
valenok
Отправлено: 31 Мая, 2008 - 12:19:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4. // К БД не забудьте подключиться
  5.  
  6. if( isset($_GET['ajax']) ):
  7.          if(isset($_GET['somevar']))
  8.           echo "Now: ".mysql_result(mysql_query("SELECT NOW()"),0,0);
  9. die();
  10. endif;
  11.  
  12. ?>
  13.  
  14.  
  15.  
  16. <script>
  17.  
  18.  
  19. // Создаём объект
  20.  
  21.   try {    req = new XMLHttpRequest(); }
  22.    catch (trymicrosoft) {
  23.                 try {   req = new ActiveXObject("Msxml2.XMLHTTP");}
  24.                 catch (othermicrosoft) {
  25.                         try {req = new ActiveXObject("Microsoft.XMLHTTP");}
  26.                         catch (failed) {req = false; }  
  27.                 }
  28.    }
  29.  
  30.  
  31.  
  32.  
  33. // Send the request
  34. function loadXMLDoc(url){
  35.         if (!req) return false;
  36.  
  37.             req.open("GET", url, true); // метод, адрес, асинхронно(true / false)
  38.             req.onreadystatechange = processReqChange; // ф-ция вызываемая когда вернётся ответ
  39.             req.send(null);
  40. }
  41.  
  42.  
  43.  
  44. // Working out the response
  45. function processReqChange(){
  46.         if (req.readyState != 4 || req.status != 200 ) return false; //если сервер вернул заголовок 200 и ошибок не было
  47.         alert(req.responseText);
  48. }
  49.  
  50.  
  51. </script>
  52.  
  53.  
  54. <input type='button' onclick='loadXMLDoc("?ajax&somevar=someval&x=2")' >
  55.  
  56.  
  57.  


Отредактировано администратором: (adm) Valenok, 01 Июня, 2008 - 06:44:21


-----
Truly yours, Sasha.
 
My status
 Top
Altynayka
Отправлено: 02 Июня, 2008 - 10:42:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




valenok
а как обработать не при нажатии на кнопку, а при загрузке страницы, чтобы записать ip, напрмер. на
CODE (text):
скопировать код в буфер обмена
  1. <body onload='loadXMLDoc("?ajax&somevar=someval&x=2")' >

?????
 
 Top
valenok
Отправлено: 02 Июня, 2008 - 15:59:03
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А так не работает как вы показали ?
Чтобы записать ip можно и не использовать аякс.


-----
Truly yours, Sasha.
 
My status
 Top
Altynayka
Отправлено: 06 Июня, 2008 - 10:43:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




valenok пишет:
Чтобы записать ip можно и не использовать аякс.

вообще-то мне не для этого нужен AJAX был.
мне надо вывести содержимое БД (через выборку), при нажатии на опр. элемент(область) страницы,а вывод должен пройзойти после того,как произойдет событие Onclick. И вывести надо в определенной ячейке. Без перезагрузки страницы.
Можно какой-нибудь простой примерчик.
Заранее спасибо.
 
 Top
valenok
Отправлено: 06 Июня, 2008 - 16:47:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




http://php.su/forum/topic.php?fo...25545#1212225545
К нужному элементу приписываем нужное событие.


-----
Truly yours, Sasha.
 
My status
 Top
Altynayka
Отправлено: 09 Июня, 2008 - 06:17:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




подскажите как передать например значение из php файла, хранящееся в переменной
$data['sel_a2']; в js файл?
я не могу понять...
очень прошу.

(Отредактировано автором: 09 Июня, 2008 - 06:18:11)

 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB