Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: lista rozwijana ktorej wybor jest wysylany do bazy danych
Forum PHP.pl > Forum > PHP
achill
Mam taki problem z formularzem:

mam liste rozwijana - do której wartosci pobieram z tabeli A (nation)

wybieram sobie cos z listy rozwijanej (podczepiony JS sprawia ze w czasie rzeczywistym mam podglad informacji o kazdej z opcji) i ta wartosc jest przypisywana aktualnie zalogowanemu uzytkownikowi w tabeli B (cms_user)

po zatwierdzeniu wyboru chce aby przelaczyl mnie na kolejna strone, równocześnie zapisujac wybor w odpowiedniej rubryce tabeli B (niby wszytsko w porzasiu -błedu niby nie wyrzuca ale ani redirecta ani zapisu danych nie ma. )

na dodatek cos mi sie pokićkało i juz sam nie wiem jak sie odwolać do bieżacego użytkownika - $_SESSION['user_id'] tyle wiem ale jak i gdzie to podpiac zeby to działało jak należy blinksmiley.gif;/


Proszę o jakieś sugestie co jest nie tak i/lub wskazówki jak to mozna rozwiazać bo ja już sie pogubiłem - Siedze nad tym od parunastu godzin i niestety juz nawet nie pamiętam jakich rozwiązań próbowałem.


zamieszczam źródełka:

step.php

CODE
<?php require_once 'header.php';
require_once 'conn.php';

$convert['edit'] = 'Edytuj'; $convert['add'] = 'Dodaj';

switch ($_GET['action']) {
case "edit";
$nationsql = "SELECT * FROM nation
WHERE nation_id = '" . $_GET['id'] . "'";
$result = mysql_query($nationsql) or die(mysql_error());
$row = mysql_fetch_array($result);
$nation = $row['nation'];
break;
default;
$nation = "";
break;
}
?>
<style type="text/css">

</style>
<div id="gamein">
<form action="commit.php?action=<?php
echo $_GET['action']; ?>&type=nation=<?php echo $_GET['id']; ?> method="post">
<script>
function showDiv( n, t ) {for( var i=0;t=document.getElementById( 'bla_bla' ).getElementsByTagName( 'div' )[i];i++) t.style.display= ( i != n ? 'none' : 'block' );}
</script>
<select name="nation" onchange="showDiv(this.value)">
<?php
$sql = "SELECT nation_id, nation_name " .
"FROM nation ORDER BY nation_id ASC";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
if ($row['nation_id'] == nation) {
$selected = "selected";
} else {
$selected = "";
}
echo ' <option value="' . $row['nation_id'] . '"' . $selected. '>' . $row['nation_name'] . '</option>' . "\r\n";
}
?>
</select>
<div id="bla_bla" style="background:transparent;width:1070px; height:400px; padding:0 2px 3px 0;">
<div id="0" style="border:0px ; width:1070px; height:400px; position:relative; clear:both; z-index:2;">
<p>
wybierz nację
</p><br />
</div>
<div id="nation"> Anglia

</div>
<div id="nation"> Francja

</div>


<input type="submit" name="SUBMIT" value="<?php echo $convert[$_GET['action']]; ?>">
</form>
</div>
<?php require_once 'footer.php'; ?>



commit.php
CODE


<?php
require_once 'conn.php';

switch ($_GET['action']) {
case "edit";
switch ($_GET['action']) {
case "nation";
$sql = "UPDATE cms_users SET
nation = '" . $_POST['nation'] . "'
WHERE USER_ID = '" . $_get['ID'] . "'";
break;
}
break;
case "add";
switch ($GET['type']) {
case "nation";
$sql = "INSERT INTO cms_users
(nation)
VALUES
('" . $_POST['nation'] . "')";
break;
}
break;
}

if(isset($sql) && !empty($sql)) {
echo "<!--" . $sql . "-->";
$result = mysql_query($sql) or die (mysql_error());
?>

<p align="center" style="color:#FF0000"> przejdz dalej<a href="gamestart.php"></a> </p>

<?php
}
?>


bazy wygladaj nastepujaco
tabela: cms_user
kolumny: user_id, user_name, nation

tabela: nation
kloumny: nation_id, nation_name

Podsumowując:
chodzi o to aby w wyniku zatwierdzenia wyboru z tak obslugiwanej (JS) listy rozwijanej wartosc nation_id z tabeli nation zostala zapisana w kolumnie nation z tabeli cms_user dla aktualnie zalogowanego uzytkownika




wiem, że to może wygląda banalnie ale naprawde mam z tym problem. nie oczekuje gotowca, tylko zeby ktos mi pokazal gdzie popelniam błąd lub czego zapomniałem. będę wdzięczny za każdą pomoc
Fixus
skorzystaj z technologi AJAX

zasada działania będzie podobna. Wygenerujesz sobie listę i z każdym wyborem będziesz wywoływał metodę która dokona zapisu do bazy. Wszystko będzie robione w locie bez przeładowania strony.

Dałbym Ci jakiś fragment kodu, ale tk dawno tego nie dotykałem, że zupełnie zardzewiałem tongue.gif

sądzę, że AJAX pomoże Ci rozwiązać Twój problem
achill
zawsze mozna sprobować

ale nadal pozostaje problem co robie źle:

powiedzialbym ze mozna wyszczegolnic 2 glowne problemy (a przynajmniej te dwie rzeczy napewno nie dzialaja):

odwolanie sie do biezacego uzytkownika
i
zapis w bazie - a dokladniej funkcja submit nie wyglada tak jak powinna

dobra sprobuje jeszcze pare rzeczy poprawic i wrzuce potem (moze jakos dzis w nocy) co wymyslilem

ps. czyzby problem byl az tak trudny: wydaje mi sie ze da sie to zrobic w ten sposob - skoro na innych podstronach mam i listy rozwijane i zapis do bazy danych i wszystkie poszczegolne elementy, ktore chce tu zastosowac to powinno sie to dac polaczyc w jedna calosc. sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.