Если сообщение отправить заявление не проходит для каждого цикла - PullRequest
0 голосов
/ 04 февраля 2012

Заранее спасибо, вот что происходит:

if(isset($_POST['submit']))
{
$var = $_GET['var'];

foreach((array)$_POST['content'] as $area => $contents)
    {

        $result = 'UPDATE $table SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";';
        mysql_query ($result);
    }


$query = 'UPDATE $table SET '.
            'title = "'.mysql_real_escape_string(stripslashes($_POST["title"])).'", '.
            'template = "'.mysql_real_escape_string($_POST["templateid"]).'", '.
            'description = "'.mysql_real_escape_string(stripslashes($_POST["description"])).'", '.
            'keywords = "'.mysql_real_escape_string(stripslashes($_POST["keywords"])).'" '.
            ' WHERE var = "'.$_GET['var'].'";';

mysql_query ($query);// or die(mysql_error());

}

Я не могу заставить оператор if выйти за пределы цикла.Он не будет обновлять базу данных с помощью оператора $ query mysql.Он просто обновляет таблицу для всего внутри каждого цикла и затем существует.Нужно ли делать If while или if if?И я попытался найти условные выражения php, есть ли такая вещь, как и заявления?Такие как: Если пост отправить сделать это И это?По сути, это то, что я пытаюсь сделать, если отправлять сообщения, делать для каждого цикла И делать $ query.

Дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 3 ]

1 голос
/ 04 февраля 2012

Ну, а $_POST['content'] определен вообще?В таких случаях вы можете начать отладку с print_r($_POST), чтобы увидеть все значения, которые вы получите.

Что вы, вероятно, намеревались сделать:

foreach ($_POST as $key => $val)

Edit:
И вы должны действительно избежать этого $_GET['var'], а также $area в цикле !!!Escape ВСЕ пользовательский ввод, всегда !!!

0 голосов
/ 04 февраля 2012

попробуйте добавить * ini_set ('display_errors', 1); * добавьте запуск скрипта, чтобы обеспечить вывод ошибок. И используйте * var_dump (mysql_error ()); * для отображения ошибки mysql второго запроса.

И небольшое предложение. сделать переключение на $ area, чтобы убедиться, что переданы правильные поля:

switch ($area) {
  case 'field1': $area='field1'; break;
  case 'field2': $area='field2'; break;
  default: echo 'No valid field'; continue; break;
}

удачи!

0 голосов
/ 04 февраля 2012

Имя таблицы не будет отображаться.Также добавьте что-нибудь, чтобы показать сообщение об ошибке mysql, чтобы помочь отладке:

$result = 'UPDATE '.$table.' SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";';
mysql_query ($result) or die(mysql_error());
...