<?php
require_once ('head.php');
require_once ('connectdb.php');
require_once('startsession.php');
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die ('сбой подключения');
$id = $_GET['id'];
mysqli_query($dbc, "SET NAMES utf8");
$query_polls = mysqli_query ($dbc, "SELECT * FROM polls WHERE poll_id='$id'");
$query = mysqli_query ($dbc, "SELECT * FROM polls_answer WHERE poll_id='$id'");
$row_polls = mysqli_fetch_array ($query_polls);
$count = $row_polls['poll_count'];
$val=array();
$val[$i] = $_POST ['answer'][$i];
for($i=0; $i < $count; $i++){
$val[$i]="";
if (isset ($_POST['submit'])) {
$val[$i] = mysqli_real_escape_string($dbc, trim ($_POST['answer'][$i]));
$query = "UPDATE polls_answer SET answer = '$val[$i]' WHERE poll_id='$id'";
mysqli_query ($dbc, $query) or die ('ошибка записи');
$home_url = 'votes.php';
header ('Location: ' . $home_url);
}
}
?>
<?php require_once ('html.php');?>
<a href="edit_poll_step1.php?id=<?php echo $id;?>">К шагу 1</a>
<h3>Редактирование опроса. Шаг 2.</h3>
<center><form method="POST" action="">
<fieldset style="width:500px;">
<legend>Шаг 2</legend>
<table id="edit_table">
<tr><td>Название голосования:</td>
<td><?php echo $row_polls['poll_name']?></td></tr>
<tr><td>Вопрос:</td>
<td><?php echo $row_polls['poll_quest']; ?></td></tr>
<tr><td> </td></tr>
<tr><td>Варианты ответов:</td><td>Количество голосов:</td></tr>
<?php
$i=-1;
while ($row = mysqli_fetch_array($query)) {
$i++;
echo "<tr><td><input type=text size=30 name=answer[$i] value=$row[answer]></td><td><input type=text size=2 name=votes[$i] value=$row[votes]></td></tr>";
}
?>
</table><br>
<center><input type="submit" name="submit" value="Сохранить"/></center>
</fieldset> </form> </center>
Спустя 29 минут, 41 секунда (24.09.2011 - 19:54) inpost написал(а):
plumli
Пунктом №1 займись стилем кодирования. Потому что в такой каше фиг разберёшься, что к чему.
Вот начало http://irbis-team.com/15/1/8 далее гугл.
К тому же не совсем понятно, что не так у тебя.
Вот у тебя основная ошибка:
$query = "UPDATE polls_answer SET answer = '$val[$i]'";
Читаем: "ОБНОВИТЬ таблицу ПРОПИСАТЬ параметры", для какой строки? Тут надо WHERE прописывать, и указывать какую строку мы обновляем, а не все вместе.
Пунктом №1 займись стилем кодирования. Потому что в такой каше фиг разберёшься, что к чему.
Вот начало http://irbis-team.com/15/1/8 далее гугл.
К тому же не совсем понятно, что не так у тебя.
Вот у тебя основная ошибка:
$query = "UPDATE polls_answer SET answer = '$val[$i]'";
Читаем: "ОБНОВИТЬ таблицу ПРОПИСАТЬ параметры", для какой строки? Тут надо WHERE прописывать, и указывать какую строку мы обновляем, а не все вместе.
Спустя 1 час, 18 минут, 55 секунд (24.09.2011 - 21:13) plumli написал(а):
не спорю что код кривой, отредактировал строку:
так же редактируется все записи с одним poll_id из последнего inputa
что бы было понятнее о чем я:
вводим данные:

получаем после редактирования:

$query = "UPDATE polls_answer SET answer = '$val[$i]' WHERE poll_id='$id'";
так же редактируется все записи с одним poll_id из последнего inputa
что бы было понятнее о чем я:
вводим данные:

получаем после редактирования:

Спустя 20 минут, 33 секунды (24.09.2011 - 21:34) Sanchopansa написал(а):
echo "<tr><td><input type=text size=30 name=answer[$i] value=$row[answer]></td>
<td><input type=text size=2 name=votes[$i] value=$row[votes]></td></tr>";
Вот тут у тебя грабли... потому как имена полей получаются одинаковые скорее всего и поэтому берется во внимание только последний INPUT
попробуй записать так и всегда используй такой формат!
echo '<tr>
<td>
<input type="text" size="30" name="answer['.$i.']" value="'.$row['answer'].'" />
</td>
<td>
<input type="text" size="2" name="votes['.$i.']" value="'.$row['votes'].'" />
</td>
</tr>';
Спустя 1 час, 18 минут, 32 секунды (24.09.2011 - 22:52) plumli написал(а):
к сожалению не помогло

