Ir para conteúdo

POWERED BY:

Arquivado

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

rafaitapema

inserir varios registros atraves de uma textarea

Recommended Posts

Ola pessoal,
Sou iniciante em PHP e estou com um problema que para muitos deve ser simples.
Preciso de um formulario que insira os dados da seguinte forma:
campo 1: responsavel pela lista
campo 2: nome da lista
campo 3: textarea que possibilite a inserçao de uma lista de nomes, um em cada linha da text area.

* O problema esta no campo 3, pois não consigo fazer com que o banco de dados fique da seguinte forma ao pressionar o botao inserir:

registro 1
- responsavel 1
- nome da lista 1
- nome 1

registro 2
- responsavel 1
- nome da lista 1
- nome 2

registro 3
- responsavel 1
- nome da lista 1
- nome 3

e assim por diante...

Aguardo a ajuda de voces!

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro vc deve definir um delimitador no seu textarea q pode ser, quebra de linha ou ponto e virgula por exemplo.

 

a ideia seria mais ou menos a seguinte:

 

 

$nomes  = explode(';' , $_POST['nomes']);
$responsave= $_POST['responsavel'];
$lista = $_POST['lista'];
foreach($nomes as $item){
    insert(responsavel, $lista, $item);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

primeiro vc deve definir um delimitador no seu textarea q pode ser, quebra de linha ou ponto e virgula por exemplo.

 

a ideia seria mais ou menos a seguinte:

 

 

$nomes  = explode(';' , $_POST['nomes']);
$responsave= $_POST['responsavel'];
$lista = $_POST['lista'];
foreach($nomes as $item){
    insert(responsavel, $lista, $item);
}

Ola amigo, obrigado pela rapida resposta!

Teria como me indicar onde consigo um script semelhante ao que eu preciso desenvolver para que eu possa analisar e de repente adapta-lo a minha necessidade? ja procurei por tudo e nao acho..

Agradeço novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse ai não serve?

Serve sim brother.. mas olha como ta meu codigo..dando erro:

 

<?php require_once('Connections/warung.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$nomes  = explode(';' , $_POST['nomes']);
$responsavel= $_POST['responsavel'];
$lista = $_POST['lista'];
foreach($nomes as $item){
    insert($responsavel, $lista, $item);
}

  mysql_select_db($database_warung, $warung);
  $Result1 = mysql_query($insertSQL, $warung) or die(mysql_error());

  $insertGoTo = "cadastro.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <table width="336" border="1">
    <tr>
      <td width="134">Responsavel:</td>
      <td width="186"><label for="responsavel"></label>
      <input type="text" name="responsavel" id="responsavel" /></td>
    </tr>
    <tr>
      <td>Dono da lista:</td>
      <td><label for="lista"></label>
      <input type="text" name="lista" id="lista" /></td>
    </tr>
    <tr>
      <td> Nomes:</td>
      <td><label for="nomes"></label>
      <textarea name="nomes" id="nomes" cols="45" rows="5"></textarea></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="Enviar" id="Enviar" value="Submit" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>
</body>
</html>

 

da este erro: Fatal error: Call to undefined function insert() in C:\wamp\www\nomelista\cadastro.php on line 44

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando este codigo mais simples:

 

 

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Cadastro realizado com sucesso!</title>
    </head>
    <body>
    <?php
    // RECEBENDO OS DADOS PREENCHIDOS DO FORMULÁRIO !
    $nome  = explode("/n" , $_POST["nome"]);//atribuição do campo "nome" vindo do formulário para variavel
    
     
    //Gravando no banco de dados ! conectando com o localhost - mysql
    $conexao = mysql_connect("localhost","root"); //localhost é onde esta o banco de dados.
    if (!$conexao)
    die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysql_error());
     
    //conectando com a tabela do banco de dados
    $banco = mysql_select_db("clientes",$conexao); //nome da tabela que deseja que seja inserida os dados cadastrais
    if (!$banco)
    die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error());
     
     
    //Query que realiza a inserção dos dados no banco de dados na tabela indicada acima
    foreach($nome as $item);{
    $query = "INSERT INTO `clientes` ( `nome` , `id` )
    VALUES ('$item', '')";
    mysql_query($query,$conexao);
    }
 
    echo "Seu cadastro foi realizado com sucesso!Agradecemos a atenção.";
    //mensagem que é escrita quando os dados são inseridos normalmente.
    ?>
    </body>
    </html>

 

O que eu preciso é que ao entrar uma lista de nomes (um em cada linha) na text area fique registrado no banco de dados da seguinte forma:

ID 1: NOME 1

ID 2: NOME 2

ID 3: NOME 3

 

e assim por diante...

 

Mas esta gravando da seguinte forma:

ID 1: NOME 1

NOME 2

NOME 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo funcionando:

 

