Ir para conteúdo
Fórum Script Brasil

Eric Freitas

Membros
  • Total de itens

    441
  • Registro em

  • Última visita

Tudo que Eric Freitas postou

  1. setinterval mas da muito trabalho muito mais facil/pratico usar o jquery
  2. var params = "{ Parametro1: '" + $("#txt").val() + "'}"; $.ajax({ type: "POST", data: params, dataType: "json", url: "http://localhost:3672/Jquery/WebService.asmx/GetPersons", contentType: "application/json; charset=utf-8", success: function(data) { var table = "<table id='gv'><tr><td style='border: 1px solid #000;'>Nome</td><td style='border: 1px solid #000;'>Idade</td></tr>"; for (var i = 0; i < data.d.length; i++) { var dados = data.d[i]; table += "<tr class='row'>"; table += "<td type='textbox'>" + dados.Nome + "</td>"; table += "<td type='textbox'>" + dados.Idade + "</td>"; table += "</tr>"; } table += "</table>"; $("#teste").wrap(table); $("#gv").click( function(event) { alert($(this).attr("id")); }); } }); não me entendeu. coloque dessa forma
  3. http://www.w3schools.com/dom/met_document_createtextnode.asp
  4. coloque $("#gv").click( function(event) { alert($(this).attr("id")); }); depois de $("#teste").wrap(table); o callback é onde você está criando a tabela apos escrever a tabela na pagina você chama a função do click assim deve funcionar xD
  5. pois é você está atribuindo valor 0 ao "idadedocliente" e não fazendo uma comparação para ver se está vazio você pode usar o ou para usar um só if ou criar um outro if e verificar se a idade é maior que 19 e passar a mensagem de erro caso seja necessário if (RecebeDadosForm.idadedocliente.value="") { alert ("Por favor, preencha o campo 'Idade' !"); RecebeDadosForm.idadedocliente.focus(); return false; }
  6. porque "#gv" não existe antes que seja chamado pelo ajax então essa função que alerta o id do elemento deve ser chamada como callback da chamada ajax do jquery
  7. vlw só preciso implementar minha request q é encarregada de receber os dados.
  8. isso pode variar muito de acordo com seu trabalho, as tecnologias oferecidas e tipo de sistema. você pode cobrar de 100.00 a 1.000.000.00 se for avaliar bem um sistema. que tipo de site você faz? quais as tecnologias você usa? o design do site ? são pontos que você tem q analizar layouts geralmente são vendidos por sites de templates entre 30 e 100 dolares +o- isso só o layout. o sistema ao nivel do mercado livre por exemplo deve valer chutando por baixo 20mil reais então eu te pergunto que tipo de site você pretende criar? tem algo para mostrar pra poder avaliar?
  9. tente escrever as ações no callback da função load crie uma função chamada jumpMenu e add todo o código do jump menu function jumpMenu(){ //... } dai se não me engano você chama $('selector').load('page', jumpMenu)
  10. desculpem mais ainda não consegui corrigir esse bug alguma idéia?
  11. bom pessoal tento trabalhar em MVC mas não sei se estou trabalhando de maneira correta tenho um arquivo que recebe todas minhas requisições seja ela quais forem ele instancia o Receive e da o load nas bibliotecas aqui coloquei só uma biblioteca (musica: musicaView musicaModel e musicaController). recebe um array ou um array de objetos que é transformado em json para ser trabalhado no JS root/ajax/search.php <?php include('../application/view/Request.php'); include('../application/model/MusicaModel.php'); include('../application/controller/MusicaController.php'); include('../application/view/MusicaView.php'); require_once('../application/Receive.php'); include('../application/controller/DAO.php'); $r = new Receive(); echo utf8_encode(json_encode($r->getArr())); ?> O Receive ao ser iniciado já cria os parametros que serão utilizados nas querys com o banco esses parametros são passados por get então (?) tem como alguém fazer um injection no meu banco alterando esses parametros já que e esses serão utilizados diretamente no meu banco? root/application/Receive.php class Receive { private $arr; function Receive(){ $params = new Request(); $params = $params->getActionsRequest(); $obj = isset($params['obj']) ? $params['obj'] : null; $q = isset($params['q']) ? $params['q'] : null;; $condicoes = isset($params['where']) ? $params['where'] : null; $order = isset($params['order']) ? $params['order'] : null; $limit = isset($params['limit']) ? $params['limit'] : null; eval("\$view = new $obj(); "); switch($q){ case 'insert': $this->arr = $view->doInsert(); break; case 'delete': $this->arr = $view->doDelete(); break; case 'update': $this->arr = $view->doUpdate(); break; case 'getlist': $this->arr = $view->doGetList($condicoes,$order,$limit); break; default: $this->arr['error'] = 'Ação desconhecida'; break; } } public function getArr(){ return $this->arr; } } O arquivo Request é responsavel por receber todos os posts e gets enviados esses dados também vem do js se forem alterados os valores aqui também pode sofrer algum tipo de ataque? essa é uma classe importante ela que praticamente cria os objetos e as ações de toda a aplicação. class Request { public function postObjectRequest($obj){ $class_name = get_class($obj); eval("\$obj = new $class_name();"); foreach ($_POST as $key=>$value){ if(isset($_POST[$key])) eval("\$this->$class_name\->$key = \$value;"); } return $obj; } public function getActionsRequest(){ $r = null; foreach ($_GET as $key=>$value){ if(isset($_GET[$key])) eval("\$r['$key'] = \$value;"); } return $r; } } Musica view irá ser responsavel por qualquer ação do sistema e retornará um array contendo erros ou objeto (s) root/application/views/MusicaView.php class MusicaView { private $MusicaModel; private $MusicaController; public function MusicaView(){ $this->MusicaModel = new MusicaModel(); $Request = new Request(); $this->MusicaModel = $Request->postObjectRequest($this->MusicaModel); $this->MusicaController = new MusicaController(); } public function doInsert(){ return $this->MusicaController->doInsert($this->MusicaModel); } public function doDelete(){ return $this->MusicaController->doDelete($this->MusicaModel); } public function doUpdate(){ return $this->MusicaController->doUpdate($this->MusicaModel); } public function doGetList($condicoes = null, $order = null, $limit = null){ return $this->MusicaController->doGetList($this->MusicaModel,$condicoes,$order,$limit); } } MusicaModel irá conter os atributos especificos de cada classe root/application/views/MusicaView.php class MusicaModel { public $id; public $album_id; public $nome; public $embed; } e o MusicaController seria encarregado de qualquer interação com DB atraves de uma classe dao class MusicaController { private $DAO; function MusicaController(){ $this->DAO = new DAO(); } public function doInsert($obj){ return false; } public function doDelete($obj){ return false; } public function doUpdate($obj){ return false; } public function doGetList($obj,$condicoes = null, $order = null, $limit = null){ $arr = $this->DAO->getList($obj,$condicoes, $order, $limit); return $arr; } } essa classe dao php sim é resposavel por toda e qualquer interação com o banco. ainda não terminei todas as funções mas não falta muito e esse também não é o foco da minha discução class DAO { private $conn; function DAO(){ $this->conn = mysql_connect('localhost','root',''); mysql_selectdb('DB'); mysql_set_charset('utf8', $this->conn); } public function insert($obj){ $class_name = get_class($obj); $class_vars = get_class_vars($class_name); $sql = "INSERT"; $sql.= " INTO ".$class_name." ("; $i = 1; foreach ($class_vars as $att => $val){ if($i < sizeof($class_vars)) $sql.= $att.", "; else $sql.= $att." "; $i++; }$sql.=") VALUES ( "; foreach ($class_vars as $att => $val){ if($i < sizeof($class_vars)) $sql.= $att.", "; else $sql.= $att." "; $i++; } return false; } public function update($obj,$arrSpecificAtt = null){ return false; } public function delete($obj){ $class_name = get_class($obj); $class_vars = get_class_vars($class_name); $sql = "DELETE FROM ".$class_name; $sql.= " WHERE ".$class_name.".".$obj->id." LIMIT 1;"; $query = mysql_query($sql); if (mysql_errno()) { $r['error'] = mysql_errno().": ".mysql_error()."\n<br>Executando:<br>\n$sql\n<br>"; return $r; }else return true; } public function getList($obj, $condicoes = null, $order = null, $limit = null){ $class_name = get_class($obj); $class_vars = get_class_vars($class_name); $i = 1; $sql = "SELECT "; foreach ($class_vars as $att => $val){ if($i < sizeof($class_vars)) $sql.= $att.", "; else $sql.= $att." "; $i++; } $sql.= " FROM ".$class_name; if($condicoes != null) $sql.= " WHERE ".$condicoes; if($order != null) $sql.= " ORDER BY ".$order; if($limit != null) $sql.= " LIMIT ".$limit; $sql.= ";"; $query = mysql_query($sql); if (mysql_errno()) { $r['error'] = mysql_errno().": ".mysql_error()."\n<br>Executando:<br>\n$sql\n<br>"; return $r; } $row = null; while($row = mysql_fetch_object($query,$class_name)) $r[] = $row; if(mysql_num_rows($query) == 0 ) return true; $this->closeConn(); return $r; } public function getListByQuery($sql,$obj, $condicoes = null, $order = null, $limit = null){ $class_name = get_class($obj); $class_vars = get_class_vars($class_name); $query = mysql_query($sql); if (mysql_errno()) { $r['error'] = mysql_errno().": ".mysql_error()."\n<br>Executando:<br>\n$sql\n<br>"; return $r; } $row = null; while($row = mysql_fetch_object($query,$class_name)) $r[] = $row; if(mysql_num_rows($query) == 0 ) return true; $this->closeConn(); return $r; } private function closeConn(){ mysql_close($this->conn); } } desde já agradesso por terem lido tudo isso xD E aqui vai recebendo um parametro por post/get tem como alguém lançar um injection no meu banco? já que esses estaão diretamente ligados ao DB, oque posso fazer para me prevenir disso. com relação a captcha já estou implementando mas isso também não tem muito haver com a questão. agora com relação a lógica funciona mas estou trabalhando de maneira correta estava tentando utilizar o zend framework mas não obtive sucesso não consegui criar nada utilizando o framework só erros que não sei nem explicar. bom novamente obrigado!
  12. function get_all_id() { var str = ""; var boxes = document.getElementsByName("check_list"); for(var i = 0; i < boxes.length; i++){ if (boxes[i].checked == true) { var tmp = boxes[i].id.split("_"); str+=tmp[1]+","; } } document.getElementById('user_ids').value=str; } correção if (boxes[i].checked == 'checked') alert(' fazer alguma coisa');
  13. http://api.jquery.com/category/ajax/
  14. então ainda segue a dúvida mas eu resolvi de uma outra forma o problema tem algum serv gratis pra eu posta o html pra gente conseguir resolver a duvida de como deixar algo sempre no final da pagina
  15. betin tinha feito isso contudo se o conteúdo de page for maior que o 100% footer fica por cima do conteudo e não ao final da pagina. se você analizar o footer tem uma classe chamada block que passa position absolute cor de fundo entre outros parametros FIT quanto ao width era isso mesmo min e max 1024 sei que eu poderia usar somente width mas nem mudei isso e quanto as divs abertas a mais é porque não passei o index inteiro mesmo assim eu dei uma modificada no script todo não vou mais usar esse footer desta maneira que estava imaginando <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>TiaPunk Project</title> <link type="text/css" id="theme" href="css/black-tie/jquery-ui-1.8.2.custom.css" rel="Stylesheet" /> <link href="css/css.css" rel="stylesheet" type="text/css" /> <!-- JQUERY / JQUERYUI --> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.8.2.custom.min.js"></script> <script type="text/javascript" src="js/jquery.jsonp-2.1.2.min.js"></script> <script type="text/javascript" src="js/js.js"></script> <script> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'pt' }, 'google_translate_element'); } </script> <script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> </head> <body> <div id="teste"></div> <div id="background"><img src="backgrounds/digital-art_1bdcf4ba.jpg" /></div> <div id="dialog-message" title=""> <p id="textStatus"><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 50px 0;"></span></p> <p id="errorThrown"></p> </div> <div id="header" class="block"> <span>http://www.tiapunk.com.br</span> </div> <div class="page"> <div class="logo"> <img src="images/logo.png" /> </div> <form> <div id="menu"> <input type="radio" id="home" name="radio"/><label for="home">Home</label> <input type="radio" id="discografia" name="radio" /><label for="discografia">Discografia</label> <input type="radio" id="media" name="radio" /><label for="media">Media</label> <input type="radio" id="agenda" name="radio" /><label for="agenda">Agenda</label> <input type="radio" id="contato" name="radio" /><label for="contato">Contato</label> </div> </form> <div class="ads_top"><img src="ads/728 x 90.gif" /></div> <br style="clear:both;" /> <div id="content"> <div class="scroll"> <!-- AJAX CONTENT --> </div> <div id="google_translate_element"></div> <br /> <br /> <div class="ads_content"><img src="ads/250x250.gif" /></div> </div> <br style="clear:both;" /> </div> <div id="playlist" title="PlayList"></div> <div id="footer"><span>Todos os Direitos Reservados © - Design By TiaPunk</span></div> </body> </html> @charset "utf-8"; /* CSS Document */ body,div,span,p,ul,li,h3 { padding:0px; margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:12px; } /* div{ background-color: #333; opacity:0.65; -moz-opacity: 0.65; filter: alpha(opacity=65); } */ body{ } #background{ position:absolute; height:100%; width:100%; z-index:0; } #background img{ height:100%; width:100%; } h3{ font-family: Verdana, Geneva, sans-serif; } ul{ list-style-type:none; } #header{ top:0; } #footer{ position:relative; width:1024px; background-image:url(../backgrounds/R.png); background-repeat:no-repeat; height:37px; background-position: 17px; left: 50%; margin-left:-512px; z-index:1; } #footer span{ width:512px; margin-left:400px; } .block{ position:relative; float:none; background-color:#333; z-index:2; margin: 0; padding: 0; height: 20px; width:100%; text-align:center; font-family:Verdana, Geneva, sans-serif; font-size: 10px; color: #FFF; font-weight: bold; opacity:0.65; -moz-opacity: 0.65; filter: alpha(opacity=65); } .block span{ position:relative; top: 3px; } /* PAGE */ .page{ position:relative; background-image:url(../backgrounds/tiapunkSiteLayout001.png); background-position: center top; min-width: 1024px; max-width: 1024px; margin: 0 auto; left: 50%; margin-left:-512px; min-height: 100%; z-index:1; } /* PAGE->Logo */ .page .logo{ position:relative; float:left; z-index:1; margin-top: 18px; margin-left: 65px; } .page .logo img{ width:250px; height:185px; } /* PAGE->Menu */ .page #menu{ position:absolute; width:500px; left:50%; margin-left:5px; margin-top:15px; z-index:3; } /* ADS GOOGLE */ .ads_top{ position:absolute; right:0; margin-right:50px; top:80px; width:728px; height:90px; z-index:3; } .ads_content{ position:relative; float:right; width:250px; height:250px; } #google_translate_element{ margin-right: 80px; position:relative; margin-bottom: 20px; float:right; } /* PAGE->content */ .page #content{ position:relative; width: 894px; margin-top:15px; margin-left:80px; margin-right:100px; bottom:20px; z-index: 2; } .page .scroll{ float:left; min-width:600px; max-width: 600px; margin-right:10px; } .page #tabs-1 p{ font-family: Georgia, "Times New Roman", Times, serif; text-align: justify; text-indent: 15px; } #albuns{ position:relative; } .thumbnail{ float:left; text-align:center; border: 1px dotted #999; } .thumbnail h3{ margin-top:5px; margin-bottom:5px } #list{ margin-left: 175px; } #list li{ cursor:pointer; } #feedback { font-size:12px; } #albuns .ui-selecting { background: #999; } #albuns .ui-selected { background: #333; color: white; } #albuns { list-style-type: none; margin: 0; padding: 0; width: 100%; } #list li { margin-bottom: 15px; }
  16. Então pessoal o problema ta ae quando abro normal o link da discografia ele abre direitinho mas se aperto f5 ele chama a pag tem resposta dos dados mas o conteúdo não é criado.. var Ajax = { Ajax:function(){ var params = { path: Ajax.getQuery('path'), static: Ajax.getQuery('static'), dinamic:Ajax.getQuery('dinamic'), }; if(params.path == undefined) params.path = "ajax"; if(params.static == undefined) params.static = "home"; var urlStatic = params.path+"/"+params.static+".html"; Ajax.setPage(urlStatic); if(params.dinamic == 'true') Ajax.setDinamicContent(); }, setDinamicContent:function(){ var params = { path: Ajax.getQuery('path'), q: Ajax.getQuery('q'), obj: Ajax.getQuery('obj'), where: Ajax.getQuery('where'), order: Ajax.getQuery('order'), limit: Ajax.getQuery('limit') }; if((params.q != undefined) && (params.obj != undefined)){ if(params.path == undefined) params.path = "ajax"; var url = params.path+"/search.php?q="+params.q; url+="&obj="+params.obj; if(params.where != undefined) url+="&where="+params.where; if(params.order != undefined) url+="&order="+params.order; if(params.limit != undefined) url+="&limit="+params.limit; if(params.obj=='AlbumView'){ Ajax.getJson(url,Discografia.setAlbum); } } }, getJson:function(url,callback){ $.getJSON(url, callback); }, getQuery : function (variavel){ var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var parte = vars[i].split("="); if (parte[0] == variavel) { return parte[1]; } } }, setPage : function (url){ Ajax.loadAjax({ appendTo:"#content .scroll", 'url': url }); }, loadAjax: function (map){ $(map.appendTo).load(map.url,function(){ Ajax.ajaxTabs({ tabId: '#tabs', errorFunction: '' }); }); }, ajaxTabs:function (map){ $(function() { $(map.tabId).tabs({ ajaxOptions: { error: function(xhr, status, index, anchor) { map.errorFunction; } } }); }); }, ajaxSetup : function (){ $("#"+Dialog.id).ajaxStart(function(){ var dialogParams = { modal: true, title: 'Carregando', show:'slide' } var textStatus = '<center><img src="images/ajax-loader.gif" /></center>'; var errorThrown = '<center>Aguarde</center>'; Dialog.call(dialogParams,textStatus,errorThrown); }); $("#"+Dialog.id).ajaxComplete(function(){ Dialog.close(); }); $("#"+Dialog.id).ajaxError(function(event, request, settings){ var dialogParams = { modal: true, buttons: { Ok: function() { $(this).dialog('close'); } }, title: 'Aviso', show:'slide' }; var textStatus = "erro ao abrir página "+settings.url; var errorTrown = "ERRO 404"; Dialog.call(dialogParams,textStatus,errorTrown); }); }, }; //discografia var Discografia = { setAlbum:function(json){ //lista de albuns var ulParent = document.createElement('ul'); ulParent.setAttribute('id','albuns'); for(var i in json){ //albuns var liParent = document.createElement('li'); liParent.setAttribute('id', json[i].id); var h3 = document.createElement('h3'); h3.innerHTML = json[i].nome; var divImage = document.createElement('div'); divImage.setAttribute('class','thumbnail'); var imagem = document.createElement('img'); imagem.setAttribute('src',json[i].thumbnail); Ajax.getJson("ajax/search.php?q=getlist&obj=MusicaView&where=album_id="+json[i].id+"&order=listorder asc",Discografia.setAlbumMusica); divImage.appendChild(imagem); divImage.appendChild(h3); liParent.appendChild(divImage); ulParent.appendChild(liParent); } var br = document.createElement('br'); br.setAttribute('style','clear:both;'); ulParent.appendChild(br); $("#tabs-1").append(ulParent); $("#tabs-1").append(br); }, setAlbumMusica: function (json){ var albumId = null; var ulParent = document.createElement('ul'); ulParent.setAttribute('id','list'); for(var i in json){ albumId = json[i].album_id; //albuns var liParent = document.createElement('li'); liParent.innerHTML = json[i].embed; ulParent.appendChild(liParent); } $("#"+albumId).append(ulParent); } } Ajax.ajaxSetup(); Ajax.Ajax();
  17. então a lógica do min-height:100% é exatamente isso porque se o conteúdo fosse menor que o 100% do body a div iria ficar no tamanho da tela..
  18. então a div page com position absolute é para ficar com min height 100% mas com isso o footer vai la pra cima como se não tivesse nada coloquei bottom:0 no footer mas se o conteudo passar de 100% e a barra de rolagem aparecer esse footer fica na frente do conteudo de page não vai para o final da pagina entende?
  19. http://www.4shared.com/photo/inTycITB/Untitled-1.html é assim consegui fazer com que o conteúdo de page acompanhasse os elementos contidos dentro dele mas queria que page ficasse sempre 100% e que o footer ficasse no final da pag mas se meu page estiver absolute o footer vai la pra cima
  20. assim tenho elementos dentro do page se os elementos derem o height maior que 100% e a barra de rolagem do corpo aparecer o fundo da .page e o footer não vão para o fim da página acho q é algo relacionado ao posicionamento absolute posso enviar uma foto de como fica?
  21. olá FIT muito obrigado pela resposta na verdade esse max-width: já está setado. infelizmente não tenho como passar link pois não tenho nenhum serv de teste online com php/mysql e o site é todo em ajax
×
×
  • Criar Novo...