Ir para conteúdo

POWERED BY:

Arquivado

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

Guilherme Peixoto

[Resolvido] Cadastrar sub-categorias

Recommended Posts

Beraldo, essa parte seria na hora de cadastrar, ou na exibição do menu?

 

você que sabe. quer fazer a limitação em qual momento?

Prefiro na hora de cadastrar, é possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim. é só fazer o select antes de cadastrar e conferir o valor de retorno, comparando com o máximo permitido

Beraldo o caminho seria, mais ou menos por aqui:

 

// Aqui começa o script para cadastrar as sub-categorias
$sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = 5";
$query_selc = mysql_query($sql_selec) or die ("Erro no Select".mysql_query());

if(isset($_POST['cadastro']) && $_POST['cadastro'] == 'sub'){
// Se o não escolher a categoria no select não cadastra.	
if($id_pai == ""){
   	echo '<script>alert("Escolha uma categoria. ")</script>';
// Se não colocar o nome da sub-categoria não cadastra.
	}else if($nome == ""){
   echo '<script>alert("Escreva o nome da Sub-Categoria!.")</script>';


}else{
         $sql = "INSERT INTO categorias VALUES(null, '%s', '%s')";
	  $sql = sprintf($sql, $id_pai, $nome);
         $query = mysql_query($sql) or die ("Erro na Insercao ao bando de dados".mysql_error());

         if ($query == true) {
              echo '<script>alert("Sub-Categoria cadastrada!")</script>';
         }else{
              echo '<script>alert("Ocorreu algum erro ao cadastrar a Sub-Categoria!")</script>';
         }
    }
}

 

Desculpa ai, mais é pq to perdidão mesmo.

 

Alguém sabe se o caminho é este mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é por aí, sim, mas o query_selc deve usar o $Ip_pai passado pelo usuário, não o número 5

e coloque o select dentro do mesmo if do insert, já que ele só é necessário na inserção. isso evita uma conexão inútil à base de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

é por aí, sim, mas o query_selc deve usar o $Ip_pai passado pelo usuário, não o número 5

e coloque o select dentro do mesmo if do insert, já que ele só é necessário na inserção. isso evita uma conexão inútil à base de dados

Beraldo fiz desse jeito aqui:

// Aqui começa o script para cadastrar as sub-categorias

if(isset($_POST['cadastro']) && $_POST['cadastro'] == 'sub'){
// Se o não escolher a categoria no select não cadastra.	
if($id_pai == ""){
   	echo '<script>alert("Escolha uma categoria. ")</script>';
// Se não colocar o nome da sub-categoria não cadastra.
	}else if($nome == ""){
   echo '<script>alert("Escreva o nome da Sub-Categoria!.")</script>';


}else{

// Conta a quantidade de categorias suportadas
	$sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = 5";
	$query_selc = mysql_query($id_pai) or die ("Erro no Select".mysql_query());

         $sql = "INSERT INTO categorias VALUES(null, '%s', '%s')";
	  $sql = sprintf($sql, $id_pai, $nome);
         $query = mysql_query($sql) or die ("Erro na Insercao ao bando de dados".mysql_error());

         if ($query == true) {
              echo '<script>alert("Sub-Categoria cadastrada!")</script>';
         }else{
              echo '<script>alert("Ocorreu algum erro ao cadastrar a Sub-Categoria!")</script>';
         }
    }
}

Só que na hora de cadastrar a sub da o seguinte erro:

Warning: mysql_query() expects at least 1 parameter, 0 given in C:\wamp\www\categorias\cadastrar-cat.php on line 40

Erro no Select

 

 

A linha 40 é a variável $query_selec

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está passando $id_pai pra query, ou seja, passando um inteiro em vez de uma stirng sql. passe $sql_selct, mas troque o 5 por $id_pai

Desculpe, mas pelo oque eu entendi ficaria assim?

 

// Conta a quantidade de sub-categorias suportadas
               $sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = $id_pai";
               $query_selc = mysql_query($sql_selec) or die ("Erro no Select".mysql_query());

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa de loop, pois só haverá uma linha no resultado da consulta

Então fica +/- assim?

$sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = $id_pai";
               $query_selc = mysql_query($sql_selec) or die ("Erro no Select".mysql_query());

			$fetch = mysql_fetch_assoc($query_selc){
				printf 'total';
			}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim:

 

$fetch = mysql_fetch_assoc($query_selc);
print $fetch['total'];

 

 

as chaves que colocou são do while, que não existe aqui

e você estava imprimindo a stirng 'total'. use o array retornado por fetch_assoc()

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sim, mas o certo seria isto:

$sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = $id_pai";
               $query_selc = mysql_query($sql_selec) or die ("Erro no Select".mysql_query());

			$fetch = mysql_fetch_assoc($query_selc);
			if ( $fetch['total'] >= 2 ){
       		echo '<script>alert("Limite de Sub-categorias.")</script>';
			}else{

Correto?

Só que na hora de cadastrar da erro na linha:

                $query_selc = mysql_query($sql_selec) or die ("Erro no Select".mysql_query());

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde colocou o echo?

 

teste isto:

$sql_selec = "SELECT COUNT (*) as total FROM categorias WHERE id_pai = $id_pai";
echo $sql_selec;
// mysql_query...

 

se continuar o erro, só posso pedir pra você remover esse easyPHP e instalar o PHP manualmente. esses pacotes são uma porcaria

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.