Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Rozozwijane menu
Forum PHP.pl > Forum > Przedszkole
ergoline
Witam!

Chciałbym uzyskać taki efekt: na stronie jest formularz (to nie jest problem), a dodatkowo 3 rozwijane menu, do których dane będą pobierane z 3 tabel na serwerze MySQL. Dodatkowo, po wypełnieniu formularza oraz po wybraniu opcji z rozwijanego menu, wpis ma zostać dodany do bazy danych (dane z formularza + to co zostało wybrane).
Czy jest jakiś w miarę prosty system, aby to uzyskać?

1. Chodzi głównie o skrypt rozwijanego menu, które pobiera dane z MySQL.
2. Jak wpisać w poleceniu "insert" te dane, które zostały wybrane z rozwijanego menu - może zarejestrować wybór jako nową zmienną (jak)?

Z góry dzięki...
Pozdrawiam...
xerek
Nie zamierzam pisac za ciebie calego skryptu ale sprobuje chociaz naprowadzic ciebie na wlasciwą drogę.

Mianowicie

a) Naprostszy sposob to Wykonac zapytanie do bazy danych i nastepnie wynik zapytania umiescic w znacznikach option pola select w xhtml
np.

$sql = mysql_query("SELECT * FROM ...");
echo "<Select>";
while($row=mysql_fetch_row($sql)) {
echo "<option>  np $row['jakies pole z db']  </option> ";
}
echo '</select>';


cool.gif Uzywając polecenia insert masz na mysli INSERT INTO z mysql?
Jesli tak wykonujac powyzsze zapytanie mozesz najprosciej skorzystac z tablic gloalnych $_GET i $_POST bo dane ktore sa wysylane za pomoca formularza znajduja sie wlasnie w nich ...
Oczywiscie wypadalo by jeszcze sprawdzic poprawnosc danych i ich walidacje ale oczywiscie przedstawilem najprostszy sposob.
pozdrawiam
ergoline
Dzięki za pomoc, jednak ciągle nie imiem sobie z tym poradzić...

Tak wygląda mój plik "dodaj.php":
Kod
<?php

require ("check.php");

mysql_connect ("localhost", "ergoline", "123456");
mysql_select_db ("db_ergoline");

echo '
<form action="dodaj.php" method="post">
    <table>
    <tr>
        <td>Imię: </td>
        <td><input type = "text" name = "imie"></td>
    </tr>
    <tr>
        <td>Nazwisko: </td>
        <td><input type = "text" name = "nazwisko"></td>
    </tr>';
    
$sql = mysql_query ("SELECT * FROM kierunek");
echo '<Select>';
while ($row = mysql_fetch_row($sql))
{
    echo '<option>$row["nazwa"]</option>';
}
echo '</select>

    <input type = "submit" value = "Dodaj studenta" />
    <input type = "reset" value = "Wyczyść formularz" />
</form>';
?>


Chcę aby w menu rozwijanym można było wybrać wartości, które będą pobierane z kolumny "nazwa" tabeli "kierunek".
Przy takim kodzie efektem końcowym jest rozwijane menu, w którym mogę wybrać "$row["nazwa"]".

Prówałem również:
Kod
...
echo  '<option> <?php $row[1] ?> </option>';
...

Jednak bez skutku - w takim wypadku nie ma nic do wyboru...

Gdzie popełniam błąd?
Pozdrawiam...
f1xer
spróbuj $row[0] jeżeli nie będzie działać to za pomocą
  1. <?php
  2. print_r($row)
  3. ?>

sprawdź czy w ogóle coś jest w tej tablicy
lukas22333
Spróbuj coś takiego:
  1. <?
  2. $sql = mysql_query ("SELECT * FROM kierunek");
  3. while ($row=mysql_fetch_assoc($sql))
  4.        {            
  5.         echo '<option value="'.$row['nazwa'].'">'.$row['nazwa'].'</option>';
  6.    }
  7.   ?>
ergoline
Dokłanie winksmiley.jpg Działa piknie winksmiley.jpg

Mam jeszcze jedno pytanie...
Czy jest możliwość "ograniczenia" tego menu? Chodzi mi o to, że są 2 menu rozwijane i chciałbym, żeby jedno było zależne od drugiego. Dokładnie: po wybraniu w I menu opcji 1, w II menu mam do wyboru tylko a i b; po wybraniu w I menu opcji 2, w II menu mam do wyboru tylko c i d itp...
Z tego co się orientuję, to można chyba takie coś zrobić jeśli operujemy na jednej tabeli. Czy w moim wypadku, gdzie operuję dwiema tabelami, można uzyskać taki efekt?

Pozdrawiam...
lukas22333
Ale chcesz zeby automatycznie wypełniało tą drugą liste? czy tak ze z pierwszej wybierasz jakas wartosc i zatwierdzasz to przyciskiem i dopiero druga sie uzupełnia?

Jak pierwsza opcja to chyba tylko JS zostaje.
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.