Archívum - Júl 5, 2006 - Fórum téma
InnoDB foreign key - a törlést hogyan propagáljam más táblákba?
Sziasztok!
Egy eléggé érdekes kérdésem lenne. Lehetséges, hogy a fától nem látom az erdőt és halál RTFM lesz, de ez merül fel bennem:
Távoli kulcsokkal lehet olyat csinálni, hogy ON DELETE CASCADE. No de, ez csak akkor működik, ha a másik tábla változik. Lehetséges valahogyan, implicit módon az aktuális táblából propagálni egy törlést a behivatkozott táblába?
A tárolt eljárások nem megoldás, mert ha jól olvastam, csak MySQL 5-től vannak és a szerveren csak 4-es fut, valamint a táblahivatkozás megfordítása sem lehetséges, mert arra az egy táblára többen hivatkoznak.
Köszi
János
■ Egy eléggé érdekes kérdésem lenne. Lehetséges, hogy a fától nem látom az erdőt és halál RTFM lesz, de ez merül fel bennem:
Távoli kulcsokkal lehet olyat csinálni, hogy ON DELETE CASCADE. No de, ez csak akkor működik, ha a másik tábla változik. Lehetséges valahogyan, implicit módon az aktuális táblából propagálni egy törlést a behivatkozott táblába?
A tárolt eljárások nem megoldás, mert ha jól olvastam, csak MySQL 5-től vannak és a szerveren csak 4-es fut, valamint a táblahivatkozás megfordítása sem lehetséges, mert arra az egy táblára többen hivatkoznak.
Köszi
János
Többdimenziós tömb elemének érték dinamikusan
Config változókat többdimenziós tömbben szeretnék tárolni. Ezt a tömböt adott esetben futásidőben kell bővíteni, ez viszont nem akar sikerülni.$s_var_path: 'db:tbl:users' jellegű string
$m_var_value: az érték, amit szeretnék beállítani
Az elgondolásom az, hogy végigjárom az $s_var_path-ban megadott útvonalat a tömb adott eleméig (node), ezt az utat stringben rögzítem ($s_node_path), majd $$var-ként változóvá "konvertálva" gyorsan értéket adok neki.
Ami a fenti kódon kívül még eszembe jutott/próbáltam:
Már kellően sokat harcolásztam vele ahhoz, hogy lassan át sem látom. Örömmel fogadnék minden tanácsot akár a fenti megvalósítással, akár egy teljesen új megközelítéssel kapcsolatban!
function cfg_set($s_var_path, $m_var_value)
{
// CONFIGVALTOZOK
static $CFG = array(
'db' => array(
'tbl' => array(
'users' => 'felhtabla',
'forum' => 'forumtabla'
)
)
);
// CFG SET/GET
$a_cfg_nodes = explode(':', $s_var_path);
$s_last_node = $a_cfg_nodes[count($a_cfg_nodes)-1];
$s_node_path = 'CFG';
foreach($a_cfg_nodes as $node) {
if ($node==$s_last_node) { // utolso node -> beallitjuk az erteket
$var = $s_node_path."['$node']";
${$var} = $m_var_value;
} else { // egyebkent felepitjuk a node-hoz a tombben vezeto utat
$s_node_path .= "['$node']";
}
}
print_r($CFG);
}
$m_var_value: az érték, amit szeretnék beállítani
Az elgondolásom az, hogy végigjárom az $s_var_path-ban megadott útvonalat a tömb adott eleméig (node), ezt az utat stringben rögzítem ($s_node_path), majd $$var-ként változóvá "konvertálva" gyorsan értéket adok neki.
Ami a fenti kódon kívül még eszembe jutott/próbáltam:
- Referenciaként visszaírni $CFG-be (${$var} &= $m_var_value;) - Undefined variable: CFG['db']['tbl']['users'] a válasz, ráadásul ez új configváltozó esetén nem járható út
- array_push(), array_walk() - egyikben sem láttam a számomra megfelelő megoldást. Az array_walk()-nál olvastam, hogy a callback függvényben nem lehet módosítani az eredeti tömböt, mert annak megjósolhatatlan lesz az eredménye... nem tudom eldönteni, ez vonatkozik-e rám. :)
- Google, WL kereső (create dinamic(ally) array +PHP, tömb +dinamikus +PHP, stb...)
Már kellően sokat harcolásztam vele ahhoz, hogy lassan át sem látom. Örömmel fogadnék minden tanácsot akár a fenti megvalósítással, akár egy teljesen új megközelítéssel kapcsolatban!
PHP Aktivacio kod
Sziasztok!
Van egy PHP szkript amely segitsegevel egy felhasznalo regisztralja magat egy adatbazisba.
Regisztracio utan a felhasznalo kap egy e-mailt, egy link-el. Csak akkor lesz aktiv a felhasznalo ha meglatogatja ezt a linket.
Ez a link tartalmaz egy random generalt kodot :
Pl:
Ez a hosszu kod bent van egy mySQL mezoben, amelynek a neve "validate".
Amiutan a felhasznalo meglatogatja a linket a hosszu kod helyet egy 0 lesz beirva a validate mezobe.
A gond az, hogy eleg ha csak a kod egyik kissebb reszet irom be, mert kiirja, hogy a regisztracio sikeresen tortent:
Pl.
Persze o kiirja de nem fog atvaltani 0-ra !
Itt van a userval.php kodja:
$key = $_GET['key'];
if (@mysql_query("UPDATE register SET validate='0' WHERE validate='". $_GET['key'] . "'")) {
print "<b>Aktivalodott<br />";
} else {
print "<b>Nem aktivalodott</b>";
}
Mielott megjelenik az "Aktivalodott" sor le kene elenorizem ha tenyleg atirta azt az erteket 0-ra.
Sajnos nem tudom milyen parancsokkal vegezem el ezt az elenorzest. Ha tudtok segiteni, nagyon halas lennek !
Koszonom !
■ Van egy PHP szkript amely segitsegevel egy felhasznalo regisztralja magat egy adatbazisba.
Regisztracio utan a felhasznalo kap egy e-mailt, egy link-el. Csak akkor lesz aktiv a felhasznalo ha meglatogatja ezt a linket.
Ez a link tartalmaz egy random generalt kodot :
Pl:
www.mydomain.com/userval.php?key=b026a66879c2690575bc7e3c56edc60e353d8d06
Ez a hosszu kod bent van egy mySQL mezoben, amelynek a neve "validate".
Amiutan a felhasznalo meglatogatja a linket a hosszu kod helyet egy 0 lesz beirva a validate mezobe.
A gond az, hogy eleg ha csak a kod egyik kissebb reszet irom be, mert kiirja, hogy a regisztracio sikeresen tortent:
Pl.
www.mydomain.com/userval.php?key=b026a66879
Persze o kiirja de nem fog atvaltani 0-ra !
Itt van a userval.php kodja:
$key = $_GET['key'];
if (@mysql_query("UPDATE register SET validate='0' WHERE validate='". $_GET['key'] . "'")) {
print "<b>Aktivalodott<br />";
} else {
print "<b>Nem aktivalodott</b>";
}
Mielott megjelenik az "Aktivalodott" sor le kene elenorizem ha tenyleg atirta azt az erteket 0-ra.
Sajnos nem tudom milyen parancsokkal vegezem el ezt az elenorzest. Ha tudtok segiteni, nagyon halas lennek !
Koszonom !
A hozzászólásoknál egyéb bbcode használata colorer elemen belül
Meg lehet oldani, hogy a hozzászólásoknál előbb fusson le a colorer és utána a bbcode? Ti. most fordítva van, és így biztosan nem lehet plusz színezést vagy kiemelést alkalmazni a [colorer] elemen belül.
■