Anzeige

Artikel löschen aus Auswahl


#1
Hallo zusammen,

ich stehe auf der Leitung und komme nicht weiter. Ich arbeite an einem PHP Script das mir ein Select-Auswahl zur Verfügung stellt und aus dem ich dann Artikel löschen soll.
Die Select-Auswahl bekomme ich hin. Auch den Button zum löschen, aber ich bekomme die Variable aus der Select Auswahl nicht an den Button übergeben.

Hier meine Scripte:

e3_artikel_loeschen.php

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Einsendeaufgabe Nr.3 Artikel löschen</title>
</head>
<body>
<?php
   class artikel {
private $tabelle = "artikel";
public function loeschen($id) {
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
     $sql = "DELETE FROM " .$this->tabelle ." WHERE anr = :anr";
     if ($stmt = $pdo -> prepare($sql)) {
        $stmt->bindParam(':anr', $id);
        $stmt -> execute();
      }
}
public function einfuegenSelect($tab, $val, $text, $def)
{
    $s = "<select name=\"" .$val ."\" id=\"" .$val ."\">";
      
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
    $sql = "SELECT " .$val .", " .$text ." FROM " .$tab;
    if ($stmt = $pdo -> prepare($sql)) {
      
        $stmt -> execute();
        while ($z = $stmt -> fetch()) {
            $s = $s ."<option value=\"". $z[0] ."\"";
            if($z[0] == $def){
                $s = $s ." selected";
            }
            $s = $s .">" .$z[0] ." | " .$z[1]."</option>";
        }
        $s = $s ."</select>";
        return $s;     
    }
    else {
        return false;
    }
 }
}
    ?>
<?php
$artikel = new artikel();
  
echo "Artikel: " . $artikel->einfuegenSelect("artikel", "anr", "name", NULL);
    ?>
<p><a class="button" href="loeschen.php?anr=<?php echo ':anr'; ?>">Artikel löschen</a></p>


</body>
</html>
und der Code für das loeschen.php Script

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Artikel löschen</title>
<?php
    require_once("e3_artikel_loeschen.php");
?>
</head>

<body>

<?php
    if(isset($_GET["anr"])) {
    $artikel = new artikel();
    $artikel -> loeschen($_GET["anr"]);
    echo "<h2>Artikel gelöscht</h2>";
    }
    header("refresh:3; url=e3_artikel_loeschen.php");
?>
</body>
</html>
Das Problem habe ich hiermit (im e3_artikel_loeschen.php Script

PHP:
<p><a class="button" href="loeschen.php?anr=<?php echo ':anr'; ?>">Artikel löschen</a></p>
 

Sempervivum

Erfahrenes Mitglied
#2
Ich sehe da zwei Möglichkeiten:
  • Dieses Select in ein Formular einbetten und mit einem Submit-Button abschicken. Dann hast Du den Wert der Auswahl automatisch in einer POST- oder GET-Variablen (sofern Du dem Select einen Namen gibst).
  • oder den Wert mit Ajax an das Löschen-Skript senden
 
#3
Danke für die Antwort.
Mit Ajax kann ich den Wert nicht übergeben, da das nicht die Aufgabe ist.

Bei der ersten Variante habe ich offensichtlich einen dicken Stein vorm Kopf. Ich komm damit einfach nicht hin. Ich hab die Auswahlliste und ich hab den Button, aber beim Rest setzt es irgendwie aus bei mir. Ich hänge da jetzt seid einer Woche dran und finde den passenden weg nicht.

hc_033.png
Trage ich hier nach dem echo ein "5" ein löscht es mir auch den Eintrag 5 aus der DB.

PHP:
<p><a class="button" href="loeschen.php?anr=<?php echo "5"; ?>">Artikel löschen</a></p>
 

Sempervivum

Erfahrenes Mitglied
#4
Dann versuche ich mal, es ausführlicher zu erklären:
In deinem e3_artikel_loeschen.php generierst Du ja ein Select. Diesem musst Du einen Namen geben, damit der selektierte Wert in eine GET-/POST-Variable gelangt. Außerdem musst Du das Select in ein Formular einbetten, indem Du zusätzlich vor dem Select das öffnende <form action="
loeschen.php">
und dahinter einen Submit-Button und dann das schließende </form> generierst. Das Ganze ersetzt dann den a-href-Buttton. Wenn Du mit Formularen noch nicht vertraut bist, informiere dich darüber, z. B. hier:
HTML/Formulare – SELFHTML-Wiki
 
#5
Danke für die Antwort. Ich weiß das wirklich zu schätzen.
Ich denke ich kann mir derzeit nicht vorstellen wie ich dem Select Element einen namen geben soll und es dann mit GET-/POST verarbeite.

Ich kapier es einfach nicht....vieleicht weil ich da in irgendwas verrannt habe und seid ner Woche nur frustriert bin.

Sorry.....
 
#6
Ich hab jetzt folgendes gebaut:

HTML:
<form action="loeschen.php">
  <label>Artikel:
    <select name=artikel><?php $artikel->einfuegenSelect("artikel", "anr", "name", NULL);?></select>
  </label>
<button type="submit" href="loeschen.php?anr=<?php echo "7" ?>">Datensatz löschen</button>
</form>
Allerdings bleibt meine Auswahl jetzt leer....

hc_034.png

Wie bekomme ich denn jetzt die Daten aus dem public function einfuegenSelect($tab, $val, $text, $def) da rein?
 
#7
Ich nochmal etwas rumgebaut.... und mich jetzt vermutlich komplett verrannt.

PHP:
<form action="loeschen.php" method="post">
<label>Artikel:
<select name="anr" size="1">
    <option>
  <?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL); ?>
            </option>
            </select>
  </label>
