PDA

Bekijk Volledige Versie : [PHP] MySQL record resetten naar standaardwaarden



Easyracks
06/12/05, 18:53
Hi,

Is het mogelijk om via een link een waarde van een record in een MySQL database weer zijn standaardwaarden te geven? Om het iets te verduidelijken:

ik heb nu een manier om dmv 1 klik een record te verwijderen uit een MySQL database:



echo "<a href=index.php?id=" . $data['id'] . "&action=del>verwijder</a>";

Code in die pagina, na het connectie maken met de database en voor het uitvoeren van de query:


if($_GET['action'] == "del") {
mysql_query("DELETE FROM tabelnaam WHERE id=$_GET['id']");
}

Wat er hier dus gebeurt, is dat als ik op de link 'verwijder' klik, het record met betreffende ID meteen uit de database verwijderd wordt. Wat ik nu wil, is dat het record na 1 klik niet verwijderd wordt, maar z'n standaardwaarden weer krijgt.

Iemand?

Groet, Peter

Pinocchi
06/12/05, 19:06
Iets in de trant van



if($_GET['action'] == "reset") {

mysql_query("DELETE FROM tabelnaam WHERE id='".addslashes($_GET['id'])."' ");
mysql_query("Insert into tabelnaam (id) VALUES('".addslashes($_GET['id'])."') ");
}

Thiaz
06/12/05, 19:13
Origineel geplaatst door Pinocchi
Iets in de trant van

[..]

Of je gebruikt een UPDATE (http://www.tizag.com/mysqlTutorial/mysqlupdate.php) query, lijkt me in dit geval wat efficienter

CharlieRoot
06/12/05, 19:13
die klopt ook niet.. dat gaat niet werken..


Wat is de standaard waarde? sla je die ergens op of hou je dat ergens uberhaupt bij?

Als ik zo bekijk wat je doet; na het verwijderen heb je geen gegevens meer om terug te halen en dus kun je niets 'resetten'.

Stel even dat het een 0/1 is. Je wilt hem op 0 zetten (alle records met 0 laat je dus in je list, op je pagina, niet zien).



function swap($id) {

$q = mysql_query("SELECT `status` FROM `tabel` WHERE `id` = '".$id."'");
$f = mysql_fetch_assoc($q);

switch($f["status"]) {

case 0:
$new = 1;
break;

case 1;
$new = 0;
break;

}

mysql_query("UPDATE `tabel` SET `status` = '".$new."' WHERE `id` = '".$id."'");

}

// roep hier je functie SWAP aan en geen hem de GET value

Easyracks
06/12/05, 19:23
De standaardwaarde is de waarde die ik in PHPMyAdmin invoer als standaardwaarde. Ik heb ook wel aan update() gedacht, maar moet ik dan niet de waarden in m'n script meegeven? Of is het zo dat, als ik geen waarden meegeef, de velden wel de standaardwaarden worden gevuld?

Glenn
06/12/05, 19:24
Origineel geplaatst door Easyracks
Of is het zo dat, als ik geen waarden meegeef, de velden wel de standaardwaarden worden gevuld? Je haalt de woorden uit m'n mond! Dat is inderdaad zo!

Easyracks
06/12/05, 20:16
Ik heb het opgelost door de standaardwaarden in het script mee te geven:


if($_GET['action'] == "reset") {
mysql_query("DELETE FROM tabelnaam WHERE id=$id");
mysql_query("INSERT into tabelnaam (id, veld2, veld3, veld4, veld5) VALUES ('" . $_GET['id'] . "', 'standaardwaarde2', 'standaardwaarde2', '..3', '...4')");
}

Bedankt voor het meedenken!

Glenn
06/12/05, 20:21
Dat kan ook ;)

CharlieRoot
06/12/05, 22:31
Tip; even je get's controleren.. dit is nogal "injection" gevoelig :)

Easyracks
06/12/05, 23:01
Ach tja, het script is toch alleen voor mij en het staat in een beveiligde map. Maar ik zal het toch wel moeten veranderen, want het werkt niet meer met PHP5.

Mikey
07/12/05, 00:03
als je script werkt registerglobals disablen :)

Pinocchi
07/12/05, 00:22
Ik ging ervan uit dat de standaard waarden de default values waren die je bij het aanmaken van de tabel gebruikt had. Is dit niet het geval dan werkt mijn suggestie inderdaad niet. Anders werkt ie prima