Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo_laguna

Cadastro com PDO

Recommended Posts

Olá, no seguinte código postado abaixo tenho um cadastro simples que nele possui um select onde deveria me mostrar todos os dados de uma tabela, porém ele busca apenas o ultimo ou o primeiro de acordo com o ordem que coloco, onde estou errando, como faço para o campo select me retornar todos os itens?

 

<?php if(isset($_POST['enviar'])){
$titulo1 = strip_tags(trim($_POST['titulo1']));
$titulo2 = strip_tags(trim($_POST['titulo2']));
$titulo3 = strip_tags(trim($_POST['titulo3']));
$dataMateria = implode("-", array_reverse(explode("/", strip_tags(trim(($_POST['dataMateria']))))));
$idMenuMat = strip_tags(trim($_POST['idMenuMat']));
$status = strip_tags(trim($_POST['status']));
$corpoMateria = strip_tags(trim($_POST['corpoMateria']));

$sql_teste = 'INSERT INTO tb_materias (titulo1,titulo2,titulo3,dataMateria,idMenuMat,status,corpoMateria)';
$sql_teste .= 'VALUES (:titulo1,:titulo2,:titulo3,:dataMateria,:idMenuMat,:status,:corpoMateria)';

try{
	$query_teste = $conecta->prepare($sql_teste);
	$query_teste->bindValue(':titulo1',$titulo1,PDO::PARAM_STR);
	$query_teste->bindValue(':titulo2',$titulo2,PDO::PARAM_STR);
	$query_teste->bindValue(':titulo3',$titulo3,PDO::PARAM_STR);
	$query_teste->bindValue(':dataMateria',$dataMateria,PDO::PARAM_STR);
	$query_teste->bindValue(':idMenuMat',$idMenuMat,PDO::PARAM_STR);
	$query_teste->bindValue(':status',$status,PDO::PARAM_STR);
	$query_teste->bindValue(':corpoMateria',$corpoMateria,PDO::PARAM_STR);
	$query_teste->execute();
	echo 'Cadastro com sucesso';

}catch (PDOexception $error_insert){
	echo 'Erro ao cadastrar '.$error_insert->getMessage();
}
}
?>


<?php
$sql_select = 'SELECT idMenuPrinc, descMenuPrinc FROM tb_menuprinc ORDER BY descMenuPrinc ASC';


try{
	$query_select = $conecta->prepare($sql_select);
	$query_select->execute();
	$resultado_query = $query_select->fetchALL(PDO::FETCH_ASSOC);
	$count = $query_select->rowCount(PDO::FETCH_ASSOC);


}catch (PDOexception $error_select){
	echo 'Erro ao selecionar'.$error_select->getMessage();
}

foreach($resultado_query as $res){
	$idMenuPrinc = $res['idMenuPrinc'];
	$descMenuPrinc = $res['descMenuPrinc'];
	}


?>


<form name="cadastra_materia" action="" enctype="multipart/form-data" method="post">
 <p>
   Titulo1 - 
   <input name="titulo1" type="text" size="55" />
   <br />
   Titulo 2 - 
   <textarea name="titulo2" cols="55"></textarea>
 </p>
 <p>Titulo 3- 
   <textarea name="titulo3" cols="55" rows="3" ></textarea>
 </p>
 <p>Data -  
   <input name="dataMateria" type="text" class="form" value="<?php echo date("d/m/Y")?>" size="15"/>
 </p>
 <p>Menu Pertence -  

   <label>
   <select name="idMenuMat">
     <option value="-1">Selecione a CATEGORIA</option>
 	<option value="<?php echo $idMenuPrinc; ?>"><?php echo $descMenuPrinc; ?></option>
   </select>
   </label>
 </p>
 <p>Status - 
   <select name="status">
     <option value="on" <?php if (!(strcmp("on", ""))) {echo "SELECTED";} ?>>Visível</option>
     <option value="off" <?php if (!(strcmp("off", ""))) {echo "SELECTED";} ?>>Oculta</option>
   </select>
 </p>
 <p align="center">CONTEÚDO</p>
 <p align="center">
   <textarea name="corpoMateria" cols="80" rows="5"></textarea>    
   <br />
   <input type="submit" name="enviar" value="ENVIAR" />
             </p>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função execute funciona em par com a função prepare. Se você vai fazer um select sem placeholders use a função query.

 

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$query_select = $conecta->prepare($sql_select);
$query_select->execute();
$resultado_query = $query_select->fetchALL(PDO::FETCH_ASSOC);
$count = $resultado_query->rowCount();

 

