Ir para conteúdo

Arquivado

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

Lady Z.ero

[Resolvido] php + mysql

Recommended Posts

Intaum galera ... tenhu um formulario onde o grau de formação tem a opçao add campo caso a pessoa tenha outro curso...

O problema é que quando salvo o primeiro campo aparece normalmente no mysql e os outros aparecem com outro id e escrito array...

O que eu estou fazendo de errado? Queria que todos aparecessem em um mesmo campo e no mesmo id...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

posta os codigos que voce utiliza para pegar esses dados do formulario. e o formulario, assim fica mais facil de ver oque esta ocorrendo..

 

 

att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo mostre o que você tá fazendo e poste a estrutura do banco

 

 

 

 

Aqui ta o form.....

 

<html>
<head>
<title>Untitled Document</title>
<script src="Arquivos_js/jquery-1.3.2.min.js"></script>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript" src="jquery-dynamic-form.js"></script>
<script type="text/javascript">

	$(document).ready(function(){	

		$("#informatica").dynamicForm("#informatica_mais", "#informatica_menos", {limit:5, createColor: 'yellow',removeColor: 'red'});


	});

</script>


<style type="text/css">
<!--
.botao_duplica {
	background-color: #060;

	color:#fff;

	font-size:11px;

	border:2px solid #030;

	padding:3px;
}
-->
</style>
</head>

<body>

</script>





<form id="form1" name="dados_pessoais" method="post" action="salvar.php" onSubmit="return validaForm()">

<table width="530" height="194" border="0" cellpadding="2" >
  <tr>
    <td height="35" class="texto-info">
      <div id="informatica">
        <table width="575" border="0">
          <tr>
            <td width="33%" height="25" valign="bottom" align="right"> <font face="Tahoma"> <span style="font-size: 9pt">Curso:</span></font></td>
            <td width="65%" valign="bottom">
              <input name="nome_curso" type="text" class="campo_formularios campo_formularios_min" id="infor_curso" size="36" style="background-color: #F0F0F0"

                             /></td>
          </tr>
          <tr>
            <td align="right"> <font face="Tahoma"> <span style="font-size: 9pt"> Instituição:</span></font></td>
            <td>
              <input name="instituicao" type="text" class="campo_formularios campo_formularios_min" id="infor_curso_instituicao" size="36" style="background-color: #F0F0F0"

                             /></td>
          </tr>
          <tr>
            <td width="33%" height="25" valign="bottom" align="right"> <font face="Tahoma" style="font-size: 9pt"> Situação</font></td>
            <td width="65%" valign="bottom">
              <select name="situacao" id="infor_nivel" class="campo_formularios campo_formularios_min" size="1" style="background-color: #F0F0F0">
                <option value="" >Selecione</option>
                <option value="completo">Completo</option>
                <option value="incompleto">Incompleto</option>
                <option value="Cursando">Cursando</option>
                <option value="Interrompido">Interrompido</option>
            </select></td>
          </tr>
          <tr>
            <td height="25" valign="bottom" align="right"> <font face="Tahoma"> <span style="font-size: 9pt">Carga horário</span></font></td>
            <td><font face="Futura Lt BT">
              <input name="carga_hr" type="text" id="data_expedicao2" tabindex="1" onKeyPress="return mascara(event,this,'##/####');" size="10" maxlength="10" style="background-color: #F0F0F0">
            </font></td>
          </tr>
          <tr>
            <td> </td>
            <td> </td>
          </tr>
        </table>
      </div>
      <input name="button" type="button" class="botao_duplica" id="informatica_menos" style="background-color: #99CCFF; font-family:tahoma; font-weight:bold" value="Remover campo" />
      <input name="button" type="button" class="botao_duplica" id="informatica_mais" style="background-color: #99CCFF; font-family:tahoma; font-weight:bold" value="Adicionar campo" />
    </td>
  </tr>
						</tr>
						<tr>
							<td height="15" colspan="2" align="center">
							<p></p>
							<p></p>
							<p></p>
							<p></p>
							<p></p>
							<p align="center"> 
							<input type="submit" value="Enviar" name="Submit" style="color: #99CCFF; border: 3px ridge #99CCFF; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; font-family:serif; text-transform:uppercase; font-weight:bold; letter-spacing:1pt">
							</td>
						</tr>

