View Full Version : É Possivel Editar Todos os Campos duma tabela ao mesmo tempo ?


_NoDe_
05-06-2007, 14:26
A ideia é o seguinte:

Tenho uma tabela (Tinteiros) com os campos :
-Marca
-RefTinteiro
-RefImpressora
-Preço
-Quantidade

Todos os campos estão preenchidos excepto o campo quantidade, o objectivo seria apresentar a tabela toda ( mesmo que fosse 100 registos ) , e no campo quantidade fosse permitido inserir a quantidade desejada , e carregando num botão actualizar (por exemplo) ele adiciona-se a tabela os valores de quantidade , mas em vez de ser um a um , seria aonde eu muda-se o valor de 0 para diferente 0 ele actualiza-se todos os tinteiros.


É possível ?

Se for possível não estou a ver como fazer , todas as ajudas serão bem vindas .


Abraços Malta

SoundSurfer
05-06-2007, 14:46
GridView Examples for ASP.NET 2.0: Editing the Underlying Data in a GridView (http://msdn2.microsoft.com/en-us/library/ms972948.aspx)

Já é um começo.

Mavors
05-06-2007, 18:46
Estás a fazer isso em que linguagem?

Asp, php, jsp?

Mas sim é possivel, é só fazeres um ciclo para veres se o valor do campo é diferente do inicial e se sim, mandar na query para a base de dados. Acho que em asp é possivel fazer isso sem meteres uma linha de código sequer, aquilo já tem os métodos de update em cada row. Não me recordo é se faz post por row ou só no final...

mascker
06-06-2007, 04:00
Estás a falar disto

UPDATE tabela SET quantidade='QUANTIDADE' WHERE quantidade='0'


Isto vai actualizar TODOS os valores que estão a zero para o valor que tu meteres

Ou tu queres meter valores diferentes para cada tinteiro mas actualizar tudo de uma só vez???

Se for assim crias um array e depois actualizas na base de dados, mas se te poderes explicar melhor...

Saudações

_NoDe_
07-06-2007, 14:02
é exactamente isso , criar um array com os valores das quantidades e depois na pagina seguinte enfiar os valores todos na base de dados.


<form action="teste2.php" method="get">
<?php


$dbhost = 'localhost';
$dbuser = 'root';
$i=0;

$conn = mysql_connect($dbhost, $dbuser) or die ('Error connecting to mysql');


$sql= "select * from tinteiros";
$resultado = mysql_db_query ("ecorecolha",$sql);

if ($resultado) {
print("<table width=\"90%\" align=center border=2>");
print("<tr><td width=\"40$\" align=center bgcolor=\"FFFF00\"> Ref Tinteiro </td><td width=\"20%\" align=center bgcolor=\"FFFF00\"> Marca </td></tr>");

while ($registo=mysql_fetch_array($resultado)){

$ref=$registo["Cotação"];
$marca=$registo["Marca"];



print ("<tr><td align=center> $ref </td><td align=center> $marca </td><td>");
?>
<input type="text" name="<?$quantidade[i]?>"></input>
<?
print ("</td></tr>");
$i=i+1;
}
echo ("</table>");


}

?>
<input type=submit value="Submit">
</form>

Fiz isto mas na resulta ( sou novato nisto ), alguem pode me ajudar ? cumpts

p3dro
07-06-2007, 16:03
supondo que tens uma tabela com esta estrutura:
- tinteiros(id, Cotação, Marca, quantidade);

no ciclo onde constróis o campo da quantidade, adicionas um campo (por ex. hidden) com o id do registo dakela quantidade, os 2 valores são passados por array (quantidade[] e id[]) , depois do post é só percorrer os 2 arrays e ir actualizando os valores mediante o id ...

juntando o código todo no mesmo ficheiro, vê se isto te ajuda e tenta adaptar às tuas necessidades


<?php
function DoConnection(){
$dbhost = 'localhost';
$dbuser = 'root';
$dbpwd = "";
$dbname="ecorecolha";

$conn = mysql_connect($dbhost, $dbuser, $dbpwd);
mysql_select_db($dbname,$conn) or die("Error connecting to mysql");
return $conn;
}

function DoForm(){
$conn=DoConnection();
$sql= "select * from tinteiros";
$resultado = mysql_query ($sql,$conn);

if ($resultado) {
$str="<form method=\"post\">";
$str.="<table width=\"90%\" align=center border=2>";
$str.="
<tr>
<td width=\"40%\" align=center bgcolor=\"FFFF00\"> Ref Tinteiro </td>
<td width=\"30%\" align=center bgcolor=\"FFFF00\"> Marca </td>
<td width=\"30%\" align=center bgcolor=\"FFFF00\"> Quantidade </td>
</tr>";
while ($registo=mysql_fetch_array($resultado)){
$ref=$registo["Cotação"];
$marca=$registo["Marca"];
$quantidade=$registo["quantidade"];
$id=$registo["id"];

$str.="
<tr><td align=center> $ref </td><td align=center> $marca </td>
<td>
<input type=\"text\" name=\"quantidade[]\" value=\"$quantidade\">
<input type=\"hidden\" name=\"id[]\" value=\"$id\">
</td>
</tr>";
}
$str.="<tr><td colspan=\"3\"><input type=\"submit\" value=\"Submit\" name=\"submit\"></td></tr>";
$str.="</table></form>";
}
mysql_close($conn);
return $str;
}

function UpdateData($quantidades,$ids){
$count=sizeof($ids); //contagem dos campos
$conn=DoConnection();

for ($i=0;$i<$count;$i++){ //actualizar campos
//deverá ser feito o tratamento do sql, devido ao sql injection ....
$sql="update tinteiros set quantidade='$quantidades[$i]' where id='$ids[$i]'";
mysql_query($sql) or die("error updating");
}

mysql_close($conn);
echo "informação actualizada com sucesso<br>";
}

?>

<html>
<body>
<?php
$submit=$_POST["submit"];
if(!$submit){ //página chamada pela 1ªx
echo DoForm();
}
else{ //actualizar valores
$quantidades=$_POST["quantidade"];
$ids=$_POST["id"];
UpdateData($quantidades,$ids);
echo DoForm();
}
?>
</body>
</html>

_NoDe_
08-06-2007, 15:48
Sim isso serviu Lindamente , era mesmo isso que precisava, obrigado.

Tenho outra questão agora , precisava de guardar um historico das tabelas ,ou seja, tenho clientes e cada cliente tem de me preecher uma tabela destas , ( mensalmente cada cliente têm de me fazer uma tabela destas ), como poderia eu guardar a tabela , ela teria de estar identificada pelo cliente que a fez e pela sua data.

A ideia ao inicio seria fazer uma tabela genero documentos , com os campos utilizador , data , e ID de tabela, esse campo ligaria a outra tabela com os tinteiros , mas iria ficar os com os tinteiros repetidos para todos os campos da tabela documentos, e não domino o suficiente para programar isto .

Alguma ajuda ?

Tenho um software chamado phprunner que ajuda mas neste aspecto na me ajuda.