• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Löschbutton und key id?

Fr3ddy

Mitglied
Hi,

ich habe folgendes php script das mir eine ausgabe liefert:

PHP:
$con=mysqli_connect("host","user","pw","db_name");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM kinderkleider");
echo '<div class="row">';
echo '<div class="item_head">Nummer</div>';
echo '<div class="item_head">Name</div>';
echo '<div class="item_head adress">Adresse</div>';
echo '<div class="item_head">Email</div>';
while($row = mysqli_fetch_array($result))
{
    echo '<div class="row">';
    echo '<div class="item">';
    echo $row['nummer'] ;
    echo '</div>';
    echo '<div class="item">';
    echo $row['name'] ;
    echo '</div>';
    echo '<div class="item adress">';
    echo $row['adresse'] ;
    echo '</div>';
    echo '<div class="item">';
    echo $row['email'] ;
    echo '</div>';
    echo '</div>';
}

mysqli_close($con);
?>

Und dieses script liest die daten ein:

PHP:
$sql="INSERT INTO tabelle (id, name, adresse, nummer, email)
VALUES
('', '$_POST[name]','$_POST[adresse]','$_POST[nummer]','$_POST[email]')";

if (!mysqli_query($con,$sql))
{
    die('Error: ' . mysqli_error($con));
}
echo "Danke, Ihr Eintrag wurde gespeichert.";

mysqli_close($con);
?>

Wie erstelle ich jetzt einen löschbutton für jeden eintrag im ersten script?
Brauche ich da nicht eine id für jeden eintrag, wenn ja wie erstelle ich die?

Danke schon mal im vorraus.
 
Werbung:
Die ID sollte in der DB stehen. In der regel baut man eine Spalte "id" ein und setzt diese auf autoincrement. Somit übernimmt dann MySQL die Verwaltung der ID und du kannst mit dieser ID auf jeden Datensatz gezielt zugreifen.

Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q-sql-select.html

Außerdem ist dein Insert nicht gegen SQL-Injections geschützt! Siehe in der Doku unter mysqli_real_escape_string
 
Werbung:
Die ID ist eine Spalte in deiner MySQL Tabelle die das Attribut: AUTO_INCREMENT hat <- bedeutet jeder neue Eintrag bekommt eine fortlaufende Nummer.

Die Löschfunktion kannst du so machen:
Über die Schleife gibts du ja die einzelnen Inhalte der Tabelle mit aus. Füge hierzu einfach noch einen Link/Button mit hinzu der den du die Einträge dann löscht.

z.B.
PHP:
while($row = mysqli_fetch_array($result))
{
    echo '<div class="row">';
    echo '<div class="item">';
    echo $row['nummer'] ;
    echo '</div>';
    echo '<div class="item">';
    echo $row['name'] ;
    echo '</div>';
    echo '<div class="item adress">';
    echo $row['adresse'] ;
    echo '</div>';
    echo '<div class="item">';
    echo $row['email'] ;
    echo '</div>';
    echo '<div class="loesch">';
    echo '<a href="http://www.deinehome.de/loeschen.php?id='.$row['id'] .' ">Eintrag löschen</a>';
    echo '</div>';
    echo '</div>';

In der Seite loeschen.php dann mittels:

PHP:
 $_GET['id']

im SQL - Befehl das Löschen veranlassen.
 
Wobei gesagt werden sollte, dass diese Vorgehensweise nur Admins zur Verfügung stehen sollte. Im offenen Netz ist sonst deine DB sehr schnell leer, wenn dich jemand ärgern will.
 
Danke schon mal, ja ist nur eine temporere intranet sache. Ich muss mir mal durchlesen wie das löschen dann funktioniert.
Besteht die möglichkeit, dass ich die aussagen der eingabemaske "Danke, Ihr eintrag wurde gespeichert." und das bestätigen des löschens in einer jquery lightbox anzeigen kann?
 
Werbung:
Es spielt keine Rolle ob Intranet oder Internet. Du hast ja nach einer Lösung für das Löschen eines Eintrags aus der Datenbank Tabelle gefragt ;)
 