<input type="submit" name="submit" value="Datensatz löschen" />
</form>
<?php
if(isset($_POST['submit'])){
$selected_val = $_POST['anr'];  
echo "<h1>Artikel gelöscht</h1>" .$selected_val;  
}
?>
hc_035.png
 

EuroCent

KlappStuhl 2.0
#8
Du musst um deine Funktion
<?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL); ?>
einfach nur ein Form-Tag setzen.

So in etwa:
PHP:
<form action="loeschen.php" method="post">
<label>Artikel:
  <?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL); ?>
  </label>
<input type="submit" name="submit" value="Datensatz löschen" />
</form>
<?php
if(isset($_POST['submit'])){
$selected_val = $_POST['anr']; 
echo "<h1>Artikel gelöscht</h1>" .$selected_val; 
}
?>
Das was du machst ist, in ein option-tag eine weitere select-box und das funktioniert so nicht :)
 
#9
Danke dir für deine Antwort. Das habe ich mittlerweile auch hin bekommen und ich denke ich hab es begriffen.

PHP:
<form action="loeschen.php" method="post">
<label>Artikel:
<?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL);?>
</label>
<input type="submit" name="submit"  value="Datensatz löschen" />
</form>
<?php
if(isset($_POST['submit'])){
$selectauswahl = $_POST['anr'];
echo "<h1>Artikel gelöscht</h1>" .$selectauswahl;
}
?>
Allerdings löscht es mir den ausgewählten Artikel nicht aus der Datenbank.......

Die loeschen.php Datei lädt er, da die Seite nach 3 Sekunden refrescht wird.
Die passende Nummer gibt er mit auch aus.

hc_037.png
 
#13
Gerne doch:

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Artikel löschen</title>
<?php
    require_once("e3_artikel_loeschen.php");
?>
</head>

<body>

<?php
    if(isset($_GET["anr"])) {
    $artikel = new artikel();
    $artikel -> loeschen($_GET["anr"]);
    echo "<h2>Artikel gelöscht</h2>";
    }
    header("refresh:20; url=e3_artikel_loeschen.php");
 
?>
</body>
</html>
 
#15
Ja du hast recht sorry.... hier die beiden Dateien.

