Ir para conteúdo

POWERED BY:

Arquivado

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

pedro adnarim

enviar dados listbox para o mysql

Recommended Posts

Desculpem...ainda falta o código result.php, que vai buscar a lista dos cursos!

Aqui está o código:

 

matricula_aluno.php

 

<?php
header("Content-Type: text/html; charset=iso-8859-1");

// Faz o controlo da cache.
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

// Aqui criamos a conexão com o base de dados.
$con = mysql_connect("localhost", "root", "");
mysql_select_db("pinternet");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function list_dados(valor)
{
   // Passando os dados para a página result.php através do método GET.
http.open("GET", "result.php?id=" + valor, true);
http.onreadystatechange = handleHttpResponse;  
http.send(null);
}

function handleHttpResponse()
{
   campo_select = document.forms[0].origem;
   if (http.readyState == 4) {
    campo_select.options.length = 0;
	results = http.responseText.split(",");
       for (var i = 0; i < results.length; i++) {
           string = results[i].split("|");
           campo_select.options[i] = new Option(string[0], string[1]);
       }  
   }
}

// Essa função é somente para identificar o Navegador e suporte ao XMLHttpRequest.
function getHTTPObject()
{
   var req;
   try {
       if (window.XMLHttpRequest) {
           req = new XMLHttpRequest();
           if (req.readyState == null) {
               req.readyState = 1;
               req.addEventListener("load", function() {
                   req.readyState = 4;
                   if (typeof req.onReadyStateChange == "function") {
                       req.onReadyStateChange();
                   }
               }, false);  
           }
           return req; 
       }

       if (window.ActiveXObject) {
           var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
           for (var i = 0; i < prefixes.length; i++) {
               try {
                   req = new ActiveXObject(prefixes[i] + ".XmlHttp");
                   return req;
               } catch (ex) {};
           }
       }
   } catch (ex) {}

   alert("XmlHttp Objects not supported by client browser");
}
var http = getHTTPObject();
// Logo após fazer a verificação, é chamada a função e passada 
// o valor à variável global http.

function mover(ListOrigem,ListDestino)
{
var i;
for (i = 0; i < ListOrigem.options.length ; i++)
{
if (ListOrigem.options[i].selected == true)
 {
 var Op = document.createElement("OPTION");
 Op.text = ListOrigem.options[i].text;
 Op.value = ListOrigem.options[i].value;
 ListDestino.options.add(Op);
// ListOrigem.options.remove(i);//
ListOrigem.options[i]=null;
 i--;
 }
}
}


</script>
</head>
<body>
<form name="formulario" method="post" action="recebe_list_exe.php">
<p>
 <select name="categoria" onChange="javascript:list_dados(this.value);">
   <option></option>
   <?php
/* SQL que procura os artigos do base de dados e monta o select */
$consulta = mysql_query("SELECT * FROM curso ORDER BY nomecurso ASC");
while ($row = mysql_fetch_assoc($consulta)) {
       echo "<option value=\"{$row['idcurso']}\">{$row['nomecurso']}</option>\n";
}
?>      
 </select>
 <TABLE>
</p>
<p>  </p>
<TR>
<TD> <p>
  <select size="5"  name="origem" id="origem">
    </select>
  <input name="adicionar" type="button" value=">>"  onClick="javascript:mover(document.forms[0].origem,document.forms[0].destino);" />
  <input name="remover" type="button" value="<<" onClick="javascript:mover(document.forms[0].destino,document.forms[0].origem);"/>
  <select size="5" name="destino" id="destino">
    </select>
</p>
  </tr>
   </table>
       <p>
         <input type='button' value='enviar' onclick='list_dados(valor)'>
       </p>
</form>
</body>
</html>

 

 

 

result.php

 

<?php
//Adicionado para não quebrar acentuação.
header("Content-Type: text/html; charset=iso-8859-1");

//Faz o controlo da cache.
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

//Base de dados
$con = mysql_connect("localhost", "root", "");
// Selecionar  base de dados, neste caso chama-se pinternet
mysql_select_db("pinternet");
$linha = "";
// Guardar o id passado pelo form select
// Trim remove os espaços no inicio e final
// addslashes Retorna uma string com barras invertidas antes de caracteres 
// que precisam ser escapados para serem escapados em query a banco de dados
$idcurso = addslashes(trim($_GET["id"])); 
// Fazer o nosso select para todas disiciplinas que pertencem ao curso presente 
// na variavel $curso acima
$consulta = mysql_query("SELECT * FROM disciplina  WHERE idcurso='$idcurso' ORDER BY nomedisciplina ASC" ); 
while( $row = mysql_fetch_assoc($consulta) ){
// disciplina será apresentada da forma "NOME|ID,..."
// Maneira a ser tratada no JavaScript
// Vale lembrar que estamos a contatenar o "nomedisciplina" com a "|" com o "iddisciplina" e com a ","  
$linha .=  $row["nomedisciplina"] . "|" . $row["iddisciplina"] . ","; 
}
//Retira a última vírgula para não vir registro em branco.
$linha = substr($linha,0,(strlen($linha)-1));
echo $linha;
?>

 

 

 

recebe_list_exe.php

<?php
include ('conexao.php');
$nmecanografico=$_POST['nmecanografico'];
$iddisciplina=$_POST['iddisciplina'];
echo "<P>N Mecanografico: ".$nmecanografico."<BR>";
echo "ID Disciplina: ".$iddisciplina."</P>";
$sql="INSERT INTO matricula (nmecanografico, iddisciplina)
VALUES ('".$nmecanografico."','".
$iddisciplina."')";
$result = mysql_query($sql) or die(mysql_error());
if ($result)
echo "Dados registados com sucesso!";
else
echo "Erro ao tentar registar dados no banco!";
?>
<a href="pagina_inicial.php"><BR>Inicio</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é!!

não estou vendo nenhum elemento com nome nmecanografico ou iddisciplina que você está tentando pegar no recebe_list_exe.php

e você não aproveitou nada do que eu te passei no tópico

http://forum.imasters.com.br/index.php?/topic/393706-listbox/

 

 

se você observar é exatamento o que você está precisando

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu professor, na altura disse-me que depois de fazer o registo do aluno iria haver um link que redireccionava para a página de matricula, e associado a esse link estava o nmecanografico, que por sua vez a o seu nmecanografico ia estar associada ás disciplinas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o seguinte se você está recebendo pela URL você usa o método GET

e se o arquivo matricula_aluno.php está recebendo algo por URL você precisa repassar para o arquivo recebe_list_exe.php

dá pra fazer usando um campo do tipo hidden

outra coisa para o php pegar os dados de um listbox os itens precisam estar marcados

 

qlqr dúvida,

estou a disposição

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é!!

não estou vendo nenhum elemento com nome nmecanografico ou iddisciplina que você está tentando pegar no recebe_list_exe.php

e você não aproveitou nada do que eu te passei no tópico

http://forum.imasters.com.br/index.php?/topic/393706-listbox/

 

 

se você observar é exatamento o que você está precisando

 

 

 

Já não dá erro mas ainda guarda as disciplina!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu ja não estou entendendo nada .. Explica oque o List box vai fazer , e depois de inserir tem que acontecer oque :)

 

 

 

 

 

Eu tenho o campo Curso com uma lista de cursos e ao seleccionar um curso vai aparecerem baixo na listbox1 "origem" a lista de disciplinas associadas ao curso seleccionado. Depois selecciono as disciplinas que me quero matricular para a listbox2 "destino". E por último, quero guardar as disciplinas que estão na listbox2 na base dados, na tabela matricula.

 

Amigo , poste teu codigo todo ai , e fala oque tem que fazer ;)

 

 

 

 

Eu tenho o campo Curso com uma lista de cursos e ao seleccionar um curso vai aparecerem baixo na listbox1 "origem" a lista de disciplinas associadas ao curso seleccionado. Depois selecciono as disciplinas que me quero matricular para a listbox2 "destino". E por último, quero guardar as disciplinas que estão na listbox2 na base dados, na tabela matricula.

 

Este é o meu código todo:

 

matricula_aluno.php

 

<?php
header("Content-Type: text/html; charset=iso-8859-1");

// Faz o controlo da cache.
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

// Aqui criamos a conexão com o base de dados.
$con = mysql_connect("localhost", "root", "");
mysql_select_db("pinternet");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function list_dados(valor)
{
   // Passando os dados para a página result.php através do método GET.
http.open("GET", "result.php?id=" + valor, true);
http.onreadystatechange = handleHttpResponse;  
http.send(null);
}

function handleHttpResponse()
{
   campo_select = document.forms[0].origem;
   if (http.readyState == 4) {
    campo_select.options.length = 0;
	results = http.responseText.split(",");
       for (var i = 0; i < results.length; i++) {
           string = results[i].split("|");
           campo_select.options[i] = new Option(string[0], string[1]);
       }  
   }
}

// Essa função é somente para identificar o Navegador e suporte ao XMLHttpRequest.
function getHTTPObject()
{
   var req;
   try {
       if (window.XMLHttpRequest) {
           req = new XMLHttpRequest();
           if (req.readyState == null) {
               req.readyState = 1;
               req.addEventListener("load", function() {
                   req.readyState = 4;
                   if (typeof req.onReadyStateChange == "function") {
                       req.onReadyStateChange();
                   }
               }, false);  
           }
           return req; 
       }

       if (window.ActiveXObject) {
           var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
           for (var i = 0; i < prefixes.length; i++) {
               try {
                   req = new ActiveXObject(prefixes[i] + ".XmlHttp");
                   return req;
               } catch (ex) {};
           }
       }
   } catch (ex) {}

   alert("XmlHttp Objects not supported by client browser");
}
var http = getHTTPObject();
// Logo após fazer a verificação, é chamada a função e passada 
// o valor à variável global http.