Mein eingabefeld schaut jetzt so aus:
HTML:
<form method="post" action="formular.php">
    <input type="text" placeholder="Nummer" name="nummer">
    <input type="text" placeholder="Name" name="name">
    <input type="text" placeholder="Adresse" name="adresse">
    <input type="text" placeholder="Email" name="email">


    <input id="submitme" class="right send" rel="group" value="Eintragen" type="submit">
</form>
Über dieses script wollte ich jetzt die formular.php aufrufen, dass klappt zwar aber die werte in der datenbank bleiben leer und werden nicht übergeben:

Code:
<script type="text/javascript">
        $(document).ready(function() {
            $("#submitme").fancybox({
                type : "iframe",
                href : "/formular.php"
            });
        });
    </script>
Gibt es dafür eine andere lösung?
 
Werbung:
Das wäre dieser:
PHP:
$con=mysqli_connect("host","user","pw","db_name");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO table (id, name, adresse, nummer, email)
VALUES
('', '$_POST[name]','$_POST[adresse]','$_POST[nummer]','$_POST[email]')";

if (!mysqli_query($con,$sql))
{
    die('Error: ' . mysqli_error($con));
}
echo "Danke, Ihr Eintrag wurde gespeichert.";

mysqli_close($con);
?>
 

muss auf alle Fälle $_POST['name'] heißen und ein SET fehlt noch ;)

und dann würde ich das ganze so schreiben:

PHP:
$sql = " INSERT INTO table";
$sql .= " SET ";
$sql .= " name   ='". $_POST['name'] ."', ";
$sql .= " adresse  ='". $_POST['adresse'] ."', ";
$sql .= " nummer  ='". $_POST['nummer'] ."', ";
...
 
Zuletzt bearbeitet:
Also wenn ich jetzt alles ändere:
PHP:
$sql="INSERT INTO kinderkleider (id, name, adresse, nummer, email)
VALUES
('', $_POST['name'],$_POST['adresse'],$_POST['nummer'],$_POST['email'])";

Bekomme ich diesen fehler:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /formular.php on line 72
 
Werbung:
Jetzt bekomme ich diese fehlermedlung:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
Werbung:
Ich habe deine einfach nur kopiert und den tabellenname geädnert:
PHP:
$sql = " INSERT INTO table_name";
$sql .= " SET ";
$sql .= " name   ='". $_POST['name'] ."', ";
$sql .= " adresse  ='". $_POST['adresse'] ."', ";
$sql .= " nummer  ='". $_POST['nummer'] ."', ";
 
Kannst auch ganz einfach mal die Variablen durch feste Werte z.B.
$name = "Peter";

ersetzen und schaun was er dann ausgibt.

Ansonsten würde ich das ganze so aufbauen:

Die Verbindung:
PHP:
<?php

$db_link = mysqli_connect ('localhost','root','pw','dbname');
                    
if ( ! $db_link )
{
die('Keine Verbindung möglich: '.mysql_error());
}
?>

und den SQL - Befehl so machen:
PHP:
// Deinen SQL-Befehl
$sql = " INSERT INTO table_name";
$sql .= " SET ";
$sql .= " name   ='". $_POST['name'] ."', ";
$sql .= " adresse  ='". $_POST['adresse'] ."', ";
$sql .= " nummer  ='". $_POST['nummer'] ."', ";

// ausführen des mysql-Befehls
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
    die('Ungültige Abfrage: ' . mysql_error());
}
else
{
echo "Eintrag erfolgreich gespeichert";
}

Muss auf alle Fälle klappen ;)
 
Zuletzt bearbeitet:
Werbung:
Meinst du so?
PHP:
$sql = " INSERT INTO table_name";
$sql .= " SET ";
$sql .= " name   ='". $name = "Peter" ."', ";

Einen Syntax-Error sollte man schon selber lösen können…

Probier mal "echo $sql;".
Dann siehst du das deine Query einen Syntax-Error hat - einen nutzlosen Beistrich am Ende …

Und was soll bitte das bringen?
PHP:
$sql .= " name  ='". $name = "Peter" ."', ";
 
Zurück
Oben