Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dane z bazydanych w liście rozwijania
Forum PHP.pl > Forum > Przedszkole
furious_knight
Witam serdecznie, mam problem z połączeniem treści bazy danych z listą rozwijaną... nie wiem czy źle robię pętle czy zapytanie... siedzę nad tym już dwie godziny i nic nie wychodzi, z językiem php nie wiele miałem do czynienia w życiu (jakieś 3 godziny lekcyjne...)ale udało mi się stworzyć coś takiego:

<?php
$polaczenie=mysql_connect("localhost","root","");
mysql_select_db("meble",$polaczenie);
$zapytanie="select nazwa_koloru from kolor";
$wynik=mysql_query($zapytanie,$polaczenie);
echo '
<form action="dodaj1.php" method="POST">
<table>
<tr><td width=150>Typ Mebla: </td><td><input type="text" name="typ"></td></tr>

<tr><td width=150>Nazwa: </td><td><input type="text" name="nazwa_mebla"></td></tr>

<tr><td width=150>cena: </td><td><input type="text" name="cena"></td></tr>

<tr><td width=150>Wybierz Kolor : </td><td><select name="kolor">
<option>
'while ($tab=mysql_fetch_array($wynik))
{
$nazwa=$tab['nazwa_koloru'];
''.$nazwa.''
}

'</option>
</table>
<input type="submit" value="Dalej">
</form>

';

while ($tab=mysql_fetch_array($wynik))
{
$nazwa=$tab['nazwa_koloru'];
echo '
'.$nazwa.'';
}

mysql_close($polaczenie);


?>

Ta druga pętla na końcu kodu to jest taka pętla robocza dzięki której sprawdziłem że baza danych ma połączenie z php i ona wyświetla wszystko prawidłowo.
Natomiast ta wyżej w liście rozwijania(<select>) wyrzuca mi błąd:

Parse error: syntax error, unexpected T_WHILE, expecting ',' or ';' in C:\xampp\htdocs\projekt\dodaj.php on line 38

domyślam się że chodzi tu o problem z pętlą lub jakimś znaczkiem w nim ale nie mam pojęcia czy źle ją zrobiłem czy poprostu w takiej liście pętli nie można używać!:(

dodam że studiuję grafikę komputerową zaocznie ale jakieś blade pojęcie o c# i php mam, nie wielkie ale zawsze... o mysql wiem nieco więcej ale mimo to proszę o odpowiedź dosyć jasną językowo która pomoże mi rozwiązać ten problem
qrooel
Weź z łaski swojej ujmij ten kod w znaczniki PHP.
Ghost_78
  1. .........
  2. <option>
  3. 'while ($tab=mysql_fetch_array($wynik))
  4. {
  5. $nazwa=$tab['nazwa_koloru'];
  6. ''.$nazwa.''
  7. }
  8.  
  9. '</option>
  10. .........

Jak na mój gust czegoś tu brakuje.
Jakaś konkatenacja ? po " ' " ?
A po zamknięciu ' powinien być chyba ';' i po zakończeniu pętli jakieś "echo" ?

---- EDIT

Poza tym tu
  1. ''.$nazwa.''

tez chyba jakieś "echo" się przyda

- tak na szybkiego przeleciane
qrooel
W linijce 17 i 22 brakuje średników.
furious_knight
Dzięki za podpowiedź, przeleciałem na szybko jakiś kurs w necie o php i udało mi się wyselekcjonować błędy kod ruszył i wpisał w listę rozwijaną kolumnę na takiej pętli:


<?php
$polaczenie=mysql_connect("localhost","root","");
mysql_select_db("meble",$polaczenie);
$zapytanie="select nazwa_koloru from kolor";
$zapytanie2="select nazwa_stylu from styl";
$zapytanie3="select nazwa_producenta from producenci";
$wynik=mysql_query($zapytanie,$polaczenie);
$wynik2=mysql_query($zapytanie2,$polaczenie);
$wynik3=mysql_query($zapytanie3,$polaczenie);
echo '
<form action="dodaj1.php" method="POST">
<table>

<tr><td width=150>Wybierz Kolor : </td><td><select name="kolor"> ';

//WYBÓR KOLORU

while ($tab=mysql_fetch_array($wynik))
{
$nazwa=$tab['nazwa_koloru'];
echo '
<option>'.$nazwa.'</option>';
}
echo'

</table>
<input type="submit" value="Dalej">
</form>

';


mysql_close($polaczenie);

?>

żeczywiście nababrałem z tymi znaczkami ale jak wcześniej napisałem dopiero raczkuję w php. A i mała prośba do qrooel nie musisz od razu taką ironią sypać jak to ja się nie znam nie bez powodu swój post umieściłem w części forum o nazwie "przedszkole" sam dobrze wiedziałem ze mój błąd to jakiś banał ale nie wiedziałem dokładnie jaki.... ale dzięki za poźniejszą podpowiedź pomogła:)



Mam niestety kolejny problem z tym skryptem a właściwie z jego kontynuacją.... mam już w pliku dodaj.php pętle i w liście rozwijania wszystko się ładnie tyświetla tylko że w skrypcie dodaj1.php dane są przetwarzane i wpisywane do BD a mi zależy na zapytaniu i zmiennej która:
1.Pobierze wybraną nazwę_koloru z listy rozwijanej
2.Na podstawie tej nazwy pobierze jej id_koloru z tej samej kolumny o nazwie KOLOR
3. Doda id_koloru do tabeli ASORTYMENT