function mover(ListOrigem,ListDestino)
{
var i;
for (i = 0; i < ListOrigem.options.length ; i++)
{
if (ListOrigem.options[i].selected == true)
 {
 var Op = document.createElement("OPTION");
 Op.text = ListOrigem.options[i].text;
 Op.value = ListOrigem.options[i].value;
 ListDestino.options.add(Op);
// ListOrigem.options.remove(i);//
ListOrigem.options[i]=null;
 i--;
 }
}
}


</script>
</head>
<body>
<form name="combo_box" action="recebe_list_exe.php" method="post">
<p>
 Curso:
 <select name="categoria" onChange="javascript:list_dados(this.value);">
   <option></option>
   <?php
/* SQL que procura os artigos do base de dados e monta o select */
$consulta = mysql_query("SELECT * FROM curso ORDER BY nomecurso ASC");
while ($row = mysql_fetch_assoc($consulta)) {
       echo "<option value=\"{$row['idcurso']}\">{$row['nomecurso']}</option>\n";
}
?>      
 </select>
 <p>  
 <p>  
 <p>  
 <p>Disciplinas:</p>
 <table>
   <p></p>
   <tr>
     <td><p>
       <select size="5"  name="origem" id="origem">
       </select>
       <input name="adicionar" type="button" value=">>"  onClick="javascript:mover(document.forms[0].origem,document.forms[0].destino);" />
       <input name="remover" type="button" value="<<" onClick="javascript:mover(document.forms[0].destino,document.forms[0].origem);"/>
       <select size="5" name="destino[]" id="destino">
       </select>
     </p>
   </tr>
 </table>
 <p>
   <input type='button' value='enviar' onclick='list_dados(valor)'>
 </p>
</form>
</body>
</html>

 

 

result.php

<?php
//Adicionado para não quebrar acentuação.
header("Content-Type: text/html; charset=iso-8859-1");

//Faz o controlo da cache.
$gmtDate = gmdate("D, d M Y H:i:s");
header("Expires: {$gmtDate} GMT");
header("Last-Modified: {$gmtDate} GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

//Base de dados
$con = mysql_connect("localhost", "root", "");
// Selecionar  base de dados, neste caso chama-se pinternet
mysql_select_db("pinternet");
$linha = "";
// Guardar o id passado pelo form select
// Trim remove os espaços no inicio e final
// addslashes Retorna uma string com barras invertidas antes de caracteres 
// que precisam ser escapados para serem escapados em query a banco de dados
$idcurso = addslashes(trim($_GET["id"])); 
// Fazer o nosso select para todas disiciplinas que pertencem ao curso presente 
// na variavel $curso acima
$consulta = mysql_query("SELECT * FROM disciplina  WHERE idcurso='$idcurso' ORDER BY nomedisciplina ASC" ); 
while( $row = mysql_fetch_assoc($consulta) ){
// disciplina será apresentada da forma "NOME|ID,..."
// Maneira a ser tratada no JavaScript
// Vale lembrar que estamos a contatenar o "nomedisciplina" com a "|" com o "iddisciplina" e com a ","  
$linha .=  $row["nomedisciplina"] . "|" . $row["iddisciplina"] . ","; 
}
//Retira a última vírgula para não vir registro em branco.
$linha = substr($linha,0,(strlen($linha)-1));
echo $linha;
?>

 

recebe_list_exe.php

 

<?php
include ('conexao.php');
$nmecanografico=isset($_POST['nmecanografico'])? implode(",", $_POST["nmecanografico"]) : "";
$iddisciplina=isset($_POST['iddisciplina'])? implode(",", $_POST["iddisciplina"]) : "";
$sql="INSERT INTO matricula (nmecanografico,iddisciplina)
VALUES ('".$iddisciplina."','".$nmecanografico."')";
$result = mysql_query($sql) or die(mysql_error());
if ($result)
echo "Dados registados com sucesso!";
else
echo "Erro ao tentar registar dados na base de dados!";
?>
<a href="pagina_inicial.php"><BR>Inicio</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem usar o ajax ele não vai ter o Combo nas diciplinas depois de selecionar , eu faria da seguinte maneira ..

 

 

criaria uma pagina php pra cada diciplina

 

pagina php seria assim ..

if($_GET['disciplina'] == 'matematica'){


 echo '<option value="Aeronaultica">Aeronaultica</option>';
  // assim pra todas , 

}

 

depois bote o jQuery na pagina ..

 

e faça assim

 

$(document).ready(function(){

  $("#id_do_select").change(function(){
     $.ajax({

           type: "GET",
           url: "pagina.php",
           data: "disciplina="+$("#id_do_select_com_os_cursos").val();
           success:function(mostra_opcoes){
             $("#onde_imprimir_as_opcoes").html(mostra_opcoes)
           }
     });
 });
});

 

+/- isso , da uma estudada sobre ajax em jquery :)

 

esses eventos em javascript sobre funçao em botão tipo onClick pode te gerar problemas em versoes de certos navegadores

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim .. mais eu estou seguindo o padrão de programação dele

 

se ele fez em Ajax , eu so mudei a forma de se fazer .. alem de ser mais facil jQuery

 

Pelomenos pra min , ele economiza pagina :D como tambem pode ter mais dor de cabeça pra implementar :P

 

Abraços

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.