Ir para conteúdo

POWERED BY:

Arquivado

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

snowstormdelivery

Problemas ao mandar um input como array para o PHP

Recommended Posts

Galera, esse código foi construído para o usuário digitar nomes no começo, depois cada nome apareceria em cada echo do PHP.

O que está acontecendo é que, as únicas informações que estão indo para o PHP é do último input, e só vai 1 letra para cada cargo, ao invés, de uma palavra completa.

 

Como vocês resolvem esta situação?

 

 

Código HTML:

<!DOCTYPE html>
<html>
<head lang="PT-BR">
</head>
<body>
<form method="post" action="tabela.php">

    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="text" name="name" />
    <input type="submit" value="Sorteie"/>

</form>
</body>
</html>

Código PHP:

<?php

$pessoas = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;

    $pessoas[0];
    $pessoas[1];
    $pessoas[2];
    $pessoas[3];
    $pessoas[4];
    $pessoas[5];
    $pessoas[6];
    $pessoas[7];
    $pessoas[8];
    $pessoas[9];
    $pessoas[10];
    $pessoas[11];

$arr = (array)$pessoas;
shuffle($arr);

    echo "Juiz: " . $pessoas[0];
    echo "/Policial: " . $pessoas[1];
    echo "/Anjo: " . $pessoas[2] . "<br><br>";
    echo "Assassino: " . $pessoas[3];
    echo "/Aprendiz: " . $pessoas[4];
    echo "/Silence: " . $pessoas[5]."<br><br>";
    echo "Paralisador: " . $pessoas[6] . "<br>";
    echo "Paparazzi: " . $pessoas[7] . "<br>";
    echo "Bruxo: " . $pessoas[8] . "<br>";
    echo "Detetive: " . $pessoas[10] . "<br>";
    echo "Aldeao: " . $pessoas[11] . "<br>";
    echo "Espirito: " . $pessoas[9] . "<br><br>";
echo "Fada: " . $pessoas[9] . "<br>";
echo "Psicopata: " . $pessoas[8];
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao o certo nao seria fazer cada campo com id diferentes? (Se eu falar alguma porcaria malz sou novo.)

 

$pessoa1= $_POST['pessoa1'];
$pessoa2 = $_POST['pessoa2'];

echo "Juiz: $pessoa1"
echo "Policial: $pessoa2"

Estou em muitas duvidas sobre array quando responderem você vão me fazer um grande favor também. Minha duvida e se poderia usar msm array em campos. E se eu poderia usar o valor da array para comparar ou armazenar em outra variável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ryuunosuke

 

Eu tentei mudar os ids, mas não mudou nada.

Consegui resolver a parte que só mostrava letras, agora mostra palavras completas, porém, repetindo em todos cargos.

 

Olha só como ficou:

<?php

$pessoas[0] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[1] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[2] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[3] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[4] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[5] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[6] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[7] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[8] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[9] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[10] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;
$pessoas[11] = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;

$arr = (array)$pessoas[0];
$arr = (array)$pessoas[1];
$arr = (array)$pessoas[2];
$arr = (array)$pessoas[3];
$arr = (array)$pessoas[4];
$arr = (array)$pessoas[5];
$arr = (array)$pessoas[6];
$arr = (array)$pessoas[7];
$arr = (array)$pessoas[8];
$arr = (array)$pessoas[9];
$arr = (array)$pessoas[10];
$arr = (array)$pessoas[11];
shuffle($arr);

    echo "Juiz: " . $pessoas[0];
    echo "/Policial: " . $pessoas[1];
    echo "/Anjo: " . $pessoas[2] . "<br><br>";
    echo "Assassino: " . $pessoas[3];
    echo "/Aprendiz: " . $pessoas[4];
    echo "/Silence: " . $pessoas[5]."<br><br>";
    echo "Paralisador: " . $pessoas[6] . "<br>";
    echo "Paparazzi: " . $pessoas[7] . "<br>";
    echo "Bruxo: " . $pessoas[8] . "<br>";
    echo "Detetive: " . $pessoas[10] . "<br>";
    echo "Aldeao: " . $pessoas[11] . "<br>";
    echo "Espirito: " . $pessoas[9] . "<br><br>";
echo "Fada: " . $pessoas[9] . "<br>";
echo "Psicopata: " . $pessoas[8];
?>

Tem alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe necessidade desse tanto de campo camarada. Você precisa adicionar no objeto do formulário, no input, o nome do campo como array, da maneira passada acima pelo colega.

 