index.php

 

 
<form id="form1" name="form1" method="post" action="lista_nomes.php">
   nomes: 
   <label for="nomes"></label>
   <textarea name="nomes" id="nomes" cols="45" rows="5"></textarea>
   <input type="submit" name="button" id="button" value="Enviar" />
</form>

 

lista_nomes.php

 

 
<?php
   $nomes = explode("\n",$_POST["nomes"]);
 
   foreach($nomes as $nome) {
      echo $nome."<br>";
   }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

responsavel e nome da lista são campos da tabela clientes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Um exemplo funcionando:

 

index.php

 

 
<form id="form1" name="form1" method="post" action="lista_nomes.php">
   nomes: 
   <label for="nomes"></label>
   <textarea name="nomes" id="nomes" cols="45" rows="5"></textarea>
   <input type="submit" name="button" id="button" value="Enviar" />
</form>

 

lista_nomes.php

 

 
<?php
   $nomes = explode("\n",$_POST["nomes"]);
 
   foreach($nomes as $nome) {
      echo $nome."<br>";
   }
?>

Legal amigo.. obrigado pela resposta. Esta exibindo corretamente, porem eu preciso que ele grave no banco de dados os registros em separado, como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste a estrutura das suas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

lista e responsavel são gravados onde?

Compartilhar este post


Link para o post
Compartilhar em outros sites

lista e responsavel são gravados onde?

Ola .. eu abandonei aquele primeiro script pq achei que estava muito complicado.. daih comecei a testar o outro que postei logo acima apenas com a opcao de gravar a lista de nomes em registros separados. Caso eu consiga gravar os dados da forma que preciso, o restante eu acho que consigo desenvolver mais facilmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando este codigo mais simples:

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Cadastro realizado com sucesso!</title>

</head>

<body>

<?php

// RECEBENDO OS DADOS PREENCHIDOS DO FORMULÁRIO !

$nome = explode("/n" , $_POST["nome"]);//atribuição do campo "nome" vindo do formulário para variavel

 

 

//Gravando no banco de dados ! conectando com o localhost - mysql

$conexao = mysql_connect("localhost","root"); //localhost é onde esta o banco de dados.

if (!$conexao)

die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysql_error());

 

//conectando com a tabela do banco de dados

$banco = mysql_select_db("clientes",$conexao); //nome da tabela que deseja que seja inserida os dados cadastrais

if (!$banco)

die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error());

 

 

//Query que realiza a inserção dos dados no banco de dados na tabela indicada acima

foreach($nome as $item);{

$query = "INSERT INTO `clientes` ( `nome` , `id` )

VALUES ('$item', '')";

mysql_query($query,$conexao);

}

 

echo "Seu cadastro foi realizado com sucesso!Agradecemos a atenção.";

//mensagem que é escrita quando os dados são inseridos normalmente.

?>

</body>

</html>

 

O que eu preciso é que ao entrar uma lista de nomes (um em cada linha) na text area fique registrado no banco de dados da seguinte forma:

ID 1: NOME 1

ID 2: NOME 2

ID 3: NOME 3

 

e assim por diante...

 

Mas esta gravando da seguinte forma:

ID 1: NOME 1

NOME 2

NOME 3

 

nome1, nome2, e nome3 ficam com o mesmo id?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nome1, nome2, e nome3 ficam com o mesmo id?

Eu preciso que eles fiquem em IDs separados...Entrar na textarea 3 ou mais nomes separados por linha e ao enviar pro banco eles fiquem gravados em registros separados..grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

  $query = "INSERT INTO `clientes` ( `nome`)  VALUES ('$item')";
    mysql_query($query,$conexao);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Assim funcionou aqui:

<?php

/* Recebendo e dividindo a string em strings através de expressão regular para várias plataformas (*nix,mac,windows) com função preg_split() nativa do PHP. */
$nomes = preg_split ('/$\R?^/m', $_POST['nome']);

// Gravando no banco de dados ! conectando com o localhost - mysql
$conexao = mysql_connect("localhost", "user", "senha"); //localhost é onde esta o banco de dados.
if (!$conexao){
	die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysql_error());
}

// Conectando com a tabela do banco de dados
$banco = mysql_select_db("seu_banco", $conexao); //nome do banco que deseja que seja inserida os dados cadastrais
if (!$banco){
	die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysql_error());
}

// Query que realiza a inserção dos dados no banco de dados na tabela indicada acima
foreach($nomes as $nome){
	$query = "INSERT INTO sua_tabela ( id, nome ) VALUES ('', '".$nome."')";
	$resultado = mysql_query($query);
}

// Mensagem que é escrita quando os dados são inseridos normalmente.
echo "Seu cadastro foi realizado com sucesso! Agradecemos a atenção.";

?>

Mas fiquei com uma dúvida, como ter certeza se o que vem do textarea é realmente o que você quer dividir na string?

 

Espero que ajude.

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.