PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

21-02-2022, 17:04
|
Kusi_Schweiz
Registrierter Benutzer
|
|
Registriert seit: Dec 2021
Beiträge: 27
|
|
Datensatz aktiv/inaktiv setzen
Guten Abend und eine erfolgreiche neue Woche!
Ich habe Adressen mit Schaltflächen für update, klonen und löschen.
Jetzt möchte ich eine weitere Schaltfläche für aktiv/inaktiv setzen.
Wenn ich mit der Maus über die Schaltfläche fahre, wird mir wie auch bei den andern Schaltflächen unten links angezeigt, was ausgeführt wird (zum Beispiel: localhost/adr/inactive.php?id=505)
Dazu habe ich folgenden Code, aber leider werden sämtliche Datensätze geändert und nicht nur einer - was muss ich ändern?
PHP-Code:
<?php
include_once '../main.php';
if (isset($_SESSION['id'])) {
$stmt = $pdo->prepare('SELECT aktiv FROM accounts WHERE id = ?'); $stmt->execute([ $_SESSION['id'] ]); $account = $stmt->fetch(PDO::FETCH_ASSOC); $aktiv = $account['aktiv'];
if ($aktiv == 'ja') { $aktiv = 'nein'; $stmt = $pdo->prepare('UPDATE accounts SET aktiv = ?'); $stmt->execute([$aktiv]); }
if ($aktiv == 'nein') { $aktiv = 'ja'; $stmt = $pdo->prepare('UPDATE accounts SET aktiv = ?'); $stmt->execute([$aktiv]); } }
Geändert von Kusi_Schweiz (21-02-2022 um 17:07 Uhr)
|

21-02-2022, 17:19
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.875
|
|
Ein UPDATE ohne WHERE wird nun mal auf alle Datensätze angewendet.
|

21-02-2022, 22:03
|
Kusi_Schweiz
Registrierter Benutzer
|
|
Registriert seit: Dec 2021
Beiträge: 27
|
|
Ich habe den Code wie folgt angepasst:
PHP-Code:
if (isset($_GET['id'])) {
$stmt = $pdo->prepare('SELECT aktiv FROM accounts WHERE id = ?');
$stmt->execute([ $_GET['id'] ]);
$account = $stmt->fetch(PDO::FETCH_ASSOC);
$aktiv = $account['aktiv'];
if ($aktiv == 'ja') {
$aktiv = 'nein';
$stmt = $pdo->prepare('UPDATE accounts SET aktiv = ? WHERE id = ?');
$stmt->execute([$aktiv, $id]);
}
if ($aktiv == 'nein') {
$aktiv = 'ja';
$stmt = $pdo->prepare('UPDATE accounts SET aktiv = ? WHERE id = ?');
$stmt->execute([$aktiv, $id]);
}
}
Ich erhalte die Fehlermeldung dass $id nicht definiert sei und frage mich, wie muss ich konkret den Code ändern, damit nur die gewählte id-Nummer aktualisiert wird.
Das Problem scheint SELECT zu sein, denn wenn ich direkt update (ohne SELECT-Abfrage) funktioniert es. Aber ich möchte, dass mein Code sowohl fürs inaktiv setzen wie auch fürs wieder aktiv setzen funktioniert.
|

21-02-2022, 22:06
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.875
|
|
Du erstellst nirgendwo in dem Code eine Variable $id.
Schreiboperationen sollten übrigens nicht mit GET durchgeführt werden. GET ist nur zum Abfragen und nicht zum Manipulieren von Daten gedacht. Wird es falsch verwendet, kann es unschöne Nebeneffekte haben. Es gibt zum Beispiel Virenscanner oder Browser, die von sich aus ohne Zutun des Users GET-Requests machen und somit unerwünschte Schreiboperationen auslösen würden.
Deswegen sollte dafür POST und nicht GET verwendet werden.
|

