| |
|
|
| | Есть скрипт на php который выводит табличку с данными хранящимися в БД, 2 столбца (последних) в этой таблице необходимо редактировать. Это осуществляется при помощи выпадающих меню. Суть проблемы: необходимо сделать так, что бы данные записывались в БД, отображались уже внесенные данные и не затирались существующие. Вот скрипт:
$db = pg_query("select * from konkurs where datep>='".$date."' and datep<='".$end_date."' order by datep DESC");
//////Caaieiaee oaaeeou
echo '<table cellpadding="3" cellspacing="0" class="events">';
echo '<tr align="center" height="20"><td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iiia? caiene</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Aaoa aianaiey</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iaeiaiiaaiea caeac?eea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Oei eiieo?na</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Nnueea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iienaiea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Oaia</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Aaoa iiaa?e</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Ioaaonoaaiiue</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">?acoeuoao</td></tr>';
?>
<form action="konkurs_red.php" method="post">
<?php
$a=0;
$old = pg_query("select * from konkurs where datep>='".$date."' and datep<='".$end_date."' order by datep DESC");
while($rez = pg_fetch_row($old)) {
$a++;
echo '<tr class="row' . ($a%2+1) . '">';
echo '<td class="events"><p class="text">' .$rez['0'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['1'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['2'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['4'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['5'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['6'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['7'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['8'].'<br></td>';
///////////////////////Часть кода при помощи которой должно происходить редактирование данных, вывод существующих и запись в БД новых.
echo "<td><select name=\"ar[".$rez[0]."]\" style=\"width:100\">
<option align=\"center\" value=\"\">";
?>
<?=$rez['9']?>
<?
echo " </option>
<option value=\"Eaaaeia\">Eaaaeia</option>
<option value=\"Ni?ieei\">Ni?ieei</option>
<option value=\"O?oaeei\">O?oaeei</option>
<option value=\"Iaoeiaa\">Iaoeiaa</option>
<option value=\"Oaa?iaa\">Oaa?iaa</option>
<option value=\"E?anii?aiia\">E?anii?aiia</option>
<option value=\"Aa??aiei\">Aa??aiei</option>
<option value=\"Aa??aiei\">Iaii?eei</option>
</select></td>";
///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
echo "<td><select name=\"am[".$rez[0]."]\" style=\"width:100\">
<option align=\"center\" value=\"\">";
?>
<?=$rez['10'] ?>
<?
echo "</option>
<option value=\"Auea?ai\">Auea?ai</option>
<option value=\"I?iea?ai\">I?iea?ai</option>
<option value=\"Ia ninoiyeny\">Ia ninoiyeny</option>
<option value=\"Ia o?anoaoai\">Ia o?anoaoai</option>
</select></td>";
}
echo '</table>';
?>
<table cellpadding="2" cellspacing="10" border="0" align="right">
<tr><td align="right">
<br><br>
<input type="submit" Name="boot" value="Iaiiaeou eioi »»»">
</td></tr>
</table>
</form>
<?
if (!empty($_POST['boot'])) { //// ioi?aaea aaiiuo n eiiiee
while( (list($idx,$val) = each($ar)) and (list($idx,$val) = each($am)) )
{
pg_query("UPDATE konkurs SET otv='".$ar[$idx]."', rez='".$am[$idx]."' WHERE id=$idx"); ////iaiiaeaiea a aa ?aaaeoe?oaiuo aaiiuo
}
}
echo '</table>';
?>
|
Спасибо! | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 15:12)
| | | >1. необходимо редактировать...
>2. необходимо сделать так, что бы данные записывались в БД, отображались уже внесенные данные и не затирались существующие.
1. Если редактировать то это подразумевает изменение данных (пусть будет по вашему "затерание"). Значит 2 - это противоречие.
2. Если "отображались уже внесенные данные и не затирались существующие", то это не редактирование, а добавление новых данных. Значит 1 - это противоречие.
У вас видимо неверно передаете в форму номер записи (не тот какой нужен)? | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 16:22)
| | | Значит в чем суть: когда я вношу данные то они вносятся нормально, но если за этот месяц, т.е. на экране уже есть данные в другой строке, то они затираются т.к. переменная которая их вносит пуста! | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 16:34)
| | | Если по-честному, не понял, что там с месяцами связано, но если судить по черным отметкам полей SELECT на рисунке, то... Допустим у вас есть елемент SELECT в форме. Первый его опшен имеет "пустое" значение и выбран по умолчанию, а остальные заполнены:
<select name="gerls">
<option value="" selected>Выберите девушку</option>
<option value="Оля">Оля</option>
<option value="Надя">Надя</option>
<option value="Люба">Люба</option>
</select>
|
Я могу, перед отправкой формы, с помощью JS проверить, выбрал ли пользователь девушку, проверяя значение выбранного опшена. Если это будет первый (по умолчанию), то его значение пустое, и я не разрешу отправить форму, пока пользователь не выберет девушку. Тоже самое можно проверять и на сервере - выбрано ли значение или нет, и принять какие либо действия. Вы не проверяете ничего, отсюда ваши и проблемы видимо. | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 16:55)
| | | >Если по-честному, не понял, что там с месяцами связано, но если судить по черным отметкам полей SELECT на рисунке, то... Допустим у вас есть елемент SELECT в форме. Первый его опшен имеет "пустое" значение и выбран по умолчанию, а остальные заполнены:
>
><select name="gerls">
><option value="" selected>Выберите девушку</option>
><option value="Оля">Оля</option>
><option value="Надя">Надя</option>
><option value="Люба">Люба</option>
></select>
>
|
>Я могу, перед отправкой формы, с помощью JS проверить, выбрал ли пользователь девушку, проверяя значение выбранного опшена. Если это будет первый (по умолчанию), то его значение пустое, и я не разрешу отправить форму, пока пользователь не выберет девушку. Тоже самое можно проверять и на сервере - выбрано ли значение или нет, и принять какие либо действия. Вы не проверяете ничего, отсюда ваши и проблемы видимо.
Нет, это не то! Faraon более точно меня понял. | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 16:34)
| | | Вы в первом опшине значение то не указали, и оно становится NULL
echo "<td><select name=\"ar[".$rez[0]."]\" style=\"width:100\">
<option value=\"".$rez['9']."\">";
?>
<?=$rez['9']?>
<?
echo " </option>
<option value=\"Eaaaeia\">Eaaaeia</option>
<option value=\"Ni?ieei\">Ni?ieei</option>
<option value=\"O?oaeei\">O?oaeei</option>
<option value=\"Iaoeiaa\">Iaoeiaa</option>
<option value=\"Oaa?iaa\">Oaa?iaa</option>
<option value=\"E?anii?aiia\">E?anii?aiia</option>
<option value=\"Aa??aiei\">Aa??aiei</option>
<option value=\"Aa??aiei\">Iaii?eei</option>
</select></td>";
|
| |
| |
|
|
| |
|
|
| |
для: Faraon
(11.10.2007 в 16:56)
| | | Я тоже так думал но это не помогает данные все равно затираются! | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 17:10)
| | | А $rez[0] какое принимает значение?
Это уникальный id записи? | |
| |
|
|
| |
|
|
| |
для: Faraon
(11.10.2007 в 17:12)
| | | Да. | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 17:10)
| | | Вот ваше обновление:
<?
if (!empty($_POST['boot'])) {
while( (list($idx,$val) = each($ar)) and (list($idx,$val) = each($am)) ) {
pg_query("UPDATE konkurs SET otv='".$ar[$idx]."', rez='".$am[$idx]."' WHERE id=$idx");
}
}
?>
|
И как говорится "ни ухом, ни рылом", причем воткнуто это в таблицу, зачем? Вам что все равно что вам шлют? | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 17:14)
| | | Это для внутреннего сайта компании и наврядли кто то будет еренду слать! =)
То что вы предложили не подходит! =( В смысле эффект тот же! ( | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 17:21)
| | | Вы не то, и скорее не туда заносите, вот и весь ваш эффект. | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 17:25)
| | | в каком смысле? вроде все то и туда? а что вы имели в виду? | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 17:29)
| | | Вы вместо обновления таблицы, выведите получаемые значения из формы на экран, связав это все с записями вашей таблицы. Проанализитруйте, что вы получили, и что у вас будет обновлятся. Это ведь сделать не сложно. Я не знаю структуру вашей таблицы, что, зачем и куда вы выводите, что и куда будет вставлятся. Да и разбираться, если честно, не охота. Но то что у вас работает не так как вам бы хотелось - это ваша ошибка, и это я знаю на 100%.
Либо вы при формировании формы не туда вносите записи из таблицы, либо допускаете в другом месте ошибку - вот вам и результат.
Я вам посоветовал создать новый пост с конкретной проблемой, вы выставили то же самое, и опять игра "в темную". | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 17:35)
| | | Ну что я в темную делаю? Я же вроде все стараюсь подробно обьяснить, код в пример привожу! Я не могу понять что вам именно не ясно! Проблема то простая, я это понимаю, тока недостаток знаний мне мешает решить проблему! А поднимать инфу и во всем разбираться очень долго, мне надо как можно быстрей решить эту проблему! =( По этому я и пришел на форум! | |
| |
|
|
| |
|
|
| |
для: rez
(11.10.2007 в 17:56)
| | | Ну за вас проблему никто не решит, вам только могут посоветовать. А "темная" потому, что не известна полная картина. Я вам сказал уже - если бы я сомневался и искал причину, то хотя бы получил то, чего хочу обновить. Вы это пробовали? Вообще - вывод на экран "сомнительного", это тоже способ отладки. | |
| |
|
|
| |
|
|
| |
для: sim5
(11.10.2007 в 18:08)
| | | Да я не прошу решать за меня проблему, поставьте просто на путь истиный! Я не знаю каким образом вам обрисовать картину. Если я чтото непонятно обьяснил, спросите, я более подробно распишу! | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 10:24)
| | | На самом деле Faraon правильно меня понял!!!! Тока предложенный им вариант тоже не подходит, почему то!!! | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 10:45)
| | | Должно работать
<?php
$db = pg_query("select * from konkurs where datep>='".$date."' and datep<='".$end_date."' order by datep DESC");
//////Caaieiaee oaaeeou
echo '<table cellpadding="3" cellspacing="0" class="events">';
echo '<tr align="center" height="20"><td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iiia? caiene</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Aaoa aianaiey</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iaeiaiiaaiea caeac?eea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Oei eiieo?na</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Nnueea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Iienaiea</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Oaia</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Aaoa iiaa?e</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Ioaaonoaaiiue</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">?acoeuoao</td></tr>';
?>
<form action="konkurs_red.php" method="post">
<?php
$a=0;
$old = pg_query("select * from konkurs where datep>='".$date."' and datep<='".$end_date."' order by datep DESC");
while($rez = pg_fetch_row($old)) {
$a++;
echo '<tr class="row' . ($a%2+1) . '">';
echo '<td class="events"><p class="text">' .$rez['0'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['1'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['2'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['4'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['5'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['6'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['7'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['8'].'<br></td>';
///////////////////////Часть кода при помощи которой должно происходить редактирование данных, вывод существующих и запись в БД новых.
echo "<td>
<input type=hidden name=id[] value=".$rez[0].">
<select name=\"ar[]\" style=\"width:100\">
<option align=\"center\" value=\"".$rez['9']."\">";
?>
<?=$rez['9']?>
<?
echo " </option>
<option value=\"Eaaaeia\">Eaaaeia</option>
<option value=\"Ni?ieei\">Ni?ieei</option>
<option value=\"O?oaeei\">O?oaeei</option>
<option value=\"Iaoeiaa\">Iaoeiaa</option>
<option value=\"Oaa?iaa\">Oaa?iaa</option>
<option value=\"E?anii?aiia\">E?anii?aiia</option>
<option value=\"Aa??aiei\">Aa??aiei</option>
<option value=\"Aa??aiei\">Iaii?eei</option>
</select></td>";
///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
echo "<td><select name=\"am[]\" style=\"width:100\">
<option align=\"center\" value=\"".$rez['10']."\">";
?>
<?=$rez['10'] ?>
<?
echo "</option>
<option value=\"Auea?ai\">Auea?ai</option>
<option value=\"I?iea?ai\">I?iea?ai</option>
<option value=\"Ia ninoiyeny\">Ia ninoiyeny</option>
<option value=\"Ia o?anoaoai\">Ia o?anoaoai</option>
</select></td>";
}
echo '</table>';
?>
<table cellpadding="2" cellspacing="10" border="0" align="right">
<tr><td align="right">
<br><br>
<input type="submit" Name="boot" value="Iaiiaeou eioi »»»">
</td></tr>
</table>
</form>
<?
if (!empty($_POST['boot'])) { //// ioi?aaea aaiiuo n eiiiee
$id=$_POST['id'];
$ar=$_POST['ar'];
$am=$_POST['am'];
for($i=0;$i<count($id);$i++){
pg_query("UPDATE konkurs SET otv='".$ar[$i]."', rez='".$am[$i]."' WHERE id=$id[$i]"); ////iaiiaeaiea a aa ?aaaeoe?oaiuo aaiiuo
}
}
echo '</table>';
?>
|
| |
| |
|
|
| |
|
|
| |
для: Faraon
(12.10.2007 в 11:28)
| | | Не работате! =( | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 10:24)
| | | А вы что уже сбились с пути истинного? Рановато. Я не пастор душ человеческих и на путь истинный не наставляю :))
У вас проблема с обновлением в таблице именно с данными, которые вы принимаете из элемента SELECT, и только с этим? Где в вашей форме прописыввается id номера записи таблицы? Зачем вам пустой опшен в элементе SELECT? | |
| |
|
|
| |
|
|
| |
для: sim5
(12.10.2007 в 10:57)
| | | >У вас проблема с обновлением в таблице именно с данными, которые вы принимаете из элемента SELECT, и только с этим?
Да.
>Где в вашей форме прописыввается id номера записи таблицы?
echo '<td class="events"><p class="text">' .$rez['0'].'<br></td>';
|
echo "<td><select name=\"ar[".$rez[0]."]\" style=\"width:100\">
|
if (!empty($_POST['boot'])) { ////отправка данных с кнопки
while( (list($idx,$val) = each($ar)) and (list($idx,$val) = each($am)) )
{
pg_query("UPDATE konkurs SET otv='".$ar[$idx]."', rez='".$am[$idx]."' WHERE id=$idx"); ////обновление в БД редактируемых данных
}
}
echo '</table>';
|
>Зачем вам пустой опшен в элементе SELECT?
Вот вот, я не знаю что туда вписать! Мне кажется что в этом и заключается проблема!!!!! | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 12:07)
| | | Если вы считаете что в этом, то:
1. Можете выбросить вообще этот пустой опшен, а первому опшену со значением добавьте атрибут selected. Тогда это значение будет выбрано по умолчанию, и вам никогда не придет пустое значение.
2. Нужно проверять то, что вам приходит! Я вам об этом говорил еще ранее, вы сослались на то, что "все свои", тем не менее вы сами определили в селекте пустое значение, а если ни кто и ничего не выберет, вы об этом думали? Если есть пустое значение - проверьте, либо на стороне клиента, либо на сервере, а далее ужу как вам угодно.
И еще. Вы так и не потрудились, просто вывести на экран то, что получаете из формы. Уверен, если бы вы это сделали, давно бы нашли причину. | |
| |
|
|
| |
|
|
| |
для: sim5
(12.10.2007 в 13:02)
| | | >Если вы считаете что в этом, то:
>1. Можете выбросить вообще этот пустой опшен, а первому опшену со значением добавьте атрибут selected. Тогда это значение будет выбрано по умолчанию, и вам никогда не придет пустое значение.
>2. Нужно проверять то, что вам приходит! Я вам об этом говорил еще ранее, вы сослались на то, что "все свои", тем не менее вы сами определили в селекте пустое значение, а если ни кто и ничего не выберет, вы об этом думали? Если есть пустое значение - проверьте, либо на стороне клиента, либо на сервере, а далее ужу как вам угодно.
Можно пример кода? | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 13:28)
| | | Кода чего? Если вы о селекте:
то вместо этого:
<?
echo "<td><select name=\"am[".$rez[0]."]\" style=\"width:100\">
<option align=\"center\" value=\"\">";
?>
<?=$rez['10'] ?>
<?
echo "</option>
<option value=\"Auea?ai\">Auea?ai</option>
<option value=\"I?iea?ai\">I?iea?ai</option>
<option value=\"Ia ninoiyeny\">Ia ninoiyeny</option>
<option value=\"Ia o?anoaoai\">Ia o?anoaoai</option>
</select></td>";
}
echo '</table>';
?>
вот это:
<?
echo "<td><select name=\"am[".$rez[0]."]\" style=\"width:100\">
<option value=\"Auea?ai\" selected>Auea?ai</option>
<option value=\"I?iea?ai\">I?iea?ai</option>
<option value=\"Ia ninoiyeny\">Ia ninoiyeny</option>
<option value=\"Ia o?anoaoai\">Ia o?anoaoai</option>
</select></td>";
}
echo '</table>';
?>
|
Что вообще это такое $rez['10']? Куда у вас пропал закрывающий тег </tr>? | |
| |
|
|
| |
|
|
| |
для: sim5
(12.10.2007 в 13:56)
| | | Предложенный вами способ тоже не сработал! =(
>Что вообще это такое $rez['10']? Куда у вас пропал закрывающий тег </tr>?
выводит информацию из БД, т.е. если в бд уже есть информация по выбранному пункту меня, то отображается по умолчанию именно он. Вот с этим как рах и трабла! Как бы сделать так что бы он при нажатии на кнопку отправить не затирался а перезаписывался какраз значением из $rez['10'] (в случае если инфа есть) или из am[".$rez[0]."] (в случае если инфы нет или выбрано другое значение). | |
| |
|
|
| |
|
|
| |
для: rez
(12.10.2007 в 14:35)
| | | Я сейчас материться начну, и очень сильно!) В отличие от Faraon'a, я вам ничего не предлагал, я вам советовал проверить самого себя! Я лишь говорил, что можно поступить так, либо так. Я не писал того, что вы используете, а если бы писал, то совсем не так. Вы "вольно" обращаетесь к индексам массива, что для меня не понятно, то что у вас таблица не верно закрыта, вы мимо ушей, вы хотите "если", но в вашем коде я нигде не свтречал ни одной проверки...
Даже не зная что все таки означет $rez['10'], а правильнее наверное будет $rez[10], я могу точно сказать, что это не "выводит информацию из БД" как вы пишите, а некая переменная полученная из базы. А теперь ваше:
> если в бд уже есть информация по выбранному пункту меня, то отображается по умолчанию именно он
Где отображается? Вы эту переменную сами не занете куда запихнуть, а мне от куда это знать, что это за $rez[10], так и осталось загадкой.
>Как бы сделать так что бы он при нажатии на кнопку отправить не затирался а перезаписывался какраз значением из $rez['10'] (в случае если инфа есть) или из am[".$rez[0]."] (в случае если инфы нет или выбрано другое значение).
Если что-то выводите, но при условии, то проверте перед выводом это условие - удовлетворяет ему - выводите, нет, значит нет. Тоже самое при записи. | |
| |
|
|