das ist das Hauptsript:
e3_artikel_loeschen.php

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Einsendeaufgabe Nr.3 Artikel löschen</title>
</head>
<body>
<?php
   class artikel {
private $tabelle = "artikel";
public function loeschen($id) {
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
     $sql = "DELETE FROM " .$this->tabelle ." WHERE anr = :anr";
     if ($stmt = $pdo -> prepare($sql)) {
        $stmt->bindParam(':anr', $id);
        $stmt -> execute();
      }
}
public function lesenDatensatz($id) {
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
        if ($stmt = $pdo->prepare ( "SELECT gnr, anr, name, preis FROM " . $this->tabelle . " WHERE anr=:anr" )) {
            $stmt->bindParam ( ':anr', $id );
            $stmt->execute ();
            return ($stmt ->fetch(PDO::FETCH_ASSOC));
        } else {
            return false;
        }
}
public function einfuegenSelect($tab, $val, $text, $def)
{
    $s = "<select name=\"" .$val ."\" id=\"" .$val ."\">";
      
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
    $sql = "SELECT " .$val .", " .$text ." FROM " .$tab;
    if ($stmt = $pdo -> prepare($sql)) {
      
        $stmt -> execute();
        while ($z = $stmt -> fetch()) {
            $s = $s ."<option value=\"". $z[0] ."\"";
            if($z[0] == $def){
                $s = $s ." selected";
            }
            $s = $s .">" .$z[0] ." | " .$z[1]."</option>";
        }
        $s = $s ."</select>";
        return $s;     
    }
    else {
        return false;
      
    }
 }
}
?>
<?php
    
$artikel = new artikel();
?>
<form action="loeschen.php" method="post">
<label>Artikel:
 <?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL);?>
</label>
<input type="submit" name="submit"  value="Datensatz löschen">
</form>
<?php
if(isset($_POST['submit'])){
$selectauswahl = $_POST['anr']; 
echo $selectauswahl;
  
}

?>


</body>
</html>
und die loeschen.php

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Artikel löschen</title>
<?php
    require_once("e3_artikel_loeschen.php");
?>
</head>

<body>

<?php
    if(isset($_GET["anr"])) {
    $artikel = new artikel();
    $artikel -> loeschen($_GET["anr"]);
    echo "<h2>Artikel gelöscht</h2>";
    }
    header("refresh:20; url=e3_artikel_loeschen.php");
 
?>
</body>
</html>
 
#16
Ich hab es:

Es ist zwar jetzt alles in einer Datei aber egal....

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8" />
    <title>Einsendeaufgabe Nr.3 Artikel löschen</title>
</head>
<body>
<?php
   class artikel {
private $tabelle = "artikel";
public function loeschen($id) {
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
     $sql = "DELETE FROM " .$this->tabelle ." WHERE anr = :anr";
     if ($stmt = $pdo -> prepare($sql)) {
        $stmt->bindParam(':anr', $id);
        $stmt -> execute();
      }
}
public function lesenDatensatz($id) {
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
        if ($stmt = $pdo->prepare ( "SELECT gnr, anr, name, preis FROM " . $this->tabelle . " WHERE anr=:anr" )) {
            $stmt->bindParam ( ':anr', $id );
            $stmt->execute ();
            return ($stmt ->fetch(PDO::FETCH_ASSOC));
        } else {
            return false;
        }
}
public function einfuegenSelect($tab, $val, $text, $def)
{
    $s = "<select name=\"" .$val ."\" id=\"" .$val ."\">";
      
try {
    $pdo = new PDO ( 'mysql:dbname=bestelldatenbank;host=localhost;charset=utf8', 'root', '' );
} catch ( PDOException $e ) {
    die ( $e->getMessage () );
}   
    $sql = "SELECT " .$val .", " .$text ." FROM " .$tab;
    if ($stmt = $pdo -> prepare($sql)) {
      
        $stmt -> execute();
        while ($z = $stmt -> fetch()) {
            $s = $s ."<option value=\"". $z[0] ."\"";
            if($z[0] == $def){
                $s = $s ." selected";
            }
            $s = $s .">" .$z[0] ." | " .$z[1]."</option>";
        }
        $s = $s ."</select>";
        return $s;     
    }
    else {
        return false;
      
    }
 }
}
?>
<?php
    
$artikel = new artikel();
?>
<form action="e3_artikel_loeschen.php" method="post">
<label>Artikel:
 <?php echo $artikel->einfuegenSelect("artikel", "anr", "name", NULL);?>
</label>
<input type="submit" name="submit"  value="Datensatz löschen">
</form>
<?php
if(isset($_POST['submit'])){
$selectauswahl = $_POST['anr'];
$artikel->loeschen($_POST['anr']);
echo "<h2>Artikel " .$selectauswahl ." gelöscht</h2>";
header("refresh:3; url=e3_artikel_loeschen.php");
}
?>
</body>
</html>
 
Anzeige
Anzeige