2013-05-17 3 views
0

J'ai un léger problème avec mon script PHP. J'ai une table qui génère des lignes peuplées par une instruction MySql.PHP MySQL delete rediriger vers la page blanche

A la dernière colonne, j'ai un bouton pour modifier et supprimer. Mon problème est quand j'appuie sur delete, la requête fonctionne correctement mais elle me redirige vers une page blanche!

L'emplacement de l'en-tête est correct mais lorsque j'appuie sur delete, il reste sur la page en cours, mais il s'agit simplement d'une page blanche.

<?php foreach($rows as $row): ?> 
<tr> 
    <td> 
     <form action="" method="post"> <?php echo $row['id']; ?> </form> 
    </td> 
    <td> 
     <form action="" method="post"> <?php echo $row['roleid']; ?> </form> 
    </td> 
    <td> 
     <form action="" method="post"> 
      <?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?> 
     </form> 
    </td> 
    <td> 
     <form action="" method="post"> 
      <?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?> 
     </form> 
    </td> 
    <td> 
     <form action="" method="post"> 
      <input name="Edit" type="submit" value="Edit" /> 
      <input name="id" type="hidden" value="<?php echo $row['id']; ?>" /> 
     </form> 
    </td> 
</tr> 
<?php endforeach; ?> 

Et je peux mettre avec succès une session en utilisant:

if (isset($_POST['Edit'])) { 

$_SESSION['id'] = $_POST['id']; 
header("Location: edit_account.php"); 

} 

Mais il semble que je l'ai couru dans un autre problème :(Je veux aussi ajouter un bouton de suppression sur chaque ligne pour supprimer ce compte d'utilisateur . en ce moment, c'est à quoi il ressemble:

<td> <form action="" method="post"> 
     <input name="Delete" type="submit" value="Delete" /> 
     <input name="id" type="hidden" value="<?php echo $row['id']; ?>" /> 
    </form> </td> 

Et le code php utilisé est:

if (isset($_POST['Delete'])) { 
    // Everything below this point in the file is secured by the login system 

    // We can retrieve a list of members from the database using a SELECT query. 
    // In this case we do not have a WHERE clause because we want to select all 
    // of the rows from the database table. 
    $query = " 
     DELETE 
     FROM user 
     WHERE 
      id = :id 
    "; 

    // The parameter values 
    $query_params = array(':id' => $_POST['id']); 

    try { 
     // These two statements run the query against your database table. 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($query_params); 
    } 

    catch(PDOException $ex) { 
     // Note: On a production website, you should not output $ex->getMessage(). 
     // It may provide an attacker with helpful information about your code. 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    // Finally, we can retrieve all of the found rows into an array using fetchAll 
    $rows = $stmt->fetch(); 

    // This redirects the user back to the members-only page after they register 
    header("Location: ../adminindex.php"); 

    // Calling die or exit after performing a redirect using the header function 
    // is critical. The rest of your PHP script will continue to execute and 
    // will be sent to the user if you do not die or exit. 
    die("Redirecting to adminindex.php.php"); 
} 

Mon problème est la redirection! Lorsque je clique sur le bouton Supprimer, la requête est effectivement exécutée, mais ensuite elle redirige vers memberlist.php mais la page est vide !?

Pourquoi cela se produirait-il? Y at-il quelque chose qui me manque? J'ai essayé de changer l'emplacement de l'en-tête sans succès.

Merci pour l'aide!

+1

Je ne vois pas une redirection dans votre PHP – michi

+0

Avez-vous un certain type de validation de l'utilisateur sur cette page? En supprimant l'utilisateur, sont-ils en train de déconner cette session? – Pitchinnate

+0

Essayez d'utiliser des chemins HTTP absolus au lieu de chemins relatifs dans la fonction d'en-tête ('location ...'). Par exemple, au lieu de ../adminindex.php, remplacez-le par http://yoursite.com/adminindex.php –

Répondre

-1

die("Redirecting to adminindex.php.php"); ?? Pourquoi n'utilisez-vous pas un interrupteur? comme ceci:

switch($action){ 
    case 'delete': 
     //your code here 
    break; 
    case 'edit': 
     //your code here 
    break; 
} 

et faire le bouton Supprimer:

echo $row['username'] ."<a href=page.php?action=delete&id=".$row['id']."><img src=some fancy img></a>"; 
+0

Je préférerais rester à l'écart des déclarations de cas. Pour le bouton Supprimer, pourquoi écrivez-vous $ row ['nom d'utilisateur']? – Corey123456

+0

Je pensais qu'il voulait le bouton Supprimer après l'autre sortie. Juste un exemple. Mais tu as raison, maintenant que j'ai regardé de plus près, il vaudrait mieux faire si (isset – Matheno