Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jean_br

dados de campos checkbox numa único campo mysql

Recommended Posts

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

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

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

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('\\\"',"&quote;",$lValueStr);		//$lValueStr=eregi_replace("\\\'","&quote;",$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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.