Autor | Zpráva | ||
---|---|---|---|
Pan X Profil |
#1 · Zasláno: 10. 7. 2010, 09:56:52
Zdravím,
narazil jsem na jednu věc se kterou si nevím rady. Mám 30 proměných, které potřebuju uložit do DB ale tyto proměné nemusí být vždy plné. V případě, že bude proměnná plná potřebuji do DB uložit nějakou hodnotu. Zatím to řeším takto, ale vypadá to šíleně a doufám že se to dá vyřešit i jinak... if($a == false){ $a == 'prazdno'; }if($b == false){ $b == 'prazdno'; }.... Takto by tam bylo zapsaných 30 podmínek.... Výsledný zápis do db MySQL_Query("INSERT INTO `tabulka` VALUES('','$a','$b',.....)"); Jak by se to dalo vyřešit jinak? |
||
Radek9 Profil |
#2 · Zasláno: 10. 7. 2010, 10:17:46 · Upravil/a: Radek9
Pan X:
Za prvé bych použil pole, tohle je zbytečnost, a za druhé, to se dá krásně vyřešit cyklem: $array = array("něco", "něco", false, "něco", …); foreach($array as $key => $val){ $array[$key] = $val==false?"NULL":"'".mysql_real_escape_string($val)."'"; } … mysql_query("INSERT INTO tabulka VALUES (".implode(", ", $array).");"); Edit: Nox má pravdu, spíš použít NULL. Edit 2: Ajaj, ty apostrofy jsou zlo! :D Edit 3: No, ještě jsem to trochu zkrátil. |
||
Nox Profil |
#3 · Zasláno: 10. 7. 2010, 10:24:09
Pro "prázdno" se v MySQL používá NULL (do query vkládat jako řetězec; pro sloupec se musí nastavit parametr že může být NULL),
Jinak pokud máš proměnné $a, $b... to je špatný nápad, použij pole, pak můžeš udělat $values = ""; foreach($pole as $prvek) $values .= ($prvek == false ? "NULL" : mysql_real_escape_string($prvek)).", "; $values = substr($values, 0, -2); MySQL_Query("INSERT INTO `tabulka` VALUES($values)"); |
||
Pan X Profil |
#4 · Zasláno: 10. 7. 2010, 12:54:36
Jestli teda mýu navázat ještě jedním dotazem, jak dostanu z odeslaného formuláře pole, aniž bych do něj musel všechny proměnné manuálně vypsat?
|
||
Mastodont Profil |
#5 · Zasláno: 10. 7. 2010, 13:00:06
jak dostanu z odeslaného formuláře pole
Odeslaný formulář ti už jako pole přijde, buď $_GET nebo $_POST. |
||
joe Profil |
#6 · Zasláno: 10. 7. 2010, 13:12:45
$vars = array('item1', 'item2', 'item3', ...); foreach($vars as $var) { echo $_POST[$var]; } |
||
Pan X Profil |
#7 · Zasláno: 10. 7. 2010, 13:17:54
Aha, jasný to jsem si neuvědomil. Děkuji za pomoc
|
||
Časová prodleva: 14 let
|
0