form feltöltése, két változóval adatbázisból

hellstar képe

Sziasztok,

Szeretnék egy sql adatbázisból feltölteni egy form-ot, két változóval (title, nid)
Eddig eljutottam, hogy egy változóval (title) működik a dolog. (lásd kód alább)
Hogyan kellene a tömbös, formos részt módosítani, hogy a nid változót is kezelje a form?
Azaz amikor a felhasználó választ egyet (submit), akkor a változók (title, nid) értékét tudjam használni ezek után?? Az lenne a hab a tortán, ha a nid változó láthatalan maradna a felhasználó előtt.

köszi
Hs.

function lemezek() {
$lemezek_tomb=array();
global $user;
$sql = db_query("select title,nid from {node} where title not in (select lemezcim from {lemezhaboru} where ertekelo='$user->name') and type='flexinode-1' order by title");
while ($lemez = db_fetch_object($sql))
{
$lemezek_tomb[$lemez->title]=$lemez->title;

}
return $lemezek_tomb;
}

function lemezhaboru() {

$form['lemezhaboru']['lemezek'] =
array(
'#type' => 'select',
'#title' => t('Értékelhető lemezek '),
'#default_value' => variable_get('lemezek',''),
'#options' => lemezek(),
);

Fórum: 
Pasqualle képe

valtoztasd meg a tombot, hogy a nid legyen a tomb index

$lemezek_tomb[$lemez->nid] = $lemez->title;

igy a nid ertekkel dolgozol, tehat a form_submit-ban

$nid = $form_state['values']['lemezhaboru']['lemezek']

a title-t pedig kiolvashatod a form-bol
$title = $form['lemezhaboru']['lemezek']['#options'][$nid]

remelem jol irtam. a pelda drupal 6os, valami hasonlo lehet drupal 5osben is..

0
0
hellstar képe

szia

ezzel csak azt értem el, hogy a title helyett a nid (azaz a cím helyett az azonosító kerül be) az insert into-nál. Szerintem itt valami kétváltozós tömb kellene.

Nekem mindkettő kell.

0
0
Pasqualle képe

ott van mindketto:
egyik ertek a $nid valtozoban masik a $title valtozoban..

mit reszletezzek meg? mivel van a gond?

0
0
hellstar képe

akkor légy szíves írd le a form selectet és az insert into részt részletesebben.
vagy az egész kódot. :-)
köszi szépen
Így néz most a teljes kód, ami mindent betesz a formról a lemezhaboru tablaba, kivéve a lemezid-t.

function lemezek() {
$lemezek_tomb=array();
global $user;

$sql = db_query("select title,nid from {node} where nid not in (select lemezid from {lemezhaboru} where ertekelo='$user->name') and type='flexinode-1' order by title");

while ($lemez = db_fetch_object($sql))
{
$lemezek_tomb[$lemez->title]=$lemez->title;
}

return $lemezek_tomb;
}

function lemezhaboru() {

$form['lemezhaboru']['lemezek']= array(
'#type' => 'select',
'#title' => t('Értékelhető lemezek '),
'#default_value' => variable_get('lemezek',''),
'#options' => lemezek(),
);

$period = drupal_map_assoc(array(1,2,3,4,5,6,7,8,9,10));
$form['lemezhaboru']['pont'] = array(
'#type' => 'select',
'#title' => t('Pontszám '),
'#options' => $period,
'#default_value' => variable_get('pont','1'),

);
$form['submit'] = array('#type' => 'submit', '#value' => t('Értékel'));

function lemezhaboru_submit($form,$form_values) {
$most=time();
global $user;
db_query("INSERT INTO {lemezhaboru} (lemezcim,ertekelo,pont,datum,lemezid) VALUES ('%s','%s', %d, %d, %d)", $form_values['lemezek'], $user->name, $form_values['pont'],$most,$form_values['nidek']);
drupal_goto('node/774');
}

$output = drupal_get_form('lemezhaboru', $form);
return $output;

}

global $user;
echo"";
echo "";
echo "Értékelő neve: ".$user->name."";
echo "".lemezhaboru()."";
echo "";
echo "";
echo "";
?>

0
0
Pasqualle képe

ok, megvan a problema. Drupal 5osben ez nem jarhato amit leirtam, mert a submit hook nem tartalmaz $form valtozot, es nincs semmi amibol kiolvashatnad, hogy a nid-hez milyen title tartozik..

egy ujabb select-el megoldhato lenne, de gondolom azt akartad elkerulni. azt sem igazan ertem miert akarod lementeni a title-t is ha a nid-et elmented, de ez nem tartozik most ide..

szoval nem tudom, talan masok tudnak jobb megoldast drupal 5re

0
0
hellstar képe

igazából nem is 5-ös a rendszer, hanem 4.7.11.
azért kell mind a kettő, mert a felhasználó nem tud nid-ek alapján választani a selectben. (egy csomó számot látna csak). Ezért kell a title is, hogy a lemezcímek jelenjenek meg.

tovább adni, viszont lehet hogy elég lenne a nid-et (a lemezcim azonosítóját) az insert into felé.

0
0