2017-02-11 4 views
0

Ich legte alle Ausgabe von Formularen in einem während Schleife, aber jedes Mal, wenn ich versuche zu löschen, hört es auf zu arbeiten. Meine Datenbank hat eine mehr, die id ist, die einzigartig ist. Ich versuche, mit der ID Feld zu löschen, aber kein Fehler zeigt und es funktioniert auch nicht. Wenn ich Code in die setzen, während Schleife es durch eigene löscht und Nachrichten eins nach dem anderen zeigt. Wie kann ich es außerhalb der Schleife löschen lassen?Datensatz nicht löschen aus der Datenbank nach dem Absenden des Formulars

<?php 
    session_start(); 
?> 

<html> 
<body> 

<?php 
    require_once 'login.php'; 
    $connection = new mysqli($db_hostname, $db_username, $db_password, $db_database); 
    if (!$connection) 
     die("unable to connect to mysqli:" . mysqli_error()); 

    mysqli_select_db($connection, "dbase1") or die("db not selected" . mysqli_error()); 

    $sql = " SELECT * FROM tab"; 
    $result = $connection->query($sql); 

    if ($result->num_rows > 0) { 

     while ($row = $result->fetch_assoc()) { 
?> 
    <form class="boxed" style ="border: 4px solid black ; text-align: center; action ="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

    <h1> Message </h1> 

    <?php echo "<br>" . "Name: " . $row["name"] . "<br>" . " Email : " . $row["email"] . "<br>" . "Phone # " . $row["phone"] . "<br>" . "Message : " . $row["text"] . "<br>"; ?> 
    <input type="submit" class="button" name="delete" value="delete" style =" background-color: grey; 
     border: none; 
     color: white; 
     padding: 15px 70px; 
     margin: 15px 0px; 
     cursor: pointer;"/>  
    </form> 
<?php 

     } 
    } 


    if (isset($_POST['delete'])) { 
     echo "hry"; 

     $sql = " DELETE FROM tab WHERE id=" . $row["id"]; 
     $result = $connection->query($sql); 
    } 
?> 
</body> 
<html> 
+1

Das erste, was - bitte Ihren Code formatiert werden. Was du gepostet hast, ist schrecklich. Sie müssen lernen, wie die Formularübermittlung funktioniert. Sie erstellen Formular in einer Schleife, aber das Formular übermittelt keine Daten außer Senden-Schaltfläche. Woher weißt du, welcher Datensatz gelöscht werden soll? Überprüfen Sie diese http://www.w3schools.com/php/php_forms.asp verbessern Sie Ihren Code und ich werde helfen. –

+0

Entschuldigung, ich bin Anfänger in PHP, aber was Sie vorschlagen, ich bin stecken Sie brauchen mich, um den Code einzurücken? –

+0

gibt es sonst noch so eine while-Schleife um mehrere Datenbankeinträge mit einem Löschbutton zu holen und ja nochmal Danke für Hilfe! –

Antwort

0

Auf jeden Fall sollten Sie besser Ihren Code zu formatieren, verwenden gleiche Angebote für denselben Zweck und nicht ' mischte vs ", verwenden Sie Einzüge Code lesbar zu machen. Versuchen Sie auch, die Verwendung von Inline-Stilen zu vermeiden, und verwenden Sie stattdessen Klassen zum Formatieren.

Um die Funktionalität selbst - müssen Sie einige "Identifikation" von dem, was Sie löschen möchten, durch Vorlage des Formulars. Wie weiß das Skript, welcher Datensatz gelöscht werden soll, wenn alle Formulare identisch sind? Denken Sie auch darüber nach, warum Sie den Datensatzlöschcode an den Anfang des Skripts setzen und nicht bis zum Ende. In Ihrem Szenario: Sie klicken auf Löschen, das Skript zeigt wieder alle Datensätze (Formulare) an und löscht dann einen von ihnen (so zeigt es im Grunde das Roceord an, das nicht mehr existiert). Wenn der Datensatzlöschcode am Anfang ist, wird der Datensatz gelöscht und dann zeigt die Schleife, was sie tun soll.

Diese alle sind Grundlagen, so sollten Sie sich mehr wie HTML & PHP Arbeit ...

Verbesserte und funktionalen Code studieren:

<?php 
require_once 'login.php'; 
$connection = new mysqli($db_hostname, $db_username, $db_password, $db_database); 
if (!$connection) { 
    die('unable to connect to mysqli:' . mysqli_error()); 
} 
//not neccesary when the db is selected during connection 
//mysqli_select_db($connection, 'dbase1') or die('db not selected' . mysqli_error()); 

// submited form process 
if (isset($_POST['submit']) && $_POST['submit'] == 'delete') { 

    echo "hry"; 

    $sql = 'DELETE FROM tab WHERE id=' . $_POST['id']; 
    $result = $connection->query($sql); 

} 
?> 

<html> 
<body> 
    <?php 
    $sql = 'SELECT * FROM tab'; 
    $result = $connection->query($sql); 

    if ($result->num_rows > 0) { 
     while ($row = $result->fetch_assoc()) { 

      echo '<h1> Message </h1>'; 
      echo '<br>' . 'Name: ' . $row['name']; 
      echo '<br>' . ' Email: ' . $row['email']; 
      echo '<br>' . ' Phone # ' . $row['phone']; 
      echo '<br>' . ' Message: ' . $row['text']; 
      echo '<br>'; 

      echo '<form class="boxed" action="' . $_SERVER['PHP_SELF'] . '" method="post" style="...">'; 
      echo '<input type="hidden" name="id" value="' . $row["id"] . '" />'; 
      echo '<input type="submit" class="button" name="submit" value="delete" style="..." />'; 
      echo '</form>'; 
     } 
    } 
    ?> 
</body> 
<html> 
+0

Danke dir so sehr erstaunlich, wirklich sehr hilfreich noch einmal danke :) –

+0

ich brauche noch mehr Hilfe ich wenig wenn du kannst ich habe Probleme mit Abmeldung, wenn Sie nie etwas dagegen ich kann hier noch einmal senden Ich schätze Ihre Mühe erstaunlich! –

+0

eigentlich ist es nicht abmelden ich bin sehr schlecht auf php stuff ich meine mit code indentation Wenn Sie mit der Auflösung helfen können wäre es wieder große Hilfe –

Verwandte Themen