2012-01-28 21 views
-3

が、私は彼らが私が更新するために、BDからのIDを取得する必要がありますアレイとフォームから値を取得しようとしています動作しますが、それは、多分uは私のアイデアを与える作業イマイチあなたは理解するかもしれません。ご協力いただきありがとうございます!PHPループは文句を言わない

<?php 

include "conecta.php"; 
include "verifica.php"; 



$sql1 = "SELECT idcategorias FROM categorias"; 
$res = mysql_query($sql1); 
while ($row=mysql_fetch_array($res)){ 
$gosma = $row["idcategorias"]; 
} 

foreach ($_POST['ordem'] as $key => $value){ 


$sql = "UPDATE categorias SET ordem='$value' WHERE idcategorias='$gosma'"; 
$res = mysql_query($sql) or die ("Erro ao alterar") . mysql.error(); 
} 

if($res) { 
echo("<script>alert('DADOS ALTERADOS COM SUCESSO ');</script>"); 
echo "<meta HTTP-EQUIV='refresh' CONTENT='1;URL=lista_categorias.php'>"; 

} 

else{ 
echo("<script>alert('ORDEM INALTERADA, TENTE NOVAMENTE');</script>"); 
echo "<meta HTTP-EQUIV='refresh' CONTENT='1;URL=altera_ordem_categoria.php'>"; 
} 

?> 

、フォームはあなたの中のサイクルが$rowたびに上書きされHERE

<form action="altera_ordem_cat.php" method="post"> 
<?php 
include "conecta.php"; 
include "verifica.php"; 
$sql = "SELECT * FROM categorias ORDER BY ordem"; 
$res = mysql_query($sql) or die (mysql_error()); 
while ($linha=mysql_fetch_array($res)) { 
$linha[2] = $real; 
?> 

<tr> 
<td><?=$linha['2']; echo "&#32;<input name='ordem[]' type='text' id='textfield' size='2' maxlength='2' value=''/>" ?></td> 
<td><?=$linha['1']; ?></td> 
</tr> 

<?php }?> 


    </table> 
    <br/> 
    <table align="center"> 
    <tr> 
<td> 
<input type="submit" name="alterar" type="button" value="Alterar"> 
</td> 
</tr> 
    </table> 
    </form> 
+3

が何であるかを明確にしてください 違う。あなたはどんな具体的なエラーを出していますか? – cspray

+1

あなたはここで何をしようとしているのですか?あなたは何をすると思いましたか?代わりに何をしましたか?何を試しましたか? – cha0site

+1

あなたは*何をしようとしていますか?あなたのコードには多くの問題があります。 – Czechnology

答えて

1

です。これをするつもりはありませんか?

$gosma = array(); 
while ($row=mysql_fetch_array($res)) { 
    $gosma[] = $row["idcategorias"]; 
} 
あなたは常にクエリに挿入する前に脱出する必要があり

:あなたが死ぬ関数内mysql_errorを入れなければならない(と名にドットを使用していない)

$sql = "UPDATE categorias SET ordem='".mysql_real_escape_string($value)."' WHERE idcategorias='".mysql_real_escape_string($gosma)."'"; 

$res = mysql_query($sql) or die ("Erro ao alterar: ".mysql_error()); 
あなたはこのサイクルで行うには、それをしようとしているされて何

foreach ($_POST['ordem'] as $key => $value) { 
    $sql = "UPDATE categorias SET ordem='$value' WHERE idcategorias='$gosma'"; 
    $res = mysql_query($sql) or die ("Erro ao alterar") . mysql.error(); 
} 

このようなことはしませんか?

foreach ($_POST['ordem'] as $key => $value) { 
    $sql = "UPDATE categorias SET ordem='".mysql_real_escape_string($value)."' WHERE idcategorias='".mysql_real_escape_string($key)."'"; 
    $res = mysql_query($sql) or die ("Erro ao alterar: ".mysql_error()); 
} 


EDIT

<form action="altera_ordem_cat.php" method="post"> 
    <table> 
<?php 
include "conecta.php"; 
include "verifica.php"; 
$sql = "SELECT idcategorias, ordem FROM categorias ORDER BY ordem"; 
$res = mysql_query($sql) or die (mysql_error()); 

while ($linha = mysql_fetch_array($res)) { 
?> 
    <tr> 
    <td><input name='ordem[<?php echo $linha[0]; ?>]' type='text' id='textfield' size='2' maxlength='2' value='<?php echo $linha[1]; ?>'/></td> 
    <td></td> 
</tr> 
<?php 
} 
?> 
    </table> 
<!-- ........ --> 

、その後:

<?php 

include "conecta.php"; 
include "verifica.php"; 

foreach ($_POST['ordem'] as $key => $value) { 
    $sql = "UPDATE categorias SET ordem='".mysql_real_escape_string($value)."' ". 
     "WHERE idcategorias='".mysql_real_escape_string($key)."'"; 
    $res = mysql_query($sql) or die ("Erro ao alterar: ".mysql_error()); 
} 
+0

Czechnology、はい、しかし、データベースのuptade後に何とかしたら、$ rowは値として0になるので、$ gosmaに$値を代入することはできません。 dbを更新した後に閉じるとループしません。 –

+0

@レナート・フェレイラ、あなたのフォームも良くないと思います。このようなフィールドを記述する必要があります。 ' 'idcategorias'があり、1が' ordem'に対応します)。その後、私の答えに投稿したサイクルを使用することができます。 – Czechnology

+0

この最後の例はうまくいくはずですが、フォームを提出した後にdbと戻り配列を更新しないでください –

0
$gosma[] = $row["idcategorias"]; instead of $gosma = $row["idcategorias"]; 
関連する問題