21-02-2022, 22:26
|
Kusi_Schweiz
Registrierter Benutzer
|
|
Registriert seit: Dec 2021
Beiträge: 27
|
|
Zitat:
Zitat von h3ll
Du erstellst nirgendwo in dem Code eine Variable $id.
|
Das ist so, ich möchte wie im Eingangstext erwähnt: "Wenn ich mit der Maus über die Schaltfläche fahre, wird mir wie auch bei den andern Schaltflächen unten links angezeigt, was ausgeführt wird (zum Beispiel: localhost/adr/inactive.php?id=505)"
Heisst ich möchte diese id=505 "mitnehmen", so wie es bei einem reinen Update funktioniert.
Zitat:
Schreiboperationen sollten übrigens nicht mit GET durchgeführt werden. GET ist nur zum Abfragen und nicht zum Manipulieren von Daten gedacht. Wird es falsch verwendet, kann es unschöne Nebeneffekte haben. Es gibt zum Beispiel Virenscanner oder Browser, die von sich aus ohne Zutun des Users GET-Requests machen und somit unerwünschte Schreiboperationen auslösen würden.
Deswegen sollte dafür POST und nicht GET verwendet werden.
|
Danke für den Tipp.
|

22-02-2022, 10:04
|
Kusi_Schweiz
Registrierter Benutzer
|
|
Registriert seit: Dec 2021
Beiträge: 27
|
|
Ich habe die Lösung, das Update funktioniert aber nur mit $_GET['id'], nicht mit $_POST['id']
PHP-Code:
<?php
include_once '../main.php';
if (!isset($_GET['id'])) {
exit ('Kein Datensatz unter dieser ID');
}
$stmt = $pdo->prepare('SELECT aktiv FROM accounts WHERE id = ?');
$stmt->execute([$_GET['id']]);
$account = $stmt->fetch(PDO::FETCH_ASSOC);
$aktiv = $account['aktiv'];
if ($aktiv == 'ja') {
// Datensatz auf inaktiv setzen
$_POST['aktiv'] = 'nein';
$stmt = $pdo->prepare('UPDATE accounts SET aktiv = ? WHERE id = ?');
$stmt->execute([$_POST['aktiv'], $_GET['id']]);
header ('Location: saved_adr_inactive.php');
exit;
}
if ($aktiv == 'nein') {
// Datensatz auf aktiv setzen
$_POST['aktiv'] = 'ja';
$stmt = $pdo->prepare('UPDATE accounts SET aktiv = ? WHERE id = ?');
$stmt->execute([$_POST['aktiv'], $_GET['id']]);
header ('Location: saved_adr_active.php');
exit;
}
?>
Geändert von Kusi_Schweiz (22-02-2022 um 10:08 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Ähnliche Themen
|
Thema |
Autor |
Forum |
Antworten |
Letzter Beitrag |
Wie kann ich eine Auswahlliste auf Inaktiv "nicht wählbar" setzen?
|
SystemError |
HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS |
3 |
05-08-2008 23:50 |
Formular Datensatz neu anlegen oder Datensatz update machen.
|
maffy |
Archiv / Trash |
7 |
20-03-2005 20:24 |
Aktiv / Inaktiv
|
bernie.agc |
Apps und PHP Script Gesuche |
4 |
08-12-2004 14:42 |
[JS] Alle Checkboxen aktiv / inaktiv
|
Seccho |
HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS |
2 |
28-04-2004 14:58 |
standby-modus bei meinem laptop inaktiv...
|
Metallica |
Windows (Client/Server) |
1 |
22-04-2003 20:10 |
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Homepagetools 2022
Kostenloses Gästebuch und Homepagetools für die eigene Homepage.
Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.
29.04.2022
freepler | Kategorie: PHP/ Gaestebuch
|
SF-Shopsystem V1.0
Hier haben wir ein einzigartiges Shopsystem in PHP.
Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich.
Ausführliche Beschreibung weiter unten.
28.04.2022
Speedcrawler | Kategorie: PHP/ Shops
|
Anzeigen Markt mit PayPal Bezahl System
Anzeigen Markt Script
mit PayPal Bezahl System
Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal
seine Anzeigen zu schalten, je nach seinem Guthaben.
27.04.2022
Webace_de | Kategorie: PHP/ Anzeigenmarkt
|
Alle PHP Scripte anzeigen
|