hallo,

Ik wil een update functie maken voor het updaten voor een profiel in mijn DB. Nu heb ik allen 20 velden en wil dus een functie maken waar bij ik kan zeggen welke data ik mee stuur.

Voorbeeld:

<?php

function send_data($a, $b, $c, $d, $e, $id){
$sql = "UPDATE table SET a=$a, b=$b, c=$c, d=$d, e=$e WHERE id = $id";
mysql_query($sql);
}

?>

Nu wil ik deze functie kunnen aanroepen en bijv allen A en D mee geven

Kan dit ? zo ja hoe ?
Door de variabele alvast in te vullen kun je deze optioneel maken
Controleer dan vervolgens wel in je function of de variabele die je wilt gebruiken leeg zijn.

Tips: mysql_* is deprecated. Gebruik liever MySQLi of PDO. Ik neem aan dat het alfabet als voorbeeld is, maar altijd duidelijke namen gebruiken.

<?php
function send_data($a='', $b='', $c='', $d='', $e='', $id=''){
}
?>
Hoi Peter,

Je zou eens kunnen kijken naar een Ternary Operator. http://www.php.net/manual/en/language.operators.comparison.php

Je query zal wel veel groter worden maar ook flexibeler.


<?php
$sql = "UPDATE table SET " . ((isset($a) == true) ? "a=$a, ": "") . ((isset($b) == true) ? "b=$b, ": "") . ((isset($c) == true) ? "c=$c, ": "") . "WHERE id = $id";
?>


Bovenstaande code is een indicatie om je op weg te helpen.

Succes!

Michael - op 15/04/2014 15:54:29

Door de variabele alvast in te vullen kun je deze optioneel maken
Controleer dan vervolgens wel in je function of de variabele die je wilt gebruiken leeg zijn.

Tips: mysql_* is deprecated. Gebruik liever MySQLi of PDO. Ik neem aan dat het alfabet als voorbeeld is, maar altijd duidelijke namen gebruiken.

<?php
function send_data($a='', $b='', $c='', $d='', $e='', $id=''){
}
?>


Oke maar hoe foep ik de fuctie aan ? kan je daar ook een voorbeeld van geven zeg ik wil allen A en D mee geven
>>> Oke maar hoe foep ik de fuctie aan ? kan je daar ook een voorbeeld van geven zeg ik wil allen A en D mee geven
Dat is dus het lastigste, je moet wel de variabelen in die volgorde gebruiken. Als je A en D wilt mee geven, zul je B en C ook mee moeten geven. E en D kun je wel weg laten.

send_data('A','','','D');

>>> Je zou eens kunnen kijken naar een Ternary Operator

Ternary Operator is niets anders dan een verkorte if/else statement en staat los van function.
Even ter info ik heb dezelfde vraag ook op een ander site gezet kreeg ik de volgde oplossing (wat denk ik de beste is)

<?php
function send_data($data, $id) {
$build = array();
foreach($data as $k=>$v) {
$build[] = "`".$k."` = '".mysql_real_escape_string($v)."'";
}
$sql = "UPDATE `table` SET ".implode(", ",$build)." WHERE `id`=".intval($id);
mysql_query($sql);
}
?>
Daarin stuur je de variabelen in één array mee met je functie. Dan maakt t inderdaad niks uit wat erin staat.
Ik zou de lelijke backticks (`) weglaten en als het enigszins mogelijk is vast gaan kijken naar MySQLi of PDO.

Reageren