Anonymous
18.05.2004, 21:31:36
a wiec sytuacja wyglada nastepujaco: mam w formularzu wielokrotnego select'a z jezykami obcymi (dodawanymi w ramach jednego z atrybutow jakiejs szkoly), select ten oferuje kilka jezykow ale jesli ktos stwierdzi ze takigo jezyka jaki chce dodac nie ma w liscie select'a - chce zeby mial mozliwosc dodania nowego jezyka do tej listy, wiem jak to zrobic (nowy formularz wpisujacy jezyk do bazy listy jezykow w bazie danych i odswiezenie strony z glownym formularzem zeby select na nowo odczytal liste jezykow) ale tylko jak wspomialem przez odswiezanie strony glownego formularza - a przez top utrate tych informacji ktore ktos wczesniej wpisal w inne jego pola.... czy ktos ma pomysl jak dodac nowa opcje do select'a bez utraty danych z innych pol? za wszelkie wskazowki z gory wielkie dzieki
Anonymous
18.05.2004, 21:50:19
Zapisz sobie pola selecta w pliku np. select.dat i oddziel jezyki np * , potem uzywajac explode() zrobisz tablice i petla for wyswietlisz.
cboot
18.05.2004, 22:23:06
[php:1:d6aab2862f]<?php
if ( isset( $_POST['wyslij'] ) )
{
if ( $_POST['jezyk'] == "inny" )
{
mysql_query( "insert into jezyki ( nazwa ) values ( '".$_POST['nowy']."' )" ) or die( "Nie mogę dodać do bazy danych." );
$_POST['jezyk'] = $_POST['nowy'];
}
// tutaj akcje jakie ma wykonać już po wszystkim - przejście do innej strony, czy coś takiego
}
else // Instrukcje gdy formularz wczytywany jest po raz pierwszy
{
echo( "<form action="".$_SERVER['PHP_SELF']."" method="post"><select name="jezyk">" );
$nazwy_jezykow = mysql_query( "select nazwa from jezyki" ) or die("Nie mogę czytać z bazy danych.");
while ( $nazwa_jezyka = mysql_fetch_array( $nazwy_jezykow ) )
{
echo( "<option value="$nazwa_jezyka">$nazwa_jezyka</option>" );
}
echo( "<option value="inny">Inny język:</option></select>" );
echo( "<input type="text" name="nowy" /><input type="submit" name="wyslij" value="Wyślij" /></form>" );
}
?>[/php:1:d6aab2862f]
W tym przykładzie mamy w bazie danych tabelę jezyki, a kolumna nazwa w tej tabeli to rzecz jasna nazwy, które też pobieramy do formularza. W formularzu mamy selecta wczytującego poszczególne pozycje z bazy danych plus dodatkowa pozycja Inny język:, po wybraniu której jako nazwę zostanie wybrana nazwa z pola tekstowego obok, przy czy ta nowa nazwa zostanie dodana to tabeli jezyki. Wybrany język bez względu na to, czy jest on z listy, czy z pola tekstowego, ostatecznie znajdzie się w zmiennej $_POST['jezyk'].