Depois você só recupera com o laço de repetição, pode ser o

for(){}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu usei o laço de repetição e diminuiu os campos do PHP, porém, quando coloco [] nos input HTML não tenho retorno de nenhuma informação, nem repetidas.

O que eu faço?

 

Como ficou o código PHP:

<?php
for ($i = 0; $i <= 11; $i++) {
    $pessoas[] = isset($_POST['name']) ? $_POST['name'] : null;
}

$arr = (array)$pessoas[0];
$arr = (array)$pessoas[1];
$arr = (array)$pessoas[2];
$arr = (array)$pessoas[3];
$arr = (array)$pessoas[4];
$arr = (array)$pessoas[5];
$arr = (array)$pessoas[6];
$arr = (array)$pessoas[7];
$arr = (array)$pessoas[8];
$arr = (array)$pessoas[9];
$arr = (array)$pessoas[10];
$arr = (array)$pessoas[11];

shuffle($arr);

    echo "Juiz: " . $pessoas[0];
    echo "/Policial: " . $pessoas[1];
    echo "/Anjo: " . $pessoas[2] . "<br><br>";
    echo "Assassino: " . $pessoas[3];
    echo "/Aprendiz: " . $pessoas[4];
    echo "/Silence: " . $pessoas[5]."<br><br>";
    echo "Paralisador: " . $pessoas[6] . "<br>";
    echo "Paparazzi: " . $pessoas[7] . "<br>";
    echo "Bruxo: " . $pessoas[8] . "<br>";
    echo "Detetive: " . $pessoas[10] . "<br>";
    echo "Aldeao: " . $pessoas[11] . "<br>";
    echo "Espirito: " . $pessoas[9] . "<br><br>";
echo "Fada: " . $pessoas[9] . "<br>";
echo "Psicopata: " . $pessoas[8];
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce ja tinha feito isso

$pessoas = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;

nao precisa do for

usa:

$pessoas[0];

$pessoas[1];

$pessoas[2];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Negativo. Precisa-se do for. Imagine se ele precisasse adicionar mais 100 campos. iria ficar digitando um a um ?... vamos simplificar.

 

funciona assim Joao_Lucas:

<!DOCTYPE html>
<html>
<head lang="PT-BR">
</head>
<body>
<form method="post" action="tabela.php">

<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="text" name="nome[]" />
<input type="submit" value="Sorteie"/>

</form>
</body>
</html>

No php:

<?php 
$nomes = isset($_POST['nome']) ? $_POST['nome'] : false;

for($i=0; $i <= count($nome); $i++)
{
       print $nomes[$i].' <br> ';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alaerte Gabriel

 

eu me referi ao for para atribuição

é mais simples

$pessoas = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;

 

ele tinha feito assim

for ($i = 0; $i <= 11; $i++) {
$pessoas[] = isset($_POST['name']) ? $_POST['name'] : null;
}

 

mas para o uso posterior sim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, eu não entendi como uso essa parte do PHP. Já tentei de várias formas, nenhuma com sucesso.

 

 

Gente, já que ta passando só o conteúdo de um input, teria como eu estender o tamanho desse input, fazer com que ao digitar as 12 palavras só nele, ele interprete que que cada linha corresponde a uma palavra??

 

Eu usaria cols e row nos input, certo?

 

Confiram como eu estou falando, nesse site: http://sorteiospt.com/list/

 

Acham mais simples? Se sim, me falem como.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você executar exatamente como eu fiz, e tentar pelo menos "entender" o código aí você aprende. Do contrário fica difícil. Sua dúvida é uma dúvida primária, basta você estudar um pouco e saberá solucionar seu problema; as soluções já foram passadas e cabe a você agora estudá-las e entendê-las.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, eu realmente não entendi. Tudo que você disse desde o começo, eu não sabia, fui estudando pra tentar resolver. Mas, esse último foi cabuloso.

Enfim, encontrei um colega que pode me orientar, então, resolvemos o problema.

Agradeço a vocês que me ajudaram! Agora em diante, vou trabalhar em projetos mais leve pra eu que, mal sei programar (kkk). VALEEEEEEEEEEEEEEEEEEEEEEU

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce ja tinha feito isso

$pessoas = isset( $_POST[ 'name' ] ) ? $_POST[ 'name' ] : null ;

nao precisa do for

usa:

$pessoas[0];

$pessoas[1];

$pessoas[2];

 

O problema poderia ter sido resolvido aqui, mas eu esqueci de remover um caractere no código e o for não foi realmente necessário.

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.