[php/mysql] rozwijalna lista formularza z danymi z bazy

0

Witam,

mam taki poroblem chce stworzyc formularz z rozwijalna lista ktory bedzie pobieral dane z jakiejs tabeli z mysql i je w tej liscie wyswietal. Takich list ma byc kilka i maja sie do roznych tabel odnosic. Jesli nie bedzie na liscie interesujacej nas opcji chcialabym ja dopisac. Oczwiscie ma to na celu dopisywanie do bazy nowych rekordow. Po to chce to zrobic.

Pomoze mi ktos?? :)

0

Z innych postów domyślam się, że chodzi o PHP/MySQL? Jeśli tak, to (+ jeśli trafiłem, to przeniosę do Webmastering) coś w stylu [nie testowane]:

$sql = mysql_query('SELECT kolumna FROM tabela');
echo '<select>';
while($row = mysql_fetch_row($sql))
  echo '<option>' . $row['kolumna'] . '</option>';
echo '</select>';

Dopisywanie można zrobić z pomocą <input type="text">.

0

hmm to jakby dzialalo, tzn wyswietla sie pole formularza rozwijalne w dodatku jest w tym polu tyle opcji co istnieje w bazie lecz niestety nie widac nic, zadnych liter.

w bazie w tej tablicy mam 9 rekordow i w polu paska rozwijalnego jest 9 opcji sprawdzilam i jeden rekord dodalam do bazy i wtedy rowniez pojawia sie 10 opcja w tym pasku ale zadnych liter nie ma... nic.... puste 10 opcji.

a tak w ogole to tak, trafiles :)

0

A na pewno podałaś poprawną nazwę kolumny? (w przykładzie jest to $row['kolumna'] dla pola "kolumna").

0

:) oczywiscie, moj kod wyglada tak:

<?
include("config.php");

$sql = mysql_query('SELECT nazwa_k FROM kategoria');
echo '<select>';
while($row = mysql_fetch_row($sql))
 { echo '<option>' . $row['nazwa_k'] . '</option>';  }
echo '</select>';
?>
0

zobacz czy coś jest echo mysql_error()

0

{ echo '<option>' . $row['nazwa_k'] . '</option>'; }

Jeżeli używasz mysql_fetch_row to zamiast nazwy kolumny daj tam 0.

array mysql_fetch_row ( resource $wynik )

Zwraca tablicę numeryczną, która odpowiada pobranemu wierszowi i przesuwa do przodu wewnętrzny wskaźnik do danych.
</quote>

Jeżeli chcesz używać nazw kolumn używaj funkcji mysql_fetch_array()
http://pl2.php.net/manual/pl/function.mysql-fetch-array.php

0

ahh, pomyliłem *_row z *_fetch :)

0

chyba z _array ;)

// tfu, z _array miało być :)- Cold

0

dziekuje :)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

0

a co ja tutaj robie zle ze mi nie dopisuje ??


include("config.php");

if(isset($_GET['dopisz'])) {

		if(isset($_GET['k'])) {
		
		echo "<form action='form.php' method='get'>";
		
		echo "<input type='text' name='nazwa_k'>nazwa kategorii</br>";
		
		echo "<input type='text' name='sprzedaz'>jaka sprzedaz (h-hurt, d-detal)</br>";
		
		echo "<input type='submit' name='dopisz' value='dopisz_k' /></form>";
		
		}

		if(isset($_GET['dopisz_k'])) {
				
				isset($_GET['nazwa_k']);
				
				$nazwa_k = $_GET['nazwa_k'];
				
				isset($_GET['sprzedaz']);
				
				$sprzedaz = $_GET['sprzedaz'];
	
				$sql = mysql_query('INSERT INTO kategoria id_k, nazwa_k, sprzedaz VALUES NULL, $nazwa_k, $sprzedaz');
		
		}
		

}


0
  1. Linijki
isset($_GET['nazwa_k']);
isset($_GET['sprzedaz']);

nie robią NIC. Po prostu wywołujesz funkcje, olewasz co zwraca.
2. Składnia zapytania INSERT jest niepoprawna, więc nie dodaje.

INSERT INTO tabela (pola) VALUES (wartości)

Najlepiej na początek nauki pisać sobie wszędzie coś w tym stylu

$... = mysql_query("zapytanie") or die(mysql_error());
                               ^^^^^^^^^^^^^^^^^^^^^^
0

ok poradzilam sobie z tym dopisaniem ale mam jeszcze jedno pytanie, jak ja teraz z tego kodu:


$sql = mysql_query('SELECT nazwa_k FROM kategoria');

                while($row = mysql_fetch_array($sql)) {

                            echo '<option>' . $row['nazwa_k'] . '</option>';

mam pobrac id wybranej przez uzytkownika kategorii i dopisac do innej tabeli??

dodalam do <option name="w1"> ale to tez nie dziala, co tu jest zle??

w formularzu mam tak:

echo '<select>';
                
                $sql = mysql_query('SELECT nazwa_k FROM kategoria');

                while($row = mysql_fetch_array($sql)) {

                            echo '<option name="w1">' . $row['nazwa_k'] . '</option>';

                }

                echo '</select>';

a w dopisywaniu tak:

if(isset ($_POST['nazwa_r'])){

         $nazwa_r = $_POST['nazwa_r'];
         
         $w1 =  $_POST['w1'];
		
         $kategoria = mysql_query("SELECT id_k, nazwa_k FROM kategoria WHERE nazwa_k='".$w1['nazwa_k']."'")
	 or die(mysql_error());
	 	
         	
         $sql = @mysql_query("INSERT INTO rodzaj SET nazwa_r='$nazwa_r', id_k='$kategoria['id_k']'")
         or die(mysql_error());

         if ($sql) {
            echo "rodzaj zostal dodany do kategorii <a href=form_new.php>powrot</a>";
         }
         else {
              echo "Bł±d nie udało się dodać nowego rekordu";
         }
}
0

name ustalasz dla selecta. Dla opcji ustalasz wartość (value).

0

OK :) a jak teraz zrobic zeby w nastepnym pasku rozwijalnym pokazaly sie tylko te rodzaje ktore naleza do wybranej z paska wyzej kategorii? musze to zrobic w roznych plikach? czy jak bo najpierw chyba dane trzeba wyslac zeby mozna bylo zobaczyc co zostalo wybrane ale nie wiem wlasnie jak to poukldac zeby tak dziaoalo, mam tak:

<b class="black">Wybierz kategorie</b><br><br>

<select size="1" name="kategoria" class="ban" size="60"><option selected>Wybierz kategorie</option>
<?
$query = "select * from `kategoria`";
$result = mysql_query($query);
while($row_k = mysql_fetch_array($result))
{
echo  '<option>'.$row_k['nazwa_k'].'</option>';
}

?>
</select><br/><br/>



<b class="black">Wybierz rodzaj </b><br><br>//ma rozwijac tylko te rodzaje ktore naleza do wybranej wyzej kategorii

<select size="1" name="rodzaj" class="ban" size="60"><option selected>Wybierz rodzaj</option>
<?

$query = "select * from `rodzaj`";
$result = mysql_query($query);
while($row_r = mysql_fetch_array($result))
{
echo  '<option>'.$row_r['nazwa_r'].'</option>';
}

?>
</select><br/><br/>



0

Poczytaj o AJAX/JS. :)

0

ok poradzilam sobie z tym

1 użytkowników online, w tym zalogowanych: 0, gości: 1