2016-05-23 5 views
0

Я упростил свой код от ерунды, поэтому мы можем найти проблему проще.Как отредактировать конкретные записи таблицы с помощью собственной панели администратора?

У меня есть таблица с записью из db. Я могу вставить новое, удалить существующее, но каким-то образом я не могу их изменить.

Когда я нажимаю кнопку «Редактировать», появляется хороший, но когда я его редактирую и нажимаю кнопку «Изменить», всегда последняя строка меняется, я пытаюсь сделать modofy.

Извините за мой английский, я пишу пример:

Собака Cat автомобилей Председателя

Если я редактирую Кот, Председатель изменится ... Очень расстраивает: D

Вот мой код:

<table> 
<tr> 
    <th>ID</th> 
    <th>Title</th> 
    <th>Edit</th> 
    <th>Delete</th> 
</tr> 

<?php 
include("connect.php"); 

$get_cats = "SELECT * FROM categories"; 
$run_cats = mysqli_query($con, $get_cats); 

while ($row_cats = mysqli_fetch_array($run_cats)) { 
    $cat_id  = $row_cats['cat_id']; 
    $cat_title = $row_cats['cat_title']; 
?> 
    <tr> 
    <td><?php echo $cat_id; ?></td> 
    <td><?php echo $cat_title; ?></td> 
    <td><a href="index.php?manage_cats&edit_cat=<?php echo $cat_id; ?>">Edit</a></td> 
    <td><a href="index.php?manage_cats&delete_cat=<?php echo $cat_id; ?>">Delete</a></td> 
    </tr> 
<?php } ?> <!-- end while --> 

    <tr> 
    <td>Insert New Category</td> 
    <td colspan="2"><input type="text" name="insert_cat_title" /></td> 
    <td><input type="submit" name="insert_cat" value="Insert"></td> 
    </tr> 

    <?php 
    if(isset($_GET['edit_cat'])) { 
    $edit_id  = $_GET['edit_cat']; 
    $get_cat  = "SELECT * FROM categories WHERE cat_id = '$edit_id'"; 
    $run_cat_new = mysqli_query($con, $get_cat); 

    while ($row_cat = mysqli_fetch_array($run_cat_new)) { 
     $cat_id = $row_cat['cat_id']; 
     $cat_title = $row_cat['cat_title']; 
    ?> 
     <tr> 
     <td>Change Category Name</td> 
     <td colspan="2"><input type="text" name="update_cat_title" value="<?php echo $cat_title; ?>"/></td> 
     <td><input type="submit" name="update_cat" value="Change"></td> 
     </tr> 
    <?php } } ?> 

</table> 
</form> 

<?php 

// Insert Category 
if(isset($_POST['insert_cat'])) { 
$cat_title = $_POST['insert_cat_title']; 

if($cat_title == '') { 
    echo "<script>alert('Please insert Category Name')</script>"; 
    echo "<script>window.open('index.php?manage_cats', '_self')</script>"; 
} 
else { 
$insert_cat = "INSERT INTO categories (cat_title) VALUES ('$cat_title')"; 
$run_cat = mysqli_query($con, $insert_cat); 
echo "<script>window.open('index.php?manage_cats', '_self')</script>"; 
} 
} 

// Delete Category 
if(isset($_GET['delete_cat'])) { 
$delete_id = $_GET['delete_cat']; 
$delete_cat = "DELETE FROM categories WHERE cat_id = '$delete_id'"; 
$run_delete = mysqli_query($con, $delete_cat); 
echo "<script>window.open('index.php?manage_cats', '_self')</script>"; 
} 

// Edit Category 
if(isset($_POST['update_cat'])) { 
$cat_title_new = $_POST['update_cat_title']; 

if($cat_title == '') { 
    echo "<script>alert('Please insert Category Name')</script>"; 
    echo "<script>window.open('index.php?manage_cats&edit_cat', '_self')</script>"; 
} 
else { 
    $update_cat  = "UPDATE categories SET cat_title = '$cat_title_new' WHERE cat_id = '$cat_id'"; 
    $run_update  = mysqli_query($con, $update_cat); 
    echo "<script>window.open('index.php?manage_cats', '_self')</script>"; 
} 
} 
?> 
+0

Обновление выполняется через ajax или форму submit.попробуйте эхо в блоке редактирования и эхо-обновления и посмотрите результаты. –

+0

Последний $ cat_id - проблема, но я не знаю, как ее исправить. Мне нужна переменная edit_cat, где хранится определенный идентификатор, но я получаю ошибку. – DRYN

ответ

0

Добавить скрытое поле с

<input type="hidden" name="update_cat_id" value="<?php echo $cat_id; ?>"/>

после

<input type="text" name="update_cat_title" value="<?php echo $cat_title; ?>"/>

и установить с условием, где, как:

$cat_id = $_POST['update_cat_id']; 
$update_cat  = "UPDATE categories SET cat_title = '$cat_title_new' WHERE cat_id = '$cat_id'"; 
+0

Я так тебя люблю – DRYN

0

Ваша проблема с входами с одним и тем же атрибутом имени.

даст вам строку запроса, как

http.example.com/index.php?test=1 & тест = 2 & тест = 3 & тест = 4

в вашем URL-адресе, но в php var_dump ($ _ GET) вернет вам только это

массив (1) {["test"] => strin g (1) "4"}

Вы просто перезаписываете значение $ _GET ['test'] четыре раза и берете последнее значение.

Возможные гуманный:

<form method="get"> 
    <input type="text" name="test[]" value="1" /> 
    <input type="text" name="test[]" value="2" /> 
    <input type="text" name="test[]" value="3" /> 
    <input type="text" name="test[]" value="4" /> 
    <input type="submit" /> 
</form> 

Тогда var_dump ($ _ GET) дает вам:

array(1) { 
    ["test"]=> array(4) { 
    [0]=> string(1) "1" 
    [1]=> string(1) "2" 
    [2]=> string(1) "3" 
    [3]=> string(1) "4" 
} } 

Более нежное решение для печати категории, как обычные ячейки таблицы (без входов) и с JQuery для преобразования содержимого ячеек в ввод по нажатию на кнопку, ссылку и т. д.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>Cell 1</td> 
 
    <td><a href="#">Edit</a> 
 
    </td> 
 
    <td>Cell 2</td> 
 
    <td><a href="#">Edit</a> 
 
    </td> 
 
    <td>Cell 3</td> 
 
    <td><a href="#">Edit</a> 
 
    </td> 
 
    <td>Cell 4</td> 
 
    <td><a href="#">Edit</a> 
 
    </td> 
 
    </tr> 
 
</table> 
 
<script> 
 
    $(document).ready(function() { 
 
    $("td a").click(function() { 
 
     var vvaall = $(this).parent("td").prev("td").html(); 
 
     $(this).parent("td").prev("td").empty().html('<input type="text" name="test" value="' + vvaall + '" /><input type="submit" />'); 
 
    }); 
 
    }); 
 
</script>

+0

Кажется логичным, но я вставляю содержимое dynamiccaly:/ Однако мы решили его, но спасибо вам все равно :) – DRYN