Ir para conteúdo

POWERED BY:

Arquivado

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

RDP

[Resolvido] Erro no SELECT

Recommended Posts

Boa Noite!!

 

Tem um sisteminha aki que aparece um FATAL ERROR ao iniciar a pagina,

apos escolha ele funciona normalmente, se alguem puder ajudar

 

pagina form_modelo.php

<script language="JavaScript" src="../js/select.js"></script>
<?php include ('../include/conexao.php'); ?>
<body onLoad="javascript:Atualiza();">
<div id="form_modelo">
       <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<span class="identificacao">Cadastro de Modelo</span>
<p align="left">
<span class="gray">Todas Modelos:  
<select name="modelo" onChange="javascript:Atualiza(this.value);" class="borda1">
<option>-- Todas Modelos --</option>
       <?php
	$sql = "SELECT id_modelo, nome_modelo FROM modelo ORDER BY nome_modelo ASC";
	$res = $conexao->query($sql);
	while($array = $res->fetch_object()):
		echo "<option value=\"".$array->id_modelo."\">".$array->nome_modelo."</option>";
	endwhile;
?>
</select>
</p>
       </form>
</div>
<br />
<div id="atualiza"></div>
<br />
.
.
.
</body>

 

pagina atualiza.php

<?php
include ('../include/conexao.php');
if (!isset($_GET['modelo']) || $_GET['modelo'] == "-- Todas Modelos --"){
echo "Escolha uma Modelo";
}else{
$sql = "SELECT * FROM modelo WHERE id_modelo = ".$_GET['modelo']."";
$res = $conexao->query($sql);
while($array = $res->fetch_object()){ // esta é a linha 8
	$idade = date('Y') - substr($array->nascimento_modelo,0,4);
	echo "<div style=float:left;>";
	echo "<img src=".$array->img_modelo." border=0 width=120 height=120 ></a></div>";
	echo "<div style=float:left; > <p align=left >";
	echo "    <span class=red >".$array->nome_modelo." ".$array->sobrenome_modelo."</span>";
	echo "<br /><span class=gray >";
	echo "    RG: ".$array->rg_modelo."<br />";
	echo "    CPF: ".$array->cpf_modelo."<br />";
	echo "    Idade: ".$idade."<br />";
	echo "</span></p></div>";
}
}
?>

 

pagina select.js

var req;
function loadXMLDoc(url,valor)
{
   req = null;
   // Procura por um objeto nativo (Mozilla/Safari)
   if (window.XMLHttpRequest) {
       req = new XMLHttpRequest();
       req.onreadystatechange = processReqChange;
       req.open("GET", url+'?modelo='+valor, true);
       req.send(null);
   // Procura por uma versao ActiveX (IE)
   } else if (window.ActiveXObject) {
       req = new ActiveXObject("Microsoft.XMLHTTP");
       if (req) {
           req.onreadystatechange = processReqChange;
           req.open("GET", url+'?modelo='+valor, true);
           req.send();
       }
   }
}

function processReqChange()
{
   // apenas quando o estado for "completado"
   if (req.readyState == 4) {
       // apenas se o servidor retornar "OK"
       if (req.status == 200) {
           // procura pela div id="atualiza" e insere o conteudo
           // retornado nela, como texto HTML
           document.getElementById('atualiza').innerHTML = req.responseText;
       } else {
           alert("Houve um problema ao obter os dados:\n" + req.statusText);
       }
   }
}

function Atualiza(valor)
{
   loadXMLDoc("atualiza.php",valor);
}

 

ERROR

Fatal error: Call to a member function fetch_object() on a non-object in C:\wamp\www\novo_projeto\adm\atualiza.php on line 8

 

Estou fazendo desta maneira pois NÃO pode haver um SUBMIT neste formulario

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer algo assim:

 

<?php
include ('../include/conexao.php');
if (!isset($_GET['modelo']) || $_GET['modelo'] == "-- Todas Modelos --"){
       echo "Escolha uma Modelo";
}else{
       $sql = "SELECT * FROM modelo WHERE id_modelo = ".$_GET['modelo']."";
       $res = mysql_query($sql);
       while($array = mysql_fetch_array($res){ // esta é a linha 8
               $idade = date('Y') - substr($array->nascimento_modelo,0,4);
               echo "<div style=float:left;>";
               echo "<img src=".$array->img_modelo." border=0 width=120 height=120 ></a></div>";
               echo "<div style=float:left; > <p align=left >";
               echo "    <span class=red >".$array->nome_modelo." ".$array->sobrenome_modelo."</span>";
               echo "<br /><span class=gray >";
               echo "    RG: ".$array->rg_modelo."<br />";
               echo "    CPF: ".$array->cpf_modelo."<br />";
               echo "    Idade: ".$idade."<br />";
               echo "</span></p></div>";
       }
}
?>

 

Não mudei muita coisa, só na hora de pegar os dados lá na linha 7 e 8... vê o qe dá...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!!

 

Tentei fazer como vcs disseram e não funcionou.

 

Como sou novo em PHP achu que deve ser pq estou usando a classe MySQLI

 

então o mysql_fetch_object, mysql_fetch_array, ... não funciona.

 

Imprimindo a query apareceu:

SELECT * FROM modelo WHERE id_modelo = undefined

 

pelo que entendi a $_GET não foi definido valor p/ ela.

bom para isso usei o isset, tentei tb o empty

 

alguma luz??

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque:

<select name="modelo" onchange="javascript:Atualiza(this.value);" class="borda1">

 

por:

<select name="modelo" onchange="Atualiza( this.value );" class="borda1">

e para debug:

function Atualiza(valor)
{
   alert( valor );
   loadXMLDoc("atualiza.php",valor);
}

 

veja se o valor, vem com o valor correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fiz as alteraçoes mas ainda nada

 

ao iniciar a página não é passaso um valor

apareceu lá "undefined".

 

apos para cada nome selecionado no combobox, é passado um valor

e o valor vem correto.

 

há lembrando que é só ao iniciar a página que da o erro

pois não é passado um valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

então está bastante obvio, nao ?

 

function Atualiza(valor)
{
   var v = valor==undefined ? 'valor default' : valor; 
   loadXMLDoc( 'atualiza.php', v );
}

ali eu testo, se 'valor' estiver undefined, então envio um valor default (troque pelo que você quiser), caso contrario envia o q veio como parametro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal consegui!!

 

troquei:

$sql = "SELECT * FROM modelo WHERE id_modelo = ".$_GET['modelo']."";

 

por:

$sql = "SELECT * FROM modelo WHERE id_modelo = '".$_GET['modelo']."'";

 

ao iniciar a pagina ele não me passa nenhum valor para $_GET['modelo'] mas desaparece o Fatal Error

o que não entendi é que por ser um int não seria necessário as aspas simples, se alguem puder

explicar isso.

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, é ERRADO você fazer isso que você fez.

 

já que é um INT, faça um cast.

 

$modelo = isset( $_GET['modelo'] ) ? (int)$_GET['modelo'] : 0;
$sql = "SELECT * FROM modelo WHERE id_modelo = {$modelo}";

 

se você for para um servidor 'mais bem configurado', terá problemas com essa 'solução' que você fez.

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.