jean_br 0 Denunciar post Postado Agosto 22, 2006 Fala pessoal..... seguinte. estou modificando um script de classificados e gostaria de incluir alguns opcionais quando o item anunciado for um veículo. pois bem... então tenho vários checkbox que atualmente estão assim: <input name="4x2" value="s" id="4x2" type="checkbox">4X2<br> <input name="4x4" value="s" id="4x4" type="checkbox">4X4<br> <input name="abs" value="s" id="abs" type="checkbox">ABS<br> <input name="aerofolio" value="s" id="aerofolio" type="checkbox">Aerofólio<br> etc.... cada item tem o seu próprio campo na tabela_anuncio do banco de dados mysql então: 4x2 char(1) (1 espaço somente para registrar ou não o valor "s") e assim por diante. ocorre que nessa brincadeira vão acabar sendo gerados 180 campos!!!!!!!!!!! PERGUNTA aos que já viveram uma experiência parecida: quando existir 1000 anúncios registrados nessa tabela, será que a busca por determinado anúncio irá ficar lenta? (EX.: quero pesquisar nesse universo de 1000 anúncios, por Vectra com ar-condicionado e vidro elétrico) caso a resposta seja sim: COMO POSSO FAZER para registrar todos os opcionais num único campo na tabela_anuncio????? é claro que terei que definir valores diferentes para cada opcional: <input name="acessorios" value="1" id="acessorios" type="checkbox">4X2<br> <input name="acessorios" value="2" id="acessorios" type="checkbox">4X4<br> <input name="acessorios" value="3" id="acessorios" type="checkbox">ABS<br> <input name="acessorios" value="4" id="acessorios" type="checkbox">Aerofólio<br> etc.... OUTRA PERGUNTA: como fazer quando houver que alterar o anúncio? Por exemplo: eu anuncio um veículo. Informo que ele é 4x4. Só que após ter registrado o anúncio eu vi que errei e o veículo é 4x2. Quando eu clicar no alterar anúncio, todos os opcionais marcados anteriormente (no 1º registro) devem aparecer marcados e os demais desmarcados (é óbvio hehehehe) um abraço a todos e desde já agradeço pela ajuda...... :D Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 ok....1º) observando esse caso surge a pergunta: quando da busca, o tempo que demoraria para "ler" anúncio por anúncio com todos os opcionais gravados num só campo não seria praticamente o mesmo se fosse "ler" diversos campos gravados com apenas um "s".2º) ferreira, mas como fazer para os checkbox aparecerem marcados quando for realizar a alteração?e outra: eu não tenho idéia de como fazer isso (seria mais ou menos parecido com o que foi feito na dúvida que postei a uns dias atrás sobre colocar os dados de um arquivo.txt linha por linha... mas aqui no caso pega-se os dados da tabela!!!!!)huahuahuah Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 OK... vou tentar fazer aqui....... qualquer dúvida COM CERTEZA eu posto obrigadão HAHAHAHAHAHAHA e como faço para gravar os dados separados por ponto-e-virgula? Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 ok..... gravar os registros separados por ponto-e-vírgula e também alterá-los.. está tudo certo..... mas ainda não consegui fazer com que os ckecks fiquem selecionados.... na verdade eu não sei onde colocar a primeira rotina que você me passou... $sql = "select * from veiculos where placa='" . $placa . "'"; $query = mysql_query($sql); $campos = mysql_fetch_row($query); $opcionais = explode($campos[3]); //supus que a quarta coluna seja a dos opcionais foreach($opcionais as $valor) { $$valor = $valor;} Eu não gosto muito de fazer isso, mas..... abaixo segue o código utilizado para gravar os dados e onde fiz a alteração. Se puder me ajudar.... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif ... quando ao formulário eu o utilizo num template........ <?session_start(); include_once("admin/inc.php");$pagename = $sitename . " - " . LA_ADD_AD;$lErrorPay=0;$lPayCredits=0;$lPayBold=0;$lPayWYSIWYG=0;$lPayPremium=0;$lIsSpecial=0;$lIsPremium=0;if ($set_wysiwyg_editor) $html_editor=1; if (!$admin_area) include_once("header_inc.php");$tplItem=new TplLoad;if (!$admin_area){ check_valid_user(""); include_once("member_header.php"); } $ad_id=getParam("ad_id","");$catid=getParam("ad_cat_id","");$tplItem->assign("phpself",$_SERVER['PHP_SELF']);$tplItem->assign("set_expire_days_option",$set_expire_days_option);$tplItem->assign("url", "http://$url");$tplItem->assign("html_editor", "$html_editor");$tplItem->assign("set_video_upload", "$set_video_upload");$tplItem->assign("set_doc_upload", "$set_doc_upload");if ($admin_area) $tplItem->assign("url_to_upload", "http://$url/admin/item_upload.php");else $tplItem->assign("url_to_upload", "http://$url/upload_file.php");if ($admin_area) $tplItem->assign("url_to_upload_video", "http://$url/admin/item_upload_video.php");else $tplItem->assign("url_to_upload_video", "http://$url/upload_video.php");if ($admin_area) $tplItem->assign("url_to_upload_doc", "http://$url/admin/item_upload_other.php");else $tplItem->assign("url_to_upload_doc", "http://$url/upload_other.php");$lCatCost="";if ($ad_id){ $result = q ("select * from $ads_tbl where ad_id = $ad_id"); $row = mysql_fetch_array($result); $ad_owner = $row["ad_owner"]; $lCatId = $row["ad_cat_id"]; if ($ad_owner <> $_SESSION["valid_user"] AND !$admin_area) criticalError(LA_ERROR,LA_MUSTBEOWNER); }$lCat=getParam("catid",$row["ad_cat_id"]);if ($lCat){ $sql_top = "select cat_name,cat_fatherid,cat_cost "; if (!empty($_SESSION["la"]) && $set_multilang_cat) { $sql_top .= ",lang_" . $_SESSION["la"]; } $sql_top.= " from $cat_tbl where cat_id = $lCat AND cat_allow_ads = 'on'"; $result_1 = q ($sql_top); $row_1 = mysql_fetch_array($result_1); $catname = $row_1["cat_name"]; $lCatFatherID = $row_1["cat_fatherid"]; $lCatCost = $row_1["cat_cost"]; }if ($set_expire_days_option_list && $set_expire_days_option==1){ $lExpireListArray=split(",","$set_expire_days_option_list"); foreach ($lExpireListArray as $option) { $lExpireList.="<option value='$option'"; if ($option==getParam("expire_days","")) $lExpireList.=" selected"; $lExpireList.=">$option " . DAYS . "</option>"; } $tplItem->assign("expire_list",$lExpireList); }if (!empty($_SESSION["la"]) && $set_multilang_cat){ $lang_catname = "lang_" . $_SESSION["la"]; if (!empty($row_1["$lang_catname"])) { $catname = $row_1["$lang_catname"]; }}$tplItem->assign("update_rq",getParam("update_rq",""));$tplItem->assign("submit",getParam("submit",""));$tplItem->assign("catname",$catname);$tplItem->assign("show_form",1);$lCurrentUser=$_SESSION["valid_user"];if ($admin_area) $lCurrentUser=$row["ad_owner"];$lCurrentUser=(integer) $lCurrentUser;if ($set_payments AND getParam("update_rq","")=="" && !$admin_area){ if (!getExpireStatus($lCurrentUser)) { $sql="select pay_credits,pay_bold,pay_premium from $usr_tbl where user_id=$lCurrentUser"; $res_user=q($sql); $row_user=mysql_fetch_array($res_user); $lPayCredits=$row_user["pay_credits"]; $lPayBold=$row_user["pay_bold"]; $lPayPremium=$row_user["pay_premium"]; if (!$lCatCost) $lCatCost=0; $tplItem->assign("set_payments",1); $tplItem->assign("pay_free_credits",$lPayCredits); $tplItem->assign("pay_catcost",$lCatCost); $tplItem->assign("pay_premium",$lPayPremium); if ($lPayCredits<$lCatCost) { $tplItem->assign("pay_out_of_credits",1); $tplItem->assign("show_form",0); $lErrorPay=1; } } }if (getParam("submit","")==""){ $lTitle=$row["ad_title"]; $lDescr=$row["ad_description"]; $lValor=$row["e_2"];if (isset($_POST['e_11'])){ $gravacao_opcionais = ''; foreach($_POST['e_11'] as $valor) { $$valor = $valor; $gravacao_opcionais .= $valor . ';'; } $gravacao_opcionais = substr($gravacao_opcionais, 0, -1); } $lAir_bag=$row["e_50"]; $lMarca=$row["e_19"]; $lModelo=$row["e_18"]; $lAno=$row["e_17"]; $lCombustivel=$row["e_16"]; $lCor=$row["e_15"]; $lKm=$row["e_14"]; $lStatus=$row["e_13"]; $lNota_vendedor=$row["e_12"]; $lUserID=$_SESSION["valid_user"]; }else { $lTitle=getParam("ad_title",""); $lDescr=getParam("ad_description",""); $lValor=getParam("e_2",""); $lAr=getParam("e_11",""); $lAir_bag=getParam("e_50",""); $lMarca=getParam("e_19",""); $lModelo=getParam("e_18",""); $lAno=getParam("e_17",""); $lCombustivel=getParam("e_16",""); $lCor=getParam("e_15",""); $lKm=getParam("e_14",""); $lStatus=getParam("e_13",""); $lNota_vendedor=getParam("e_12",""); $lUserID=$_SESSION["valid_user"];}$lUserID=(integer) $lUserID;$tplItem->assign("admin_area",$admin_area);$tplItem->assign("ad_title",stripcslashes($lTitle));$tplItem->assign("ad_description",stripcslashes($lDescr));$tplItem->assign("e_2",stripcslashes($lValor));$tplItem->assign("e_11",stripcslashes($lAr));$tplItem->assign("e_50",stripcslashes($lAir_bag));$tplItem->assign("e_19",stripcslashes($lMarca));$tplItem->assign("e_18",stripcslashes($lModelo));$tplItem->assign("e_17",stripcslashes($lAno));$tplItem->assign("e_16",stripcslashes($lCombustivel));$tplItem->assign("e_15",stripcslashes($lCor));$tplItem->assign("e_14",stripcslashes($lKm));$tplItem->assign("e_13",stripcslashes($lStatus));$tplItem->assign("e_12",stripcslashes($lNota_vendedor));$tplItem->assign("catid",$lCat);$tplItem->assign("ad_cat_id",$lCat);$tplItem->assign("ad_id",getParam("ad_id",$ad_id));// Find Extra fields in ad table and get values from not empty rows$i=0;$data="";$result_1 = q ("select cat_tpl from $cat_tbl where cat_id = $lCat");$row_cat = mysql_fetch_array($result_1);$cat_tpl = $row_cat["cat_tpl"];$lExtraFieldArray=getMandatoryValues("$cat_tpl",1);if (is_array($lExtraFieldArray)){ foreach ($lExtraFieldArray as $item) { $value="e_" . $item["q_field"]; $lArray[$i]["id"]=$i; $lArray[$i]["field"]=$value; $lStr=getParam($value,""); $lValueStr=""; if ($lStr) { if (is_array($lStr)) { foreach ($lStr as $lItem) $lValueStr.="$lItem,"; $lValueStr=substr($lValueStr,0,-1); } else $lValueStr=$lStr; } elseif (getParam("submit","")=="") { $lValueStr=$row[$value]; } if (getParam("submit","") !="") { if ($item["q_mand"] && empty($lValueStr)) $errorMsg.= "<li>".LA_YOU_MUST ." <b>" . $item["q_question"] . "</b></li>"; else if (!empty($item["q_reg_exp"])) { if (preg_match($item["q_reg_exp"],$lValueStr)) $errorMsg.="<li>".$item["q_reg_exp_errormsg"] ." <b>".$item["q_question"]."</b></li>"; } } //$lValueStr=eregi_replace('\\\"',""e;",$lValueStr); //$lValueStr=eregi_replace("\\\'",""e;",$lValueStr); $lValueStr=stripcslashes($lValueStr); $lValueStr=htmlspecialchars($lValueStr,ENT_QUOTES); $lArray[$i]["value"]=$lValueStr; $lValueStr=addslashes($lValueStr); //echo "$lValueStr<br>"; $data.="$value='$lValueStr',"; $i++; } $lExtraArray=getExtraAdvValue("$cat_tpl",1,$lArray); $tplItem->assign("extra_fields_array",$lExtraArray);}if (getParam("submit","")){ // Simple Error Checking Start if (!$lTitle) $errorMsg.="<li>".LA_YOU_MUST ." <b>" . TITLE . "</b></li>"; if (!$lDescr) $errorMsg.="<li>".LA_YOU_MUST ." <b>".DESCRIPTION."</b></li>"; if (!$lCat) $errorMsg.="<li>".LA_YOU_MUST ." <b>".LA_CAT."</b></li>"; // Check for banned words. If a banned word appear, raise warning $bad_words_list = split(",", $set_bad_words); foreach($bad_words_list as $bad) { if ($bad) { $result1 = eregi($bad,$lTitle); $result2 = eregi($bad,$lDescr); } if (!empty($result1) OR !empty($result2)) $errorMsg.="<li>".LA_BAD_WORDS ." <b>$bad</b><br />"; } // Simple Error Checking Completed $tplItem->assign("errorMsg", $errorMsg); if ($errorMsg) $tplItem->assign("show_form",1); else { $tplItem->assign("submit_ok",1); $tplItem->assign("show_form",0); if (getParam("ad_id","")) { ## Modified Ad ## updateAd($ad_id,$lCurrentUser,$lTitle,$lDescr,$lCat,"","","",$data,$set_inform_admin_update); } else { ## New Ad ## // If credit option and the user is not admin, reduce number of credits by one $lIsSpecial=0; if ($set_payments) { if (!getExpireStatus($lCurrentUser)) { $sql="update $usr_tbl set pay_credits = pay_credits - $lCatCost where pay_credits>0"; $sql.=" AND user_id = ".$_SESSION["valid_user"].""; $res_pay=q($sql); } $sql="update $usr_tbl set pay_bold = pay_bold - 1 where pay_bold>0 "; $sql.=" AND user_id = ".$_SESSION["valid_user"].""; $res_pay=q($sql); if ($lPayBold>0) $lIsSpecial=1; $sql="update $usr_tbl set pay_premium = pay_premium - 1 where pay_premium>0"; $sql.=" AND user_id = ".$_SESSION["valid_user"].""; $res_pay=q($sql); if ($lPayPremium>0) $lIsPremium=1; else $lIsPremium=0; } // Check if the ad has already been posted (exaxtly same ad and user will raise warning) $result = q("select ad_id from $ads_tbl where ad_title = '$lTitle' AND ad_owner=$lUserID"); $num_already_posted = mysql_num_rows($result); //if ($num_already_posted>0) // { // echo "<p><b>" . formatString(LA_POSTED_BEFORE,array(getParam("ad_title",""))) . "</b></p>"; // include_once("member_footer.php"); // include_once("footer_inc.php"); // exit; // } if ($set_expire_days_option==2 AND $set_delete_after_x_days) $lNumberOfDays=$set_delete_after_x_days; elseif ($set_expire_days_option==1 AND getParam("expire_days","")) $lNumberOfDays=(getParam("expire_days",1)); $ad_id=createAd($lUserID,$lTitle,$lDescr,$lCat,$lNumberOfDays,$lIsSpecial,$lIsPremium,$data,$set_inform_admin_insert); if ($ad_id>0) { $tplItem->assign("submit_ok",$ad_id); $tplItem->assign("await_validation",$validation); notifyMembersNewAd($lCat,$catname,$ad_id,$lTitle,strip_tags($lDescr),$url); } } // End of insert/update $tplItem->assign("picture_upload_enable", $set_image_upload); $tplItem->assign("ad_id", $ad_id); } // End IF NOT ERRORMSG Submit// End of submit information}$cat_list="";if ($admin_area) $cat_list=getCategoriesDD($lCatId,1);else if ($ad_id && isset($lCatFatherID)){ $sql = "select cat_id,cat_name,cat_total"; if ($language!="eng") { $lang_cat="lang_" . $language; $sql.=",$lang_cat"; } if (!empty($_SESSION["la"]) AND $set_multilang_cat) { $lang_cat = "lang_" . $_SESSION["la"]; if ($lang_cat!="lang_eng") $sql.=",$lang_cat"; } $sql.= " from $cat_tbl where cat_allow_ads='on' AND cat_fatherid=$lCatFatherID"; $sql = $sql . " order by cat_full_name"; $res = q($sql); while ($catr=mysql_fetch_array($res)) { $catid_sel = $catr["cat_id"]; $catname = $catr["cat_name"]; if ($lang_cat) { if (!empty($catr["$lang_cat"])) $catname = $catr["$lang_cat"]; } $cat_list.= "<option value='$catid_sel'"; if ($lCatId == $catid_sel) { $cat_list.= " selected"; } if (!$catr["cat_total"]) $num_ads=0; else $num_ads=$catr["cat_total"]; $cat_list.= ">$catname ($num_ads) </option>"; }} $tplItem->assign("cat_list",$cat_list);$tplItem->display("item.tpl");if (!$admin_area){ include_once("member_footer.php"); include_once("footer_inc.php"); }?> Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 assim:1) desejo alterar um veículo: clico no botão alterar2) aparecem os meus veículos anunciados3) seleciono o veículo a ser alterado clicando no nome4) altero os dados (todos)5) os checks não vem marcados, apesar de quando eu ter feito o 1º registro eu ter marcado alguns checks6) a tela de consulta (usuário) é outra, onde possui um campo chamado opcionais, onde aparecem os opcionais gravados no BD (no caso o nome do campo é e_11). Como esses dados são separados por vírgula, não haveria problemas para mostrar esse campo inteiro, modificando apenas o ponto-e-virgula por virgula espaço. Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 não entendi mesmo.....é falta de conhecimento... vou no chute.. mas meu chute na maioria das vezes vai fora. Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 ok...vou tentar aqui... Compartilhar este post Link para o post Compartilhar em outros sites
jean_br 0 Denunciar post Postado Agosto 22, 2006 Thiago.... seguinte..... não adianta... eu não estou conseguindo adaptar... os dados estão sendo salvos num só campo... chamado e_11. Então lá está assim: ar;ve;x4 .... como deveria ficar.... porém não estou conseguindo fazer que na tela de alteração apareça marcado os checks ar, ve e x4 e sequer testei o sistema de busca...... acho que vou acabar desistindo e enfiando os 180 novos campos :( ...pelo menos assim funciona.... talvéz um pouco mais demorado..... mas acho que não tão mais demorado assim.... até porque assim: veículos [ gol [ gol gti [ vectra vectra tal antes de chegar a checar os opcionais o sistema irá filtrar só os "gol" os melhor ainda se tiver modelos (gol gti) especificado..... AGRADEÇO E MUITO PELA SUA AJUDA..... infelizmente meus conhecimentos não corresponderam ao que me foi repassado.. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif http://forum.imasters.com.br/public/style_emoticons/default/cry.gif mas faz parte... não se pode querer fazer milagre quando você é apenas um MODIFICADOR de código e não um PROGRAMADOR.... MAIS UMA VEZ AGRADEÇO MUUUUUITO PELA SUA AJUDA... VALEU AMIGÃO http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites