[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почему выводится ошибка при вводе id?
Гость_Ольга
Доброго времени суток! Объяните пожалуйста, в чем ошибка. Имеется кусок кода, который удаляет запись в таблице, нужно только ввести ее id

echo "<form method=post action=".$_SERVER['PHP_SELF']."?db=".$_GET['db']."&t=".$_GET['t'].">" ;  

echo "<TABLE BORDER=0 CELLSPACING=0><tr><TD align=center><b>Удалить запись (введите номер): </b></td</tr></TABLE>";
echo "<table border=0 CELLSPACING=1 cellpadding=0>";

$list_f = mysql_list_fields($db, $table);
$n = mysql_num_fields($list_f);
// для каждого поля получаем его имя и флаги
for($i=0;$i<$n; $i++){
$name_f = mysql_field_name ($list_f,$i);
$flags_str = mysql_field_flags ($list_f, $i);
// из строки флагов делаем массив, где каждый элемент массива - флаг поля
$flags = explode(" ", $flags_str);
foreach ($flags as $f){
if ($f == 'auto_increment') $key = $name_f;
// запоминаем имя автоинкремента
}
if ($key == $name_f){
echo "<tr><td align=right bgcolor='#C2E3B6'><font size=2>
<b>"
. $name_f ."</b></font></td>";
echo "<td><input type=text name=\"$name_f\"></td>";
$dd = $_POST[$name_f];
$delete = mysql_query("DELETE from $table WHERE id = $dd",$link);
}
echo "</tr>";
}
echo "</table>";

echo "<input type=submit name='add' value='OK'>";
echo "<input type=reset name='reset' value='reset'>";
echo "</form>";


В итоге, когда ввожу id (например, 25), выдается сообщение: Дублирующаяся запись '25' по ключу 'PRIMARY'



Спустя 13 часов, 14 минут, 49 секунд (2.02.2010 - 15:39) Ice написал(а):
Ну, что-то тя совсем завалили в самый низ, еле заметил))) итак.

Наш обработчик теперь такой:

<?php
function
handler(){
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","");
mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
// Show us databases
if(isset($_GET['act']) and $_GET['act'] == 'database'){
$res = mysql_query("SHOW DATABASES") or die(mysql_error());
while($row = mysql_fetch_assoc($res)){
echo "<a href=\"".$_SERVER['PHP_SELF']."?db=".$row['Database']."\">" . $row['Database'] . '</a><br>';
}
}

// Show us tables
if(isset($_GET['db'])){
if(preg_match('/^[`\']+/', $_GET['db'])){
return;
}
$db = mysql_real_escape_string($_GET['db']);
$tin = "Tables_in_".$db;
$res = mysql_query("SHOW TABLES FROM $_GET[db]") or die(mysql_error().' q1');
if(mysql_num_rows($res) < 1){
exit('База данных <b>'.$db.'</b> не содержит ни одной таблицы');
}
while($row = mysql_fetch_assoc($res)){
echo "<a href=\"".$_SERVER['PHP_SELF']."?db=".$_GET['db']."&t=".$row[$tin]."\">" . $row[$tin] . '</a><br>';
}
// Show us table contents
//
//

if(isset($_GET['db']) and isset($_GET['t'])){
if(preg_match('/^[`\']+/', $_GET['t'])){
return;
}
$table = mysql_real_escape_string($_GET['t']);
mysql_select_db($db);
$sql2 = "SELECT * FROM $table";
$res = mysql_query($sql2) or die(mysql_error().' q2');
$fields = mysql_num_fields($res);
if(mysql_num_fields($res) > 0){

////////////////Начало: Новый фрагмент
//форма для удаления записи
?>

<form method=post action="<?php echo $_SERVER['PHP_SELF']."?db=$db&t=$table"?>">
<
TABLE BORDER=0 CELLSPACING=0>
<
tr>
<
TD align=center><b>Удалить запись (введите номер): </b></td>
</
tr>
</
TABLE>
<
table border=0 CELLSPACING=1 cellpadding=0>
<?php
$list_f = mysql_list_fields($db, $table);
$n = mysql_num_fields($list_f);
// для каждого поля получаем его имя и флаги
for($i=0;$i<$n; $i++){
$name_f = mysql_field_name ($list_f, $i);
$flags_str = mysql_field_flags ($list_f, $i);
// из строки флагов делаем массив, где каждый элемент массива - флаг поля
$flags = explode(" ", $flags_str);
foreach ($flags as $f){
if ($f == 'auto_increment') $key = $name_f;
// запоминаем имя автоинкремента
}
if ($key == $name_f){
echo "<tr><td align=right bgcolor='#C2E3B6'><font size=2>
<b>"
. $name_f ."</b></font></td>";
echo "<td><input type=text name=\"$name_f\"></td>";
$dd = $_POST["$name_f"] * 1;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
mysql_query("DELETE FROM `$table` WHERE id = '$dd'")
or die(mysql_error());
header("Location:".$_SERVER['PHP_SELF']."?db=$db&t=$table");
}
}

echo "</tr>";
}
?>
</table>
<
input type=submit name='add' value='OK'>
<
input type=reset name='reset' value='reset'>
</
form>
<?php
//////////Конец: Новый фрагмент

echo '<p>Таблица <b>'.$table.'</b></p>';
echo '<table border=1><tr>';

//выводим контент
$j = 0;
if(mysql_num_rows($res) < 1){
exit("пуста");
}else{
// выводим имена полей
$i = 0;
echo "<hr>";
while($i < mysql_num_fields($res)){
$row = mysql_fetch_field($res, $i);
echo '<td>' . $row -> name . '</td>';
$i++;
}
echo '</tr>';
echo '<tr>';
while($r = mysql_fetch_assoc($res)){
if($j == mysql_num_fields($res)){
$j = 0;
echo '</tr><tr>';
}
while($j < mysql_num_fields($res)){
$row = mysql_fetch_field($res, $j);
echo '<td>' . $r[$row->name] . '</td>';
$j++;
}
}
}

//
echo '</tr>';
echo '</table>';
}
}
}
}

?>


А наша страничка, по-прежнему:

<html>
<body>
<p><a
href="<?php echo $_SERVER['PHP_SELF']?>?act=database">Ссыль</a></p>
<?php

handler();
?>
</body>
</html>

Спустя 7 часов, 10 минут, 27 секунд (2.02.2010 - 22:49) Гость_Ольга написал(а):
Ну вот, опять меня выручаете rolleyes.gif biggrin.gif Спасибо вам огромное, Ice, мир не без добрых людей!!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.