Inserir dados no Mysql com PHP utilizando fomulário html

22/12/2016

0

Sou iniciante em programação e preciso de ajuda e agradeço desde já a colaboração,
Fiz um fomulário HTML para inserir dados em um banco de dados mysql, através de um arquivo PHP,
com o objetivo de inserir o valor1 e o valor2 em duas colunas da tabela do banco de dados e em 7 linhas
ao mesmo tempo, conforme a ordem do formulário html, já criei a tabela do banco de dados, mas estou com dificuldade
de criar o código do if para o meu objetivo, da erro de sintase no if não estou conseguindo acertar a lógica para declarar
o valor1 e valor2, e a lógica da contagem e repetição até que seja alcançado o objetivo de inserir os valores das duas
colunas e as sete linhas???
Também estou em dúvida se preciso a variavel nome? e se a query está correta para atingir o meu objetivo???

arquivo con.php
<?php 

$connect = mysql_connect("......mysql.uhserver.com", "user", "root") or die ("Sem conexão com o servidor");
$select = mysql_select_db("bd",$connect) or die("Sem acesso ao DB, Entre em contato com o Administrador");
$result = mysql_query("SELECT * FROM `table`");

$valor1=$_POST['valor1'];
$valor2=$_POST['valor2'];
$nome=$_POST["nome"]; \\\\ estou em dúvida se preciso desta variável???//

if(($valor1)($valor2) <> "") {  \\\\Neste bloco if dá erro de síntese //
$cont = count($valor1,$valor2); 
for($i=0; $i<$cont; $i++){ 
if($valor1,$valor2[$i] == "") continue; 

$sql=mysql_query("INSERT INTO table (nome,valor1,valor2) VALUES ('$nome[$i]''$valor1[$i]','$valor2[$i]')");  
} 
}
{
echo  "Resultado atualizado com sucesso!";
}

echo "Não foi possível Alterar o resultado, tente novamente.";
// Exibe dados sobre o erro:
echo "Dados sobre o erro:" . mysql_error();
       	 	   
?>


Código do Form:

	
<div id="formtabresulum">	
<form method="post" action="con.php" id="formtable" name="formtable" >
<input type="hidden" name="valor[]">	
    <div class="col-md-2 col-sm-4 col-xs-6">
      <div class="panel quadro-jogo">
        <div class="panel-heading text-center">
                </div>
				
                  <table class="tableum">
				<caption>Titulo</caption>			 
  <thead>
    <tr>
	  <th class="col-md-3">Coluna 1</th>
      <th class="col-md-12">Coluna 2</th>
      <th class="col-md-5 text-center">Coluna 3</th>
    </tr>
  </thead>  
  <tbody>
    <tr>
      <td>
        <span class="pull-left"><strong>1°</strong></span>
		</td>
      <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado1"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo1" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>2°</strong></span>
		</td>
      <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado2"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo2" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>3°</strong></span>
		 </td>
     <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado3"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo3" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>4°</strong></span>
		 </td>
      <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado4"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo4" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>5°</strong></span>
        </td>
        <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado5"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo5" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>6°</strong></span>
		</td>
       <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado6"  size="7"></span> </td>
      <td class="text-center"><span><input type="text" name="valor2[]" value="grupo6" size="5"></span></td>
    </tr>
    <tr>
      <td>
        <span class="pull-left"><strong>7°</strong></span>
        </td>
      <td class="text-center"> <span><input type="text" name="valor1[]" value="resultado7"  size="7"></span> </td>
      <td> <input type="submit"  name="submit" value="ALTERAR" class="pull-left"></td>	  
    </tr>
  </tbody>
</table>      </div>
    </div>
	</div>
	
</form>


OBS: não inclui o css
Lucy Weber

Lucy Weber

Responder

Posts

22/12/2016

Wilson Neto

Bom dia, Lucy, tudo bem?

Sobre a variável $nome, você utiliza ele no INSERT, se a sua regra não permite que o campo 'Nome' seja NULL então você vai precisar dela sim. E no form que você postou, você não passa o nome então vale a pena fazer um tratamento com o isset() por exemplo.

Algo assim:

if(isset($_POST['nome']))


ou mesmo com o empty()
if(!empty($_POST['nome'])


Sobre o IF, a sintaxe correta é a seguinte:

if(condicao)
  //acao


Utilizando o seu raciocinio ficaria:

//$valor e $valor2 devem ser diferentes de "" (considerando o tipo)
if($valor !== "" && $valor2 !== "")
  //codigo



Ou poderia fazer também


if( !empty($valor) && !empty($valor2))
  //codigo


Vale a pena dar uma conferida na documentação sobre a sintaxe do Controle de estruturas

[url:descricao=Empty()]http://php.net/manual/pt_BR/function.empty.php[/url]
[url:descricao=Isset()]http://php.net/manual/pt_BR/function.isset.php[/url]

Sobre a verificação do count() vale a pena dar uma verificada na documentação também [url:descricao=Count()]http://php.net/manual/en/function.count.php[/url]

Nesse form você teria um erro de offset, pois o 7 resultado, não tem um grupo, se fosse seguir utilizando o indice do for você teria que fazer esse tratamento, logo você poderia comparar a quantidade de campo dos dois valores, caso fossem diferentes nem fariam a inserção - ou simplesmente tratar a existencia do indice dentro do looping com o isset() ou empty().
Você poderia usar também o foreach e ficaria assim:

    foreach ($valor1 AS $index => $valor):
       //Verifico se esse indice existe para evitar erro de offeset
        if(!empty($valor2[$index]))
            echo $valor. ' - '. $valor2[$index];
    endforeach;



Dessa forma você não precisaria fazer um Count(), já que ele percorre o array.

Vale a pena a dar uma lida na documentação sobre o Foreach

E sobre o mysql_, foi depreciado a partir da versão 5.5 do PHP, talvez seja interessante usar o MySQLi ou PDO (só para informação. :) )

Espero que tenha ajudado.
Responder

22/12/2016

Wilson Neto

E no INSERT falta uma virgula após o $nome[$i].

INSERT INTO table (nome,valor1,valor2) VALUES ('$nome[$i]''$valor1[$i]','$valor2[$i]')

INSERT INTO table (nome,valor1,valor2) VALUES ('$nome[$i]','$valor1[$i]','$valor2[$i]')



:D
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar