Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непонятно где ошибка?
 
 автор: burgui   (07.06.2010 в 15:08)   письмо автору
 
 

Пол дня пропарился. Не могу найти где ошибся. Народ помогите, нужно удалить запись с базы по id, ничего не выходит.
Вот код, часть упущена
[code
...............
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM $table order by inv_n asc LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow $msg=array();
while ( $msg[] = mysql_fetch_array($result))
?>


<div class="main" style="position:relative;top:-25px;">
<span>
<form action="goto.php" method=POST target="_blank">
Введіть номер запису <input onClick="this.className='onm'" class="tooltip" type="text"
name="inv_n" size="7" title="Введіть номер запису" />
<input type="submit" value="Перейти до запису" />
</form>
</span>
<?

//здесь кнопка удаление
echo '<form action="drop.php" method=POST>';
echo '<input type=hidden name=id value='.$msg['id'].' />';
echo '<input type="submit" value="delete">
</form>';
?>
........................................
][/code]

вот обработчик этой кнопки
drop.php

<?
include ('config.php');
$id=$_POST['id'];

$sapros='delete from herb where id="'.$_POST['id'].'"';
$ath=mysql_query($sapros);
if (!
$ath)
{
echo 
'Error.  Not delete insert.';
exit;
}
//header ('location: redact.php');
?>


Такое впечатление что id не передается. Помогите советом пожалуйста.

  Ответить  
 
 автор: Legenda   (07.06.2010 в 15:18)   письмо автору
 
   для: burgui   (07.06.2010 в 15:08)
 


<?
include ('config.php');
$id=$_POST['id'];

$sapros=mysql_query("delete from herb where id='".$id."'");

if (!
$ath)
{
echo 
'Error.  Not delete insert.';
exit;
}
//header ('location: redact.php');
?> 

  Ответить  
 
 автор: burgui   (07.06.2010 в 15:22)   письмо автору
 
   для: Legenda   (07.06.2010 в 15:18)
 

Спасибо за быстрый ответ. Но этот вариант не работает.

  Ответить  
 
 автор: vadimka   (07.06.2010 в 15:42)   письмо автору
 
   для: burgui   (07.06.2010 в 15:22)
 

попробуйте забрать hidden из input поля id (заменить на text) возможно само поле пустое...

  Ответить  
 
 автор: burgui   (07.06.2010 в 15:49)   письмо автору
149 байт
 
   для: vadimka   (07.06.2010 в 15:42)
 

Да Вы правы. Поле пустое, в нем выводится только /. Кажется я все правильно делаю, почему id не проходит не пойму. Прикладываю файлы к сообщению. Народ посмотрите пожалуйста. Помогите.
Спасибо.

  Ответить  
 
 автор: bab-nike   (07.06.2010 в 17:28)   письмо автору
 
   для: burgui   (07.06.2010 в 15:49)
 

echo '<input type=hidden name=id value='.$msg['id'].' />';

замените на
echo "<input type=hidden name=id value=".$msg['id']."/>";

  Ответить  
 
 автор: bab-nike   (07.06.2010 в 17:24)   письмо автору
 
   для: burgui   (07.06.2010 в 15:08)
 

посмотрите в исходном коде, поле id вообще принимает ли значение value?

<input type=hidden name=id  value=???/>
<input type="submit" value="delete">

  Ответить  
 
 автор: Tonik992   (08.06.2010 в 01:13)   письмо автору
 
   для: bab-nike   (07.06.2010 в 17:24)
 

Потому что...
while ( $msg[] = mysql_fetch_array($result))


значит и надо использовать не как:
echo '<input type=hidden name=id value='.$msg['id'].' />

$msg['id']
а как $msg[$i][id'];

где $i - диапозон значений

echo '<input type=hidden name=id value='.$msg[$i]['id'].' />


p.s. посмотри, выведи print_r($msg);

  Ответить  
 
 автор: burgui   (08.06.2010 в 12:10)   письмо автору
 
   для: Tonik992   (08.06.2010 в 01:13)
 

Вывод print_r($msg);
id идет

Array ( [0] => Array ( [0] => 46 [id] => 46 [1] => 6 [inv_n] => 6 [2] => HAaxon1 [h_taxon] => HAaxon1 [3] => Class1 [class] => Class1 [4] => Fam2 [fam] => Fam2 [5] => Gen1 [gen] => Gen1 [6] => Spec1 [spec] => Spec1 [7] => SpecR
.

Перепробывал все вищенаведенное, ничего не выходит. Народ помогите, что делать.

  Ответить  
 
 автор: sim5   (08.06.2010 в 13:13)   письмо автору
 
   для: burgui   (08.06.2010 в 12:10)
 

Ничем помочь нельзя, пока вы не объясните:
1. Зачем перегонять ресурс полученный в массив?
2. Что вы патаетесь удалить, если кнопка Удалить одна, а id-ключей в массиве может быть несколько?

  Ответить  
 
 автор: burgui   (08.06.2010 в 13:54)   письмо автору
 
   для: sim5   (08.06.2010 в 13:13)
 

>Ничем помочь нельзя, пока вы не объясните:
>1. Зачем перегонять ресурс полученный в массив?
>2. Что вы патаетесь удалить, если кнопка Удалить одна, а id-ключей в массиве может быть несколько?

1. А как мне еще вывести запись на правку. В этом окне выводится одна запись на правку, поэтому тут же я хочу предусмотреть возможность удаления этой записи.
2. id-ключ в масиве один, поскольку за один раз выводится только 1 запись.
К сожалению лучше пояснить не могу, поскольку я не программист, а биолог.

  Ответить  
 
 автор: vadimka   (08.06.2010 в 14:11)   письмо автору
 
   для: burgui   (08.06.2010 в 13:54)
 

по-идее Вам нужно сделать так:
while ( $msg = mysql_fetch_array($result))

а инпут:
echo '<input type=text name=id value=".$msg[id]." />';

  Ответить  
 
 автор: sim5   (08.06.2010 в 16:22)   письмо автору
 
   для: burgui   (08.06.2010 в 13:54)
 

>$result = mysql_query("SELECT * FROM $table order by inv_n asc LIMIT $start, $num");
>// В цикле переносим результаты запроса в массив $postrow $msg=array();
>while ( $msg[] = mysql_fetch_array($result))

Если одна запись, то к чему вы морочите голову LIMIT $start, $num? Это что, вывод одной записи по вашему? Именно на массив $msg вы ссылаетесь в форме при получении значения, и это как тогда понимать?

Если перед вами стоит задача вывода N сообщений на страницу, и возможностью удаления любого из них, то нет необходимости указывать ее номер, и порождать форму с одной кнопкой чтобы удалить ее.

  Ответить  
 
 автор: burgui   (10.06.2010 в 12:13)   письмо автору
 
   для: sim5   (08.06.2010 в 16:22)
 


>$result = mysql_query("SELECT * FROM $table order by inv_n asc LIMIT $start, $num");
>// В цикле переносим результаты запроса в массив $postrow $msg=array();
>while ( $msg[] = mysql_fetch_array($result))


Этот кусок кода отвечает за постраничную навигацию на странице и отображение конкретной одной страницы.
>Если перед вами стоит задача вывода N сообщений на страницу, и возможностью удаления любого из них, то нет необходимости указывать ее номер, и порождать форму с одной кнопкой чтобы удалить ее.

.
Если перед вами стоит задача вывода N сообщений на страницу, и возможностью удаления любого из них, то нет необходимости указывать ее номер, и порождать форму с одной кнопкой чтобы удалить ее


Предо мной стоит задача вывести по одной странице записи с базы, с возможностью навигации (вперед, назад, вверх, вниз, переход к конкретной записи по запросу ; внесение правок и их сохранение -- уже сделано) и конечно удаление конкретной записи. Вот на этом месте я что-то ступил.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования