классы в php
286
0
что не так в данном коде?
class db extends PDO{ function open($modul,$sort='id',$where=0,$limit='') { $this->query("select * from $modul ORDER by `$sort` $limit"); } function add($modul,$add,$where=0) { $this->exec("insert into `$modul` $add where $where"); } function edit($modul,$edit,$where=0) { $this->exec("update `$modul` set $edit where $where"); } function del($modul,$where=0) { $this->exec("delete from `$modul` where $where"); } } $db = new db("mysql:host=$DB_HOST;dbname=$DB_BASE", $DB_USER, $DB_PASS); $db->query('set charset utf8'); $db->query('SET names utf8'); $db->query('set character_set_client="utf8"'); $db->query('set character_set_connection="utf8"'); $db->query('set character_set_result="utf8"'); $res=$db->open("book"); foreach($res->fetchAll() as $pole) { echo'добавил: '.$pole[name].'<br>время: '.$pole[time].'<br>сообщение: '.$pole[msg].'<p>'; }
0
ByKuznec (17 Апреля 2014 / 02:20)страница не открывается))
print_r($res->fetchAll()); что выдает?
если за комментировать то открывается
$res=$db->open("book"); //print_r($res->fetchAll()); //foreach($res->fetchAll() as $pole) //{ // echo'добавил: '.$pole[name].'<br>время: '.$pole[time].'<br>сообщение: '.$pole[msg].'<p>'; //}
Добавлено через 05:01 сек.
мне кажется что дело именно вот в этом
function open($modul,$sort='id',$where=0,$limit='') { $this->query("select * from $modul ORDER by `$sort` $limit"); }
я просто классы только начал писать пытаюсь освоиться может быть $this-> нужно заменить на что-то другое)))
0
решил попробовать добавить return
return $this->query("select * from $modul ORDER by `$sort` $limit");все сразу заработало
lekt
17.04.2014 / 07:01
Землянин
Землянин
0
Mishutka (17 Апреля 2014 / 05:43)
решил попробовать добавить returnreturn $this->query("select * from $modul ORDER by `$sort` $limit");все сразу заработало
Мб так правильнее :
return $this->query("select * from $modul ORDER by `$sort` DESC LIMIT $limit");
0
lekt (17 Апреля 2014 / 07:01)ну во первых деск был не нужен и лимит тоже в редких случаях проще было бы написать в переменной $limit все что нужно к примеру DESC LIMIT 10 или просто LIMIT 10
Мб так правильнее :
return $this->query("select * from $modul ORDER by `$sort` DESC LIMIT $limit");
0
class db extends PDO{ function open($modul) { return $this->query("select * from `$modul` ORDER by `id` ASC"); } function open_pr($modul,$time) { return $this->query("select * from `$modul` where `time` > '$time' ORDER by `id` ASC"); } function add($modul,$add) { return $this->exec("insert into `$modul` (`name`,`time`,`msg`) values($add)"); } function edit($modul,$edit,$where='') { return $this->exec("update `$modul` set $edit $where"); } function del($modul,$d) { return $this->exec("delete from `$modul` where `id`='$d'"); } } $db = new db("mysql:host=$DB_HOST;dbname=$DB_BASE", $DB_USER, $DB_PASS); $db->query('set charset utf8'); $db->query('SET names utf8'); $db->query('set character_set_client="utf8"'); $db->query('set character_set_connection="utf8"'); $db->query('set character_set_result="utf8"'); class book{ function down() { global $db; $res = $db->open("book"); $_SESSION['book']['time']=date("Y-m-d H:i:s"); header('Content-type: application/json'); die(json_encode($res->fetchAll())); } function down1() { global $db; $pr_msg=$_SESSION['book']['time']; $res = $db->open_pr("book",$pr_msg); $_SESSION['book']['time']=date("Y-m-d H:i:s"); header('Content-type: application/json'); die(json_encode($res->fetchAll())); } function add($name,$msg) { global $db; if($msg!="" and $name!="") { $time=date("Y-m-d H:i:s"); $db->add("book","'$name','$time','$msg'"); } } function del($d) { global $db; if($d!='') { $db->del("book",$d); } } } $book=new book(); if($_GET['act']=='add')$book->add($_POST['name'],$_POST['msg']); if($_GET['act']=='down')$book->down(); if($_GET['act']=='down1')$book->down1(); if($_GET['act']=='del')$book->del($_POST['d']); ?>
Изменил: Михаил (17.04.2014 / 07:47)
0
<html> <head> <title>test</title> <script type="text/javascript" src="jquery.js"></script> </head> <body> <script type="text/javascript"> function del(del) {$.ajax({ url: '?act=del',//адрес запроса type: 'POST', data: 'd='+ del, success: function() { $("#msg_"+del).slideUp('slow'); } }) }; $.ajax({ url: 'index.php?act=down',//адрес запроса dataType: 'json', success: function(obj) //ответ от сервера { $.each(obj, function( index, value ) { addMessage(value) }) setTimeout('javascript:down_msg1()', 10000) } }) function down_msg1() { $.ajax({ url: 'index.php?act=down1',//адрес запроса dataType: 'json', success: function(obj) //ответ от сервера { $.each(obj, function( index, value ) { addMessage(value) }) setTimeout('javascript:down_msg1()', 10000) } }) } function add() { var name=$('#name').val() var msg=$('#msg').val() $.ajax({ url: 'index.php?act=add',//адрес запроса type: 'POST', data: 'name='+ name +'&msg='+ msg, success: function() //ответ от сервера { down_msg1(); $('#msg').val('') } }) } function addMessage(obj) { $('#mesage').prepend('<div style="display: none" id="msg_'+ obj.id +'">Добавил: '+ obj.name +'<br>Добавлено: '+ obj.time +'<br>Сообщение: '+ obj.msg +'<br><button OnClick="del('+ obj.id +')">удалить</button><hr></div>') $('#msg_'+ obj.id).slideDown('slow') } </script> Имя:<br> <form action='?act=add' method='post'> <input name='name' id='name'><br/> Сообщение:<br> <input name='msg' id='msg'><br/> <input type='button' onclick='add()' value='Добавить сообщение'><p> </form> <div id='mesage'> </div> </body> </html>
Добавлено через 01:10 сек.
если еще кто-то предложит как еще можно упростить код буду только рад
0
6. Mishutka, ну тогда делай как-то так:
Этот вариант более гибкий, для случаев когда надо будет что либо добавить или избавиться от лишнего.
<?php function open($modul, $sort='id', $limit='', $desc='') { $sql = 'select * from \'' . $modul . '\' '; $sql .= empty($sort) ? '' : 'ORDER by `' . $sort . '` '; $sql .= empty($desc) ? '' : 'DESC '; $sql .= empty($limit) ? '' : 'LIMIT \'' . $limit . '\''; return $this -> query($sql); }Это как вариант, а там ты свои значения поставь...
Этот вариант более гибкий, для случаев когда надо будет что либо добавить или избавиться от лишнего.
Изменил: Nu3oN (17.04.2014 / 08:37)
0
а еще лучше чтобы все значения не прописывать записать все в моссив)) и проверять уже есть тот или иной моссив если есть то записываем))
Добавлено через 03:28 сек.
Добавлено через 03:28 сек.
<?php function open($array') { $sql = 'select * from \'' . $modul . '\' '; $sql .= empty($array[sort]) ? '' : 'ORDER by `' . $array[sort] . '` '; $sql .= empty($array[desc]) ? '' : 'DESC '; $sql .= empty($array[limit]) ? '' : 'LIMIT \'' . $array[limit] . '\''; return $this -> query($sql); }
Изменил: Михаил (18.04.2014 / 08:10)
Для выполнения действия необходимо авторизоваться!