2015-10-06 3 views
1

Я пытаюсь удалить некоторую информацию из базы данных, но когда я попрошу пользователя подтвердить действие, что-то пойдет не так. Вы можете мне помочь?Что-то не так при удалении данных из базы данных

Сценарий печатает категории для выбора, если ничего не разрешено. Затем он запрашивает у пользователя удаление или удаление выбранных категорий. В конце концов, он удаляет выбранное.

Но есть какая-то ошибка в последней части (первая в сценарии), и я не могу understad, где это происходит не так:

<?php 
//If the user confirm to delete... 
    if(isset($_POST['eliminazione_conferma']) and $_POST['eliminazione_conferma']=='conferma'){ 
//if conferma_eliminazione=1, don't delete 
     if(isset($_POST['conferma_eliminazione']) and $_POST['conferma_eliminazione']=='1'){ 
       echo 'Eliminazione annullata'; 
      }else{//Delete if conferma_eliminazione=0 
       while($row=$categoria){ 
        $delete= "DELETE FROM categorie WHERE $row = category_id"; 
        $query=mysql_query($delete); 
        echo "$row eliminato\n"; 
       } 
      } 
    }else{//ELSE, print the form to confirm action 
    if(isset($_POST['eliminazione']) and $_POST['eliminazione']=='delete'){ 
//Array with the chosen "categories" 
     $categoria=isset($_POST['categoria']) ? $_POST['categoria'] : array(); 
//Print the chosen categories to ask confirmation 
     echo'Sicuro di voler eliminare le seguenti categoire?<br />'; 
     foreach($categoria as $row){ 
      echo "$row<br />\n"; 
     } 
//Yes = 0, No = 1 
     echo '<form method="post" action="',$_SERVER['REQUEST_URI'],'"> 
     <input type="radio" name="conferma_elimiazione" value="0" />Si<br /> 
     <input type="radio" name="conferma_eliminzione" value="1" />No<br /> 
     <input type="hidden" name="eliminazione_conferma" value="conferma" />'; 

     foreach($categoria as $row){ 
      echo'<input type="hidden" name="categoria[]" value="',$row,'" />',"\n",'' ; 
     } 
     echo' 
     <input type="submit" value="Conferma" /> 
     </form>'; 
     }else{//In the end, if nothing is settled, print the form to check the category to delete 
//Select the categories from the database 
     echo'<form method="post" action="',$_SERVER['REQUEST_URI'],'" />',"\n",''; 
    $select = "SELECT nome,category_id FROM categorie ORDER BY category_id" ; 
    $select_result=mysql_query($select) or die("Mysql Error: ".mysql_error()); 
    while($row = mysql_fetch_assoc($select_result)){ 
     echo '<input type="checkbox" name="categoria[]" value="',$row['category_id'],'">',$row['nome'],'<br />'; 

    } 
    echo'<input type="hidden" name="eliminazione" value="delete" /> 
    <input type="submit" name="submit" value="Elimina" /> 
    </form>'; 
    } 
    } 
+1

Не могли бы вы уменьшить количество кода или отделить его, чтобы сделать его более читаемым? Кроме того, «ошибка» - это широкий термин, пожалуйста, определите его. – Script47

+0

Я просто знаю mysql_query, а остальные устарели, но я проверю их позже, если я когда-нибудь найду ошибку. Извините ^^ " – Narheru

+0

Да, всего лишь момент – Narheru

ответ

1

Проблема с запросом

$delete= "DELETE FROM categorie WHERE $row = category_id"; 

является

WHERE $row = category_id"; 

Что такое category_id?

У вас есть значение для этого?

Возможно, вы хотите WHERE category_id=/*something here like $row['column_name']*/

+0

category_id - это столбец моей базы данных, где сохранен идентификатор категории. Однако проблема заключается в том, когда пользователь принимает удаление выбранной категории. Сценарий не выполняет эту часть: //if conferma_eliminazione=1, don't delete if(isset($_POST['conferma_eliminazione']) and $_POST['conferma_eliminazione']=='1'){ etc...} Narheru

+0

тогда запрос должен быть 'WHERE category_id =/* некоторое значение * /' –

0

Спасибо всем за помощь, но я решил свою проблему таким образом (скрипт не transformig значения «conferma_eliminazione» в целочисленном типе):

<h2>Modifica o Elimina Categoria </h2> 
<?php 
if(isset($_POST['eliminazione_conferma']) and $_POST['eliminazione_conferma']=='conferma'){ 
     $categoria=isset($_POST['categoria']) ? $_POST['categoria'] : array(); 
     $a=(int)$_POST['eliminazione']; 
       if($a=='1'){ 
      echo 'Eliminazione annullata'; 
      echo "\n"; 
     }elseif($a=='0'){ 
      foreach($categoria as $row){ 
       $delete= "DELETE FROM categorie WHERE $row = category_id"; 
       $query=mysql_query($delete); 
       echo "$row eliminato\n"; 
      } 
     } 
}else{ 
if(isset($_POST['eliminazione']) and $_POST['eliminazione']=='delete'){ 

    $categoria=isset($_POST['categoria']) ? $_POST['categoria'] : array(); 
    echo'Sicuro di voler eliminare le seguenti categoire?<br />'; 
    foreach($categoria as $row){ 
     echo '',$row,'<br />',"\n"; 
    } 
    echo '<form method="post" name="form_eliminazione_categoria" action="',$_SERVER['REQUEST_URI'],'">',"\n",' 
    <input type="radio" name="eliminazione" value="0" />Si<br />' ,"\n",' 
    <input type="radio" name="eliminazione" value="1" />No<br />',"\n",' 
    <input type="hidden" name="eliminazione_conferma" value="conferma" />',"\n",''; 
    foreach($categoria as $row){ 
     echo '<input type="hidden" name="categoria[]" value="',$row,'" /><br />',"\n",''; 
    } 
    echo' 
    <input type="submit" value="Conferma" /> 
    </form>'; 
    }else{ 
    echo'<form method="post" action="',$_SERVER['REQUEST_URI'],'" />',"\n",''; 
$select = "SELECT nome,category_id FROM categorie ORDER BY category_id" ; 
$select_result=mysql_query($select) or die("Mysql Error: ".mysql_error()); 
while($row = mysql_fetch_assoc($select_result)){ 
    echo '<input type="checkbox" name="categoria[]" value="',$row['category_id'],'">',$row['nome'],'<br />'; 
    echo "\n"; 
} 
echo'<input type="hidden" name="eliminazione" value="delete" />',"\n",' 
<input type="submit" name="submit" value="Elimina" />',"\n",' 
</form>'; 
} 
} 
Смежные вопросы