Ir para conteúdo

POWERED BY:

Arquivado

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

phs22

[Resolvido] indice de array

Recommended Posts

Eu tenho uma dúvida sobre indice de array's, eh o seguinte e um form tenho vários campos com o mesmo nome. Ex.

 

ID Part Jogadores Gols

1 1 Fulano 1

2 2 Beltrano 0

 

O form está assim

<?php


	$seleciona = mysql_query("Select * from elenco where cp_ativo='S' order by Jogador asc");

	$nr_linhas = mysql_num_rows($seleciona);
?>
<form id="ficha_tecnica" name="ficha_tecnica" action="add_ficha_confirm" method="post">
<table id="ficha_tecnica" summary="Ficha Técnica 2010">
  	<thead>
   	<tr>
       	<th colspan="6">
           	Ficha Técnica 2010
           </th>
       </tr>
</thead>
   <tbody>
   	<tr>
       	<th style="width: 5%;">
           	ID
           </th>
       	<th style="width: 5%;">
           	Part.
           </th>
       	<th style="width: 30%;">
           	Jogador
           </th>
           <th>
           	Gols
           </th>
           <th>
           	Cartões
           </th>
           <th>
           	Faltas
           </th>
	</tr>
<?php 
$list = 1;

while($campo = mysql_fetch_array($seleciona)){
extract($campo);
$part = $list++;
?> 
	<tr>
       	<td scope="row">
           	<?php echo $id; ?>
               <input type="hidden" name="id[]" value="<?php echo $id; ?>" />
           </td>
           <td>    
           	<input name="part[]" type="checkbox" value="<?php echo $part++; ?>">
           </td>
       	<td style="font-size:18px">
           	<strong><?php echo $Jogador; ?></strong>
           </td>     
           <td>   
               <input name="gols[]" type="text" />
           </td>
           <td>
           	<input name="cp_ct_amarelo[]" type="checkbox" value="S">
               	<img src="imgs/site/ct_amarelo.png" alt="Amar." />
               <input name="cp_ct_azul[]" type="checkbox" value="S">
               	<img src="imgs/site/ct_azul.png" alt="Azul" />
               <input name="cp_ct_vermelho[]" type="checkbox" value="S">
               	<img src="imgs/site/ct_vermelho.png" alt="Verm." />
           </td>
           <td>
           	<input type="text" name="faltas[]" />
           </td>
	</tr>
<?php } ?>
       <tr>            
       	<th colspan="3">
           	Quadro
           </th>
           <th colspan="2">
           	Competição / Liga	
           </th>
           <th colspan="1">
           	Data
           </th>
       <tr>       
       	<td colspan="3">
			<input name="quadro" type="radio" value="1"> 1° Quadro
               <input name="quadro" type="radio" value="2"> 2° Quadro
               <input name="quadro" type="radio" value="3"> Seleção
           </td>     
           <td colspan="2">
           	<input name="cp_competicao" type="text" id="cp_competicao" style="width: 95%" />
           </td>
           <td colspan="1">
           	<input name="cp_data" type="text" id="cp_data" maxlength="10" style="width: 90%" />
           </td>
       </tr>
       </table>
       <table>
       <tr>
       	<th style="width: 50px">
           	Placar
           </th>
           <th>
           	Adversário
           </th>
           <th>
           	Jogadores
           </th>
           <th>
           	Gols
           </th>
           <th>
           	Faltas
           </th>
      </tr>
      <tr>
       	<td>
           	<input name="placar_adver" type="text" style="width: 20px" />
           </td>
           <td>
           	<input name="cp_adver" type="text" style="width: 90%" />
           </td>
           <td>
           	<textarea rows="1" name="cp_equipe_adver" style="width: 90%"></textarea>
           </td>
           <td>
           	<textarea rows="1" name="cp_gols_vs" style="width:90%"></textarea>
           </td>
           <td>
           	<textarea rows="1" name="cp_faltas" style="width: 90%"></textarea>
           </td>
       </tr>
      <tr>
           <th colspan="2">
           	Cartões Amarelos
           </th>
            <th colspan="2">
           	Cartões Azuis
           </th>
            <th colspan="2">
           	Cartões Vermelhos
           </th>
       </tr>
       <tr>
           <td colspan="2">
           	<textarea rows="1" name="ct_am_vs" style="width: 90%"></textarea>
           </td>
           <td colspan="2">
           	<textarea rows="1" name="ct_az_vs" style="width: 90%"></textarea>
           </td>
           <td colspan="2">
           	<textarea rows="1" name="ct_verm_vs" style="width: 90%"></textarea>
           </td>
       </tr>
       <tr>
       	<td colspan="6" style="height: 45px">
           	<input type="submit" name="gravar" value="Gravar"> || <input type="reset" value="Limpar">
           </td>
       </tr>
   </tbody>
