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
Форумы портала PHP.SU :: Версия для печати :: Добавление записи в БД [2]
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Добавление записи в БД

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

16. Altynayka - 29 Апреля, 2008 - 08:18:30 - перейти к сообщению
Возник вопрос при обработке запроса, т.е. если у меня в базе данных уже есть такая запись с таким номером, который является уникальным, то при попытке ввести запись с таким же номером, обрывается сообщение об ошибке, генерируемым mysql. Можно ли обработать это сообщение и вывести свое сообщение. И вообще как можно обрабатывать различные сообщения mysql.
Заранее спасибо.
17. EuGen - 29 Апреля, 2008 - 09:32:45 - перейти к сообщению
Если Вам нужно оставлять свои сообщения об ошибках, то придется проверять вручную ситуацию, когда ошибка возникает.
В Вашем примере разумно использовать свойство 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.  
18. Altynayka - 23 Мая, 2008 - 05:35:16 - перейти к сообщению
Еще один вопрос по добавлению записей.
Как сделать запрос, если нужно добавить значение в checkboxe. Т.е. нужно добавить "0" или "1", либо "истина"/ "ложь".
При чем есть несколько checkbox-ов, и при изменении одного из checkboxов , например, записывались в БД все текущие состояния.
И еще какой тип данных при этом дучше использовать в БД?
19. EuGen - 23 Мая, 2008 - 09:49:08 - перейти к сообщению
Если у Вас несколько чекбоксов, то лучше использовать тип BOOL и несколько полей в таблице (так будет проще отображать, да и использовать - тоже).
В MySQL тип BOOL на самом деле есть TINYINT(1). Принимает соответственно целочисленные значения 0 и 1.
20. SergeantPEPPER - 23 Мая, 2008 - 09:54:59 - перейти к сообщению
Вопрос я понял так: есть несколько чекбоксов, при изменении любого из них, со ВСЕХ чекбоксов снимается текущая информация и записывается в бд.

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

Для хранения данных (1 и 0) - хорошо подходит булевский тип (можно также взять маленький TINYINT).
21. Altynayka - 30 Мая, 2008 - 10:09:22 - перейти к сообщению
EuGen,SergeantPEPPER
вы немогли бы показать мне простой пример, отображения данных из БД и запись в ту же БД посредством AJAX.
Много читала, но все так запутанно, что в голове каша, а понять ничего не могу.
Очень прошу.
22. D1mOn - 30 Мая, 2008 - 10:15:01 - перейти к сообщению
А при чем здесь Аякс?
23. scuter - 30 Мая, 2008 - 14:57:46 - перейти к сообщению
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),
второй косяк кеширование данных(надеюсь этот косяк обойдёт тебя стороной).
24. D1mOn - 30 Мая, 2008 - 23:47:58 - перейти к сообщению
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 и т.д. как-будто не замечают этого разговора (не видят), даже когда обращаешся к ним. Может быть эта тема "больная" у них )Это так мысли вслух.
25. valenok - 31 Мая, 2008 - 12:19:05 - перейти к сообщению
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.  
26. Altynayka - 02 Июня, 2008 - 10:42:32 - перейти к сообщению
valenok
а как обработать не при нажатии на кнопку, а при загрузке страницы, чтобы записать ip, напрмер. на
CODE (text):
скопировать код в буфер обмена
  1. <body onload='loadXMLDoc("?ajax&somevar=someval&x=2")' >

?????
27. valenok - 02 Июня, 2008 - 15:59:03 - перейти к сообщению
А так не работает как вы показали ?
Чтобы записать ip можно и не использовать аякс.
28. Altynayka - 06 Июня, 2008 - 10:43:20 - перейти к сообщению
valenok пишет:
Чтобы записать ip можно и не использовать аякс.

вообще-то мне не для этого нужен AJAX был.
мне надо вывести содержимое БД (через выборку), при нажатии на опр. элемент(область) страницы,а вывод должен пройзойти после того,как произойдет событие Onclick. И вывести надо в определенной ячейке. Без перезагрузки страницы.
Можно какой-нибудь простой примерчик.
Заранее спасибо.
29. valenok - 06 Июня, 2008 - 16:47:54 - перейти к сообщению
http://php.su/forum/topic.php?fo...25545#1212225545
К нужному элементу приписываем нужное событие.
30. Altynayka - 09 Июня, 2008 - 06:17:52 - перейти к сообщению
подскажите как передать например значение из php файла, хранящееся в переменной
$data['sel_a2']; в js файл?
я не могу понять...
очень прошу.

 

Powered by ExBB FM 1.0 RC1