</table>
</body>
</html>



 

 

e akii o salvar.php

 

 


<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

$nome_curso 	= $_POST["nome_curso"];
$instituicao	= $_POST["instituicao"];
$situacao		= $_POST["situacao"];
$carga_hr		= $_POST["carga_hr"];

mysql_connect("localhost", "root", "senha");
mysql_select_db("bd");

mysql_query("INSERT INTO dados_teste ( codigo , nome_curso , instituicao, situacao, carga_hr) 
			VALUES ( NULL , '$nome_curso', '$instituicao', '$situacao', '$carga_hr')");
echo "Salvo com sucesso";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Lady Gaga Imagem Postada

 

quanto tem código assim ajuda você indicar em que parte do código está o seu problema... eu não tenho paciência de ler muito código e imagino que não seja o único...

 

agora, se entendi o seu problema. parece que você adiciona campos por js, não podem haver id's iguais em uma página, então, ou você faz um contador para o js e passa este para o id do elemento, ou declara o name dele como

meu_campo[]

 

assim se você fizer var_dump($_POST['meu_campo']) você vai ver que é um array com todos os valores de todos estes campos.

 

entendeu?

 

e eu te entendi?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Intaum naum ti entendi muito bem e creio que você tbm naum me entendeu...

 

segue o codigo do campo quando eu duplico ele ...

 



          <tr>
            <td align="right"> <font face="Tahoma"> <span style="font-size: 9pt;"> Instituição:</span></font></td>
            <td>
              <input name="instituicao[]" class="campo_formularios campo_formularios_min" id="infor_curso_instituicao1" size="36" style="background-color: rgb(240, 240, 240);" type="text"></td>
          </tr>
          <tr>

            <td align="right" valign="bottom" width="33%" height="25"> <font style="font-size: 9pt;" face="Tahoma"> Situação</font></td>
            <td valign="bottom" width="65%">
              <select name="situacao[]" id="infor_nivel2" class="campo_formularios campo_formularios_min" size="1" style="background-color: rgb(240, 240, 240);">
                <option value="">Selecione</option>
                <option value="completo">Completo</option>
                <option value="incompleto">Incompleto</option>

                <option value="Cursando">Cursando</option>
                <option value="Interrompido">Interrompido</option>
            </select></td>
          </tr>


Se perceber ele jah cria "[]"...

 

Outra questão...

esse campo no mysql vai aparece... o nome da instituição.... ou vai aparecer escrito array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando houver só um vai aparecer o conteúdo, quando houver mais provavelmente vai trazer Array.

 

pq você tah fazendo

 

$instituicao = $_POST["instituicao"];

 

  $insituicao = '';
  foreach($_POST["instituicao"] as $p) {
    //Faz o tratamento de acordo com o teu banco daí. tipo...
    $insituicao .= $p.",";
  }

 

tamo se entendendo agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

errado.

 

apenas no que é array. pq você quer percorrer apenas ele, os outros você sabe que só tem 1 valor, então não precisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

errado.

 

apenas no que é array. pq você quer percorrer apenas ele, os outros você sabe que só tem 1 valor, então não precisa.

 

Tipo...

existem varios campos ...

 

-->Curso

-->Instituição

-->Situação

-->Carga horária

 

e todos eles vaum ser duplicados com o botaum add campo...

 

mandei o codigo de um so pra você ver como exemplo de como aparece os "[]"...

 

 

Intaum nesse caso eu faço o foreach em todos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah bom. desculpe.

 

entao é isso ae.

 

(ainda sou iniciante, se alguém tiver uma sugestão melhor...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah bom. desculpe.

 

entao é isso ae.

 

(ainda sou iniciante, se alguém tiver uma sugestão melhor...)

 

 

Ixiii somos 2 intaum ...

Agora outra coisa....

Esse $p que você cito lá no foreach ... qual a função dele ...

eu naum compreendi isso muito bem ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

para cada $_POST sendo $p faz

 

seu post vai ser um array, e o o foreach vai percorrer esse array.

em cada laço o valor do seu array na primeira, segunda... posicao vai ser atribuido a $p

 

é o mesmo que fazer

 

  for($i=0;$i<=count(ArrayQualquer)-1;$i++ {
    $p = ArrayQualquer[$i];
    echo $p;
  }
//é igual a
  foreach(ArrayQualquer as $p) {
    echo $p;
  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

para cada $_POST sendo $p faz

 

seu post vai ser um array, e o o foreach vai percorrer esse array.

em cada laço o valor do seu array na primeira, segunda... posicao vai ser atribuido a $p

 

é o mesmo que fazer

 

  for($i=0;$i<=count(ArrayQualquer)-1;$i++ {
    $p = ArrayQualquer[$i];
    echo $p;
  }
//é igual a
  foreach(ArrayQualquer as $p) {
    echo $p;
  }

 

$p é o valor que eu vo inseri dentro da tbl?!

 

mas quando eu envio o arquivo pro bd ele da o seguinte erro:

 

Warning: invalid argument supplied for foreach() in C:\Salvar.php on line 8

 

O meu novo codigo fico assim ....


<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

$instituicao    ='';
 foreach($POST["instituicao"] as $p) {

mysql_connect("localhost", "root", "senha");
mysql_select_db("bd");

mysql_query("INSERT INTO dados_teste ( codigo , instituicao) 
                        VALUES ( NULL , '$p')");
}
echo "Salvo com sucesso";
?>


e agora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

$instituicao    ='';
 foreach($POST["instituicao"] as $p) { //$POST na verdade deve ser $_POST

mysql_connect("localhost", "root", "senha"); //aqui e
mysql_select_db("bd");                       //aqui é melhor deixar fora do laço

mysql_query("INSERT INTO dados_teste ( codigo , instituicao) 
                        VALUES ( NULL , '$p')");
}
echo "Salvo com sucesso";
?>

 

<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

$instituicao    ='';
mysql_connect("localhost", "root", "senha");
mysql_select_db("bd");
 foreach($_POST["instituicao"] as $p) {

mysql_query("INSERT INTO dados_teste ( codigo , instituicao) 
                        VALUES ( NULL , '$p')");
}
echo "Salvo com sucesso";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso acima ou grava em campos diferentes ou coloca tudo em um mesmo campo separados por virgulas para futura manipulação.

 

só li por cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso acima ou grava em campos diferentes ou coloca tudo em um mesmo campo separados por virgulas para futura manipulação.

 

só li por cima

 

Poderia me dar o exemplo de como ficaria separado por ","?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Separado por virgula seria uma POG

 

Acho que é mais fácil você criar uma tabela para os dados que vem do array e fazer um relacionamento das tabelas com joins depois!

 

primeiro cadastra os dados da seguinte forma

 

mysql_query("INSERT INTO dados_teste ( nome_curso ,  situacao, carga_hr) 
                        VALUES ('$nome_curso', '$situacao', '$carga_hr')");

$insert_id = mysql_insert_id();

 

pega o id de cadastro com mysql_insert_id() e joga numa variável e insira na tabela de instituições usando o foreach

 

foreach($_POST["instituicao"] as $p) {

mysql_query("INSERT INTO dados_teste_intituicoes ( codigo , instituicao) 
                        VALUES ( '$insert_id', '$p')");
}

Vai ser mais pratico para você!

 

Qualquer duvida poste ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora...pra responde...tava almoçando Imagem Postada

 

Mais então... você acha mais pratico eu cria duas tabelas diferentes??

Não vai fica complicado depois eu chama esses dados??

Pq isso na verdade faz parte de um cadastro de curriculo..

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.