Спустя 8 минут, 27 секунд (24.09.2011 - 23:01) inpost написал(а):
plumli
Покажи структуру БД, этой таблицы.
Покажи структуру БД, этой таблицы.
Спустя 7 минут, 30 секунд (24.09.2011 - 23:08) Sanchopansa написал(а):
$val[$i] = $_POST ['answer'][$i];
for($i=0; $i < $count; $i++){
А где ты тут нашел переменную $i до цикла?
И тут попробуй переписать так:
if (isset ($_POST['submit'])) {
for($i=0; $i < count($_POST['answer']); $i++){
$query = "UPDATE polls_answer SET answer = '".mysqli_real_escape_string($dbc, trim ($_POST['answer'][$i]))."' WHERE poll_id='$id'";
mysqli_query ($dbc, $query) or die ('ошибка записи');
}
$home_url = 'votes.php';
header ('Location: ' . $home_url);
}
Спустя 7 минут, 12 секунд (24.09.2011 - 23:15) Sanchopansa написал(а):
Короче вот так попробуй скрипт
<?php
require_once ('head.php');
require_once ('connectdb.php');
require_once('startsession.php');
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die ('сбой подключения');
$id = (int)$_GET['id'];
mysqli_query($dbc, "SET NAMES utf8");
$query_polls = mysqli_query ($dbc, "SELECT * FROM polls WHERE poll_id='$id'");
$row_polls = mysqli_fetch_array ($query_polls);
if (isset ($_POST['submit'])) {
for($i=0; $i < count($_POST['answer']); $i++){
$query = "UPDATE polls_answer SET answer = '".mysqli_real_escape_string($dbc, trim ($_POST['answer'][$i]))."' WHERE poll_id='$id'";
mysqli_query ($dbc, $query) or die ('ошибка записи');
}
$home_url = 'votes.php';
header ('Location: ' . $home_url);
}
?>
<?php require_once ('html.php');?>
<a href="edit_poll_step1.php?id=<?php echo $id;?>">К шагу 1</a>
<h3>Редактирование опроса. Шаг 2.</h3>
<center><form method="POST" action="">
<fieldset style="width:500px;">
<legend>Шаг 2</legend>
<table id="edit_table">
<tr><td>Название голосования:</td>
<td><?php echo $row_polls['poll_name']?></td></tr>
<tr><td>Вопрос:</td>
<td><?php echo $row_polls['poll_quest']; ?></td></tr>
<tr><td> </td></tr>
<tr><td>Варианты ответов:</td><td>Количество голосов:</td></tr>
<?php
$query = mysqli_query ($dbc, "SELECT * FROM polls_answer WHERE poll_id='$id'");
while ($row = mysqli_fetch_array($query)) {
echo '<tr><td><input type="text" size="30" name="answer[]" value="'.$row['answer'].'" /></td><td><input type="text" size="2" name="votes[]" value="'.$row['votes'].'" /></td></tr>';
}
?>
</table><br>
<center><input type="submit" name="submit" value="Сохранить"/></center>
</fieldset> </form> </center>
Спустя 2 минуты, 20 секунд (24.09.2011 - 23:18) plumli написал(а):
структура таблицы:


Спустя 1 минута, 33 секунды (24.09.2011 - 23:19) plumli написал(а):
к сожалению так же сохраняет по последнему инпуту

Спустя 2 минуты, 46 секунд (24.09.2011 - 23:22) Sanchopansa написал(а):
Во блин! так вот же оно!
Тут помимо poll_id='$id' нужно еще указать в какой строке заменить.. а ключевое поле в это таблице какое?
Правильно answer_id!
$query = "UPDATE polls_answer SET answer = '".mysqli_real_escape_string($dbc, trim ($_POST['answer'][$i]))."' WHERE poll_id='$id'";
Тут помимо poll_id='$id' нужно еще указать в какой строке заменить.. а ключевое поле в это таблице какое?
Правильно answer_id!
Спустя 1 минута, 46 секунд (24.09.2011 - 23:24) Sanchopansa написал(а):
$query = "UPDATE polls_answer SET answer = '".mysqli_real_escape_string($dbc, trim ($_POST['answer'][$i]))."' WHERE poll_id='$id'";
Этой записью редактируются все поля таблицы которые имеют poll_id='$id' а их может быть несколько! и поэтому он пишет только последнее значение!
Спустя 6 минут, 4 секунды (24.09.2011 - 23:30) Sanchopansa написал(а):
Вот решение и теперь с тебя пиво ;)
<?php
require_once ('head.php');
require_once ('connectdb.php');
require_once('startsession.php');
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die ('сбой подключения');
$id = (int)$_GET['id'];
mysqli_query($dbc, "SET NAMES utf8");
$query_polls = mysqli_query ($dbc, "SELECT * FROM polls WHERE poll_id='$id'");
$row_polls = mysqli_fetch_array ($query_polls);
if (isset ($_POST['submit'])) {
foreach($_POST['answer'] as $answer_id=>$value){
$query = "UPDATE polls_answer SET answer = '".mysqli_real_escape_string($dbc, trim ($value))."' WHERE poll_id='$id' AND answer_id=".$answer_id;
mysqli_query ($dbc, $query) or die ('ошибка записи');
}
$home_url = 'votes.php';
header ('Location: ' . $home_url);
}
?>
<?php require_once ('html.php');?>
<a href="edit_poll_step1.php?id=<?php echo $id;?>">К шагу 1</a>
<h3>Редактирование опроса. Шаг 2.</h3>
<center><form method="POST" action="">
<fieldset style="width:500px;">
<legend>Шаг 2</legend>
<table id="edit_table">
<tr><td>Название голосования:</td>
<td><?php echo $row_polls['poll_name']?></td></tr>
<tr><td>Вопрос:</td>
<td><?php echo $row_polls['poll_quest']; ?></td></tr>
<tr><td> </td></tr>
<tr><td>Варианты ответов:</td><td>Количество голосов:</td></tr>
<?php
$query = mysqli_query ($dbc, "SELECT * FROM polls_answer WHERE poll_id='$id'");
while ($row = mysqli_fetch_array($query)) {
echo '<tr><td><input type="text" size="30" name="answer['.$row['answer_id'].']" value="'.$row['answer'].'" /></td><td><input type="text" size="2" name="votes['.$row['answer_id'].']" value="'.$row['votes'].'" /></td></tr>';
}
?>
</table><br>
<center><input type="submit" name="submit" value="Сохранить"/></center>
</fieldset> </form> </center>
Спустя 2 минуты, 34 секунды (24.09.2011 - 23:33) plumli написал(а):
спасибо тебе огромное, теперь начну разбираться в своем говнокоде
+1

+1