</table>
</form>

 

O queria saber como eu faço para gravar no banco apenas os jogadores que tiverem o checkbox part selecionado, mas não eh isso que esta acontecendo. Está pegando sempre o primeiro registro, como eu faço para pegar o registro pelo indice do array.

 

Segue abaixo a página que recebe os dados do formulario

 

<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';

if($_POST) {
extract($_POST);

list ($dia, $mes, $ano) = split ('[/.-]', $cp_data);
$data_bd = $ano."-".$mes."-".$dia;


$cadastrados = '0';

$sql = "INSERT INTO dados_jogadores (ID_jogador, cp_quadro, gols, cp_data, cp_competicao, ct_am, ct_azul, ct_verm, cp_faltas) VALUES";

if($part!="") {
foreach($part as $chave => $partida) {

if($cp_ct_amarelo[$chave] == ""){$cp_ct_amarelo[$chave] = 'N';}
if($cp_ct_azul[$chave] == ""){$cp_ct_azul[$chave] = 'N';}
if($cp_ct_vermelho[$chave] == ""){$cp_ct_vermelho[$chave] = 'N';}


$sql .= " ('".$id[$chave]."', '".$quadro."', '".$gols[$chave]."', '".$data_bd."', '".$cp_competicao."', '".$cp_ct_amarelo[$chave]."', '".$cp_ct_azul[$chave]."', '".$cp_ct_vermelho[$chave]."', '".$faltas[$chave]."'),";

}
}

$sql = substr($sql,0,-1);

$grava = mysql_query($sql) or die (mysql_error());

if($grava)
echo $sql;
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo para debug:

print_r( $_POST['part'] );

 

exemplo para debug 2

 

$p   = 'part'; // nome do campo
if( isset( $_POST[$p] ) )
{
    foreach( $_POST[$p] as $k => $v )
    {
        echo '<br>';
        echo $k;
        echo ': ';
        echo $v;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado para o primeiro debug é Array ( [0] => 3 )

 

para o segundo é esse 0: 3

 

olha como eu estou recebendo os arrays do form

 

Array

(

[id] => Array

(

[0] => 2

[1] => 3

[2] => 1

)

 

[gols] => Array

(

[0] =>

[1] =>

[2] =>

)

 

[faltas] => Array

(

[0] =>

[1] =>

[2] =>

)

 

[part] => Array

(

[0] => 3

)

 

[cp_competicao] =>

[cp_data] =>

[placar_adver] =>

[cp_adver] =>

[cp_equipe_adver] =>

[cp_gols_vs] =>

[cp_faltas] =>

[ct_am_vs] =>

[ct_az_vs] =>

[ct_verm_vs] =>

[gravar] => Gravar

)

 

Tipo eu quero receber apenas os dados do array dos jogadores que eu selecionei part, mas eu estou recebendo de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a dúvida está em obter os dados do índice "part" ?

 

Isso mesmo, eu quero inserir no banco apenas a linha que o indice estiver selecionado.

 

Exemplo:

 

No form, aparecem todos os jogadores cadastrados no time e eu quero inserir os dados por data, tipo em data tal tais jogadores jogaram e fizeram tantos gols, faltas, etc. tudo individualmente. esses jogadores são selecionados por um checkbox, mas na parte que recebe os dados em vez de receber apenas os jogadores selecionados, vai todos da que constam na tabela, apenas o array part vai o que eu selecionei, tipo.

 

4 quatro jogadores cadastrados

 

ID

[0]=>1

[1]=>2

[2]=>3

[3]=>4

 

part

 

[0]=>4

 

Jogadores

 

Fulano

Beltrano

Tl

Etc

 

Gols

 

[0]=>

[1]=>

[2]=>

[3]=>1

 

Como você pode ver no exemplo acima, eu selecionei apenas o jogador 4 na lista, mas os indices ficam fora da ordem, e sempre pega o indice 0 dos outros arrays. Onde o correto seria pegar o indice 3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso é mais seguro atribuir índices nos nomes dos campos do forum html

 

ao invés de fazer

 

name="cat[]"
http://forum.imasters.com.br/public/style_emoticons/default/seta.gif

name="cat[1]"

faça o mesmo para os outros campos, cada qual com o mesmo indice relacionando com os outros campos

 

 

entendeu ?

 

Putz, que fácil, deu certo, vlw mesmo, ja tinha tentado fazer isso, mas estava incrementando errado.

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.