fragment dodaj.php
  1. <?php
  2. $polaczenie=mysql_connect("localhost","root","");
  3. mysql_select_db("meble",$polaczenie);
  4. $zapytanie="select nazwa_koloru from kolor";
  5. $zapytanie2="select nazwa_stylu from styl";
  6. $zapytanie3="select nazwa_producenta from producenci";
  7. $wynik=mysql_query($zapytanie,$polaczenie);
  8. $wynik2=mysql_query($zapytanie2,$polaczenie);
  9. $wynik3=mysql_query($zapytanie3,$polaczenie);
  10. echo '
  11. <form action="dodaj1.php" method="POST">
  12. <table>
  13. <tr><td width=150>Typ Mebla: </td><td><input type="text" name="typ"></td></tr>
  14.  
  15. <tr><td width=150>Nazwa: </td><td><input type="text" name="nazwa_mebla"></td></tr>
  16.  
  17. <tr><td width=150>cena: </td><td><input type="text" name="cena"></td></tr>
  18.  
  19. <tr><td width=150>Ilość dost. sztuk </td><td><input type="text" name="Ilosc_sztuk"></td></tr>
  20.  
  21. <tr><td width=150>Szerokość (w cm) : </td><td><input type="text" name="szerokosc"></td></tr>
  22.  
  23. <tr><td width=150>Długość(w cm) : </td><td><input type="text" name="dlugosc"></td></tr>
  24.  
  25. <tr><td width=150>Wysokość(w cm) : </td><td><input type="text" name="wysokosc"></td></tr>
  26.  
  27.  
  28. <tr><td width=150>Wybierz Kolor : </td><td><select name="kolor"> ';
  29.  
  30. //WYBÓR KOLORU
  31.  
  32. while ($tab=mysql_fetch_array($wynik))
  33. {
  34. $nazwa=$tab['nazwa_koloru'];
  35. <option>'.$nazwa.'</option>';
  36. }


fragment dodaj1.php
  1. <?php
  2. $polaczenie=mysql_connect("localhost","root","");
  3. mysql_select_db("meble",$polaczenie);
  4.  
  5. $zapytanie="insert into asortyment values ('$_POST[typ]','$_POST[nazwa_mebla]','','$_POST[cena]','$_POST[Ilosc_sztuk]','$_POST[szerokosc]','$_POST[dlugosc]','$_POST[wysokosc]','$_POST[kolor]','$_POST[styl]','$_POST[producent]')";
  6.  
  7.  
  8. if( mysql_query($zapytanie,$polaczenie))
  9. {
  10. echo 'dodano nowy rekord';}
  11. else
  12. {
  13. echo 'nie dodano nowego rekordu';}
  14.  
  15. mysql_close($polaczenie);
  16. ?>
  17.  


zjdęcie bazy danych:


Wiem że w skrypcie dodaj1.php trzeba by utworzyć jakieś zmienne z zapytaniami do bazy danych o wyświetlenie id_kolor odpowiadającemu wyświetlanej nazwie_koloru ale leże bo nie wiem jak to wbić w php ale będe próbować chociaż nie ukrywam że był bym wdzięczyny za podpowiedz...

Edit:

Walczę cały wieczór i niestety nie udało mi się zrobić postępów poniższy skrypt z pliku dodaj1.php:
  1. <?php
  2.  
  3. $polaczenie=mysql_connect("localhost","root","");
  4. mysql_select_db("meble",$polaczenie);
  5. $kolor="SELECT id_kolor FROM kolor WHERE nazwa_koloru=' '$_POST[kolor]' ' ";
  6.  
  7. $zapytanie="insert into asortyment values ('$_POST[typ]','$_POST[nazwa_mebla]','','$_POST[cena]',
  8. '$_POST[Ilosc_sztuk]','$_POST[szerokosc]','$_POST[dlugosc]','$_POST[wysokosc]','.$kolor.','','')";
  9.  
  10.  
  11. if( mysql_query($zapytanie,$polaczenie))
  12. {
  13. echo 'dodano nowy rekord';}
  14. else
  15. {
  16. echo 'nie dodano nowego rekordu';}
  17.  
  18. mysql_close($polaczenie);
  19. ?>


wpisuje wszystkie krotki jak należy poza ostatnią z wybranym id_koloru poprzez zmienną$kolor i wpisuje 0 czyli tak jak bym nic nie wpisał...
Dodam że więzy między tabelami chyba działają bo gdy wklepuję w mysql kod ręcznie czyli INSERT INTO asortyment VALUES ....... i jak na końcu
wklepię id_koloru istniejącego w bazie to normalnie go zapisuje czyli to znaczy że ewidentnie mam coś namieczane ze zmienną $kolor bo zapytanie SELECT
raczej jest ok....(też sprawdziłem ręcznie) w instrukcji INSERT IN TO zmienną wpisywałem w różnych postaciach '.$kolor.' i '$kolor' i nic ... liczę na czyjąś pomoc.....
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.