PHP Loop не будет работать - PullRequest
0 голосов
/ 28 января 2012

Я пытаюсь получить значения из формы с массивами, которые мне нужны, чтобы получить идентификаторы из bd для обновления, но это не работает, возможно, вы дадите мне идею, я опубликую код, чтобы вы могли понять,Заранее благодарю за помощь!

<?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'>";
}

?>

И ФОРМА ЗДЕСЬ

<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>  

Ответы [ 2 ]

1 голос
/ 28 января 2012

Ваш цикл while перезаписывает $row каждый раз.Разве вы не хотите этого делать?

$gosma = array();
while ($row=mysql_fetch_array($res)) {
    $gosma[] = $row["idcategorias"];
}

Перед вставкой в ​​запрос вы должны всегда избегать:

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

Вы должны поместить mysql_error в функцию die (и нене используйте точку в имени)

$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());
}


РЕДАКТИРОВАТЬ :

<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 голосов
/ 08 октября 2013
$gosma[] = $row["idcategorias"]; instead of $gosma = $row["idcategorias"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...