php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

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.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-02-2022, 17:04
Kusi_Schweiz
 Registrierter Benutzer
Links : Onlinestatus : Kusi_Schweiz ist offline
Registriert seit: Dec 2021
Beiträge: 27
Kusi_Schweiz befindet sich auf einem aufstrebenden Ast
Standard 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)
Mit Zitat antworten
  #2 (permalink)  
Alt 21-02-2022, 17:19
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.883
h3ll wird schon bald berühmt werden
Standard

Ein UPDATE ohne WHERE wird nun mal auf alle Datensätze angewendet.
Mit Zitat antworten
  #3 (permalink)  
Alt 21-02-2022, 22:03
Kusi_Schweiz
 Registrierter Benutzer
Links : Onlinestatus : Kusi_Schweiz ist offline
Registriert seit: Dec 2021
Beiträge: 27
Kusi_Schweiz befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt 21-02-2022, 22:06
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.883
h3ll wird schon bald berühmt werden
Standard

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.
Mit Zitat antworten
  #5 (permalink)  
Alt 21-02-2022, 22:26
Kusi_Schweiz
 Registrierter Benutzer
Links : Onlinestatus : Kusi_Schweiz ist offline
Registriert seit: Dec 2021
Beiträge: 27
Kusi_Schweiz befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
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.
Mit Zitat antworten
  #6 (permalink)  
Alt 22-02-2022, 10:04
Kusi_Schweiz
 Registrierter Benutzer
Links : Onlinestatus : Kusi_Schweiz ist offline
Registriert seit: Dec 2021
Beiträge: 27
Kusi_Schweiz befindet sich auf einem aufstrebenden Ast
Standard

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)
Mit Zitat antworten
Antwort

Lesezeichen


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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

OnPremise versus Cloud - das richtige System finden
Wir beleuchten in diesem Artikel, die Vor- und Nachteile für Cloud oder OnPremise Systemen. Und warum es definitiv Zeit wird in die Cloud zu wechseln.

09.05.2022 | julia_mjr

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni


 

Aktuelle PHP Scripte

MyPHPlib-Bibliotheksverwaltung

MyPHPlib ist eine Scriptsammlung, mit der die Bibliotheksverwaltung incl. Ausleihe und Recherche gelingt. Die Scriptsammlung wird seit Mitte 2005 entwickelt und ist besonders an den Bedürfnissen von Schulen angepasst.

11.08.2022 RobertG | Kategorie: PHP/ Management
responsive vertikales Menu

Diese Menu basiert auf php, jQuery, css und ajax. Wer sein Menu mit nested sets vertikal realisieren will, findet darin eine gute Lösung.

11.08.2022 COVISIONMEDIA | Kategorie: JAVASCRIPT/ Navigation
VIZUKA Affiliate CMS & Preisvergleich Portal ansehen VIZUKA Affiliate CMS & Preisvergleich Portal

Produktkalalog mit Preisvergleichfunktion, Gutscheinverwaltung und umfangreichem CMS. Live-Produktdaten! Nischen- oder Allg. Produktkatalog von hunderten Shops und über 60 Millionen Produkte mit wenigen Klicks erstellen. Mitglieder- & Werbekundenbereich.

10.08.2022 VIZUKA | Kategorie: PHP/ Affiliate-Programme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:53 Uhr.