Ir para conteúdo

Arquivado

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

wiskley

Array em Php + mysql de varios campos

Recommended Posts

Primeiramente Boa tarde

Pessoaol estou com uns problemas com arrays que nao consigo resolver de jeito nenhum, ja procurei em varios foruns mas nada mas vamos ao problema:

Tenho um arquivo que se chama form.php que possui consigo um script em java que adiciona campos conforme a necessidade das pessoas

segue o script do form.php

<!DOCTYPE html>
<html>
<head>
<title> - jsFiddle demo</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript' src='aplicacao.js' charset='utf-8'></script>
</head>
<body>
  <a href="#" id="add">Adicionar</a>
<form action="form2.php" method="post">

<div id="boxFields">
 
</div>

<br />
<input type="submit" value="Enviar" />
</form>
  
</body>


</html>

como nao tem nada de interessante aqui vamos ao aplicacao.js

$(window).load(function(){
$(function(){
    
    //Cria uma função para Criar os campos Nome e Telefone
    function createDivFields(num){
        /*
         Criamos a variavel, e atribuimos os campos que serão criados;
         Utilizamos o colchetes nos nomes do campos para informar que os dados 
         em forma de array;
         Adiciona uma div, para que nela seja criado novos campos extras;
         E um link para para chamar o evento de adicionar;
        */
        var html  = '<div class="items" id="item_'+num+'">';
            html += '<label>Curso : <input type="text" name="curso[]" /></label>';
            html += '<label>Institui\u00e7\u00e3o: <input type="text" name="local[]" /></label>';
            html += '<label>Carga Hor\u00e1ria : <input type="text" name="ch[]" /></label>';
            /*html += '<a href="#" class="addTel" data-id="'+num+'">Add Telefone</a>';*/
            html += '<div class="item"></div>';
            html += '<div>';
            return html;
    }
    
    //Cria a função para adicionar os campos extras de telefone
    function createFieldTel(num){
        /*
         Repare que é informado que terá um parametro;
         Será por ele iremos identificar de quem pertence esses campos;
        */
        var tel  = '<label> Telefone :';
            tel += '<input type="text" name="telExtra['+num+'][]" />';
            tel += '</label><br />';
            return tel;
    }
    
    //cria uma função para conta os campos criados
    function getTotalItems(){
        //Contamos o total de campos, e diminuimos 1
        //Porque o array é iniciado seu indice com 0
        return $(".items").length;
    }
    
    //Adiciona os nome e telefone
    $("#add").click(function(){
        //Adicionado no final do elemento ( #boxFields) os campos
        var totalField = getTotalItems();
        $("#boxFields").append(createDivFields(totalField));
        return false;
    });
    
    //Adiciona os campos extras
    $(".addTel").live('click', function(){
        /*
            Utilizamos Live para atribui o evento click ao link addTel
            Isso porque como criamos dinamicamente esse elemento
            ele ainda não está no DOM, quando o jQuery vai executar
        */
        
        //recupera a posição
        var position = $(this).attr('data-id');
        
        //Voltamos um elemento (parent);
        //e depois buscamos .item, informando que precisa ser o primeiro encontrado
        //Adiciona no final do elemento (.item) os novos campos
        
        $(this).parent().children('.item:first').append(createFieldTel(position));
        
        return false;
    });

});
});//]]>  

Bom o problema começa agora no form2.php que recebe os dados eu nao consigo cadastrar no banco de dados ja tentei tudo e nao consegue abaixo o que esta mais ou menos funcional

<?php
include 'conexao.php';
$count = count($_POST['curso']);
for ($x = 0; $x < $count; $x++)
{
$curso = $_POST['curso'];
$local = $_POST['local'];
$ch = $_POST['ch'];
$teste = array (NULL, "$curso[$x]", "$local[$x]", "$ch[$x]");
$usuarios[] = array('curso' => "$teste[1]", 'local' => "$teste[2]", 'ch' => "$teste[3]");
// Para cada elemento de $usuários, faça:
foreach ($usuarios as $usuario) {
	$curso = $usuario['curso'];
	$local = $usuario['local'];
	$ch = $usuario['ch'];

$sql = ("INSERT INTO testar (`id`, curso, `local`, `ch`) VALUES (NULL, '$curso', '$local', '$ch')");}


echo "$nome - $email - $ch<p>";
// Executa a consulta
mysql_query($sql);}
// Pega o número de registros inseridos
$cadastrados = mysql_affected_rows();

echo 'Usuários cadastrados: ' . $cadastrados;
?>

ele nao cadastra nem a custa de reza brava ja tentei de tudo. A linha echo "$nome - $email - $ch<p>"; me mostra como eu quero porem quando penso que cadastrou e entro no BD nao tem um registro se quer, Alguem pode me dar uma força?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido pra quem quiser a solução aqui esta

<?php
include 'conexao.php';
$curso = $_POST['curso'];
$local = $_POST['local'];
$ch = $_POST['ch'];


$tamanho = count($curso)-1;
for ($f = 0; $f <= $tamanho; $f++)
{
$sql = mysql_query("INSERT INTO testar (curso,local,ch) VALUES ('".$curso[$f]."', '".$local[$f]."', '".$ch[$f]."')") or die ("<br><br><center>Problemas ao selecionar a base de dados do sistemas: " . mysql_error() . "</center>");


echo "$curso[$f] - $local[$f] - $ch[$f]<p>";}
$cadastrados = mysql_affected_rows();

echo 'Usuários cadastrados: ' . $cadastrados;
?>

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.