tenta assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$sql_select = 'SELECT idMenuPrinc, descMenuPrinc FROM tb_menuprinc ORDER BY descMenuPrinc ASC';


try{
$query_select = $conecta->query($sql_select);
$resultado_query = $query_select->fetchALL(PDO::FETCH_ASSOC);

}catch (PDOexception $error_select){
echo 'Erro ao selecionar'.$error_select->getMessage();
}

foreach($resultado_query as $res){
$idMenuPrinc = $res['idMenuPrinc'];
$descMenuPrinc = $res['descMenuPrinc'];
}


?>

 

Tenta esse aqui ó!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um var_dump no $resultado_query e posta aí pra gente dar uma olhada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho poque no vardump que você mandou eu dar ele retornou tudo veja abaixo:

 

array(3) { [0]=> array(2) { ["idMenuPrinc"]=> string(1) "3" ["descMenuPrinc"]=> string(5) "Chile" } [1]=> array(2) { ["idMenuPrinc"]=> string(1) "2" ["descMenuPrinc"]=> string(6) "Brasil" } [2]=> array(2) { ["idMenuPrinc"]=> string(1) "1" ["descMenuPrinc"]=> string(9) "Argentina" } } int(0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está no seu foreach, veja:

 

foreach($resultado_query as $res){
  $idMenuPrinc = $res['idMenuPrinc'];
  $descMenuPrinc = $res['descMenuPrinc'];
}

 

Você não está alocando certo os valores. Se você quer guardar todos os valores você deve fazer assim:

 

foreach($resultado_query as $res){
  $idMenuPrinc[] = $res['idMenuPrinc'];
  $descMenuPrinc[] = $res['descMenuPrinc'];
}

 

Dê um var_dump em cada uma das variáveis depois desta alteração e poste aqui para gente ver!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim mae dae quando ele pega algo do banco so vem um campo e com o preenchimento escrito "ARRAY" pode testar que deu isso...

acessa meu link de teste pra ver

http://www.lagunainterativa.com.br/pdo/admin/cadastra_materia.php

 

Tinha esquecido do dump

segue

string(1) "5" NULL string(1) "4" NULL string(1) "3" NULL string(1) "2" NULL string(1) "1" NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

é do idMenuPrinc e do descMenuprinc, se eu retirar o comentário do echo $descmenuPrinc ele me mostra fora do list menu todos os cadastrados,

 

foreach($resultado_query as $res){

$idMenuPrinc = $res['idMenuPrinc'];

$descMenuPrinc = $res['descMenuPrinc'];

var_dump($idMenuPrinc);

var_dump($descMenuprinc);

 

//echo $descMenuPrinc;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a construção foi feita para que as variáveis $idMenuPrinc e $descMenuPrinc se tornem arrays para conseguir armazenar todos os valores retornados pelo banco de dados.

 

O que você vai fazer com as variáveis $idMenuPrinc e $descMenuPrinc?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O $idMenuPrinc é a chave primária da minha tabela de "MENUS" correto? E o campo $descMenuPrinc é a categoria onde irei inserir uma noticia,

Assim quando eu clicar numa categoria ela irá me mostrar quais as notas que tem cadastradas nela, se você quiser posso te mandar os arquivos por email pra você ver melhor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem necessidade de me mandar não...

 

Olha, cara, eu não gosto da solução que eu vou te dar, mas, acredito que vai funcionar pro seu caso:

 

<select name="idMenuMat">
<option value="-1">Selecione a CATEGORIA</option>
<?php
foreach($resultado_query as $res) {

?>

<option value="<?php echo $res['idMenuPrinc']; ?>"><?php echo $res['descMenuPrinc']; ?></option>

<?php
}
?>

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o modo de usar, cara!

 

Eu sou muito a favor de separar bem as camadas para evitar repetição de código e deixar o HTML mais livre de códigos PHP. Depois dá uma pesquisada em MVC!

 

Abraço!

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.