Löschbutton und key id?

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

Fr3ddy

Mitglied
17 April 2008
215
0
16
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.
 
B

bdt600

Guest
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
 

_R_A_L_F_

Mitglied
16 Februar 2014
172
4
18
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.
 
  • Like
Reaktionen: Fr3ddy
B

bdt600

Guest
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.
 

Fr3ddy

Mitglied
17 April 2008
215
0
16
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?
 

_R_A_L_F_

Mitglied
16 Februar 2014
172
4
18
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 ;)
 

Fr3ddy

Mitglied
17 April 2008
215
0
16
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?
 

Fr3ddy

Mitglied
17 April 2008
215
0
16
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);
?>
 

_R_A_L_F_

Mitglied
16 Februar 2014
172
4
18

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:
  • Like
Reaktionen: Fr3ddy

Fr3ddy

Mitglied
17 April 2008
215
0
16
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
 

_R_A_L_F_

Mitglied
16 Februar 2014
172
4
18
Eindeutig ein Syntax Fehler. Schreib deinen SQL - Befehl mal so um, wie ich es dir gerade als Beispiel geschrieben habe
 

Fr3ddy

Mitglied
17 April 2008
215
0
16
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
 

Fr3ddy

Mitglied
17 April 2008
215
0
16
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'] ."', ";
 

_R_A_L_F_

Mitglied
16 Februar 2014
172
4
18
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:

Fr3ddy

Mitglied
17 April 2008
215
0
16
Meinst du so?
PHP:
$sql = " INSERT INTO table_name";
$sql .= " SET ";
$sql .= " name   ='". $name = "Peter" ."', ";
 

scbawik

Senior HTML'ler
14 Juli 2011
2.552
448
83
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" ."', ";
 
Werbung: