Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [MySQL][PHP]Lista rozwijana
kosior11
post 29.03.2011, 11:17:09
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Witam

Mam dwie tabele:

Tabela 'news'
id
nazwa
data
autor
tresc
kat_id

Tabela 'kategorie'
id
nazwa

oraz formularz z listą rozwijana w której mam do wyboru kilka kategorii, chciałbym zrobic w ten sposób aby wybór danej kategorii przy wypełnianiu formularza automatycznie nadawał dodanem tekstowi wartość ( czyli id z tabela "kategorie") do pola kat_id.

W jaki sposób mogłbym to zrobić?

kod formularza:
  1. <form action="" method="post">
  2. tytuł: <input type="text" name="tytul">
  3. <br/>autor <input type="text" name="autor">
  4. <br/>kategoria: <select name="kategorie">
  5. echo '<option value="1">Ekstraklasa</option></a>
  6. echo '<option value="2">Premier league</option></a>
  7. echo '<option value="3">Primier Division</option></a>
  8. echo '<option value="4">Serie A</option></a>
  9. echo '<option value="5">Bundesliga</option></a>
  10. echo '<option value="6">Ligue 1</option></a>
  11. echo '<option value="7">Pozostałe ligi</option></a>
  12. echo '<option value="8">Koszykówka</option></a>
  13. echo '<option value="9">Sporty motorowe</option></a>
  14. echo '<option value="10">Siatkówka</option></a>
  15. echo '<option value="11">Piłka ręczna</option></a>
  16. echo '<option value="12">Premier league</option></a>
  17. echo '<option value="13">Tenis</option></a>
  18. echo '<option value="14">Sporty walki</option></a>
  19. echo '<option value="15">Sporty zimowe</option></a>
  20. </select>
  21.  
  22. <br/><top>treść:<top> <textarea name="tresc" rows="20" cols="50"></textarea>
  23. <br/><input type="submit" value="Dodaj"></form>


gdzie option value=1" to id kategorii

Dzięki i POzdr!
Powód edycji: [Ociu]: Poprawiłem bbCode
Go to the top of the page
+Quote Post
PlayKiller
post 29.03.2011, 14:15:59
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 3
Dołączył: 16.10.2008

Ostrzeżenie: (0%)
-----


  1. echo '<form action="" method="post">
  2. tytuł: <input type="text" name="tytul">
  3. <br/>autor <input type="text" name="autor">
  4. <br/>kategoria: <select name="kategorie">';
  5.  
  6. $array = mysql_query('SELECT * FROM kategorie ORDER BY id ASC');
  7.  
  8. if(mysql_num_rows($array) > 0)
  9. {
  10. while($l = mysql_fetch_assoc($array))
  11. {
  12. echo "<option value='{$l['id']}'>{$l['nazwa']}</option>";
  13. }
  14. }
  15.  
  16. echo '</select>
  17. <br/><top>treść:<top> <textarea name="tresc" rows="20" cols="50"></textarea>
  18. <br/><input type="submit" value="Dodaj"></form>';
Go to the top of the page
+Quote Post
kosior11
post 29.03.2011, 18:39:58
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Dobra wielkie dzieki! Działa poprawnie tak jak chciałem.

Miałbym jeszcze jedno pytanie.

Mam plik news.php w którym są wyswietlane dodane artykuły i chciałbym żeby wyświetlane były w nim tylko te artykuły które np mają wartość kat_id=4

kod pliku news.php:

CODE
<?php
include("polacz.php");
$query = mysql_query("select * from news order by kat_id value='4'");
while($rekord = mysql_fetch_array($query))
{
$naz .= '<table><img src="html/f_3.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord

[3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
}
echo '<tr>'.$naz.'</tr>';
?>


("select * from news order by kat_id value='4'") myslałem że może taka składnia wszystko załatwi ale niestety nie działa i na dodatek wyskakuje błąd
Go to the top of the page
+Quote Post
emajl22
post 29.03.2011, 18:43:34
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


klauzula WHERE

WHERE `x` = 'wartosc'


--------------------
Go to the top of the page
+Quote Post
kosior11
post 29.03.2011, 20:25:10
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Super, wielkie dzieki działa jak chciałem!

Jestem bardzo ciemny jeśli chodzi o php więc non stop coś mi nie pasuje, więc napotkałem kolejny problem.

Mianowicie:

Wcieliłem plik wyświetlający dodane artykuły do mojego głównego pliku index

To jest kod który wrzuciłem do indexu:

CODE
<?php
include("polacz.php");
$query = mysql_query("select * from news WHERE `kat_id` = '6'");
while($rekord = mysql_fetch_array($query))
{
$naz .= '<table><img src="html/f_5.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord

[3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
}
echo '<tr>'.$naz.'</tr>';
?>


mój index składa się z kilku tabel i chciałem żeby w każdej tabeli wyświetlane były artykuły z innej kategorii, czyli w pierwszej tabeli artykuły o kat_id=1 w drugiej tabeli artykuły o kat_id=2 itp.

Ja zrobiłem to w taki sposób że w każdej tabeli umieściłem ten kod i zmieniałem tylko kat_id.

Jak dodaje artykuł do pierwszej tabeli wszystko jest OK ale jak dodam do drugiej to już jest coś nie tak i najpierw w tabeli drugiej pojawia mi sie artykuł z tabeli pierwszej i dopiero potem ten dodany słuszny.

Z kazdą kolejną tabelą jest podobnie, dodam artykuł do tabeli 3 to znowu najpierw wyswietlane są artykuły z pierwszych dwoch tabel i dopiero ten dodany

Prościej mówiąc zawartość kolejnej tabeli powielana jest artykuły z poprzednich tabel

Jak z tego wybrnąć?


Go to the top of the page
+Quote Post
emajl22
post 29.03.2011, 20:50:42
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


a gdzie kod odpowiedzialny za dodawanie artykulow do bazy?


--------------------
Go to the top of the page
+Quote Post
kosior11
post 29.03.2011, 22:35:26
Post #7





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


to jest kod który dodaje artyukuły:

CODE
<?php
include("polacz.php");
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$_POST['autor']."','".$_POST['tresc']."','".$_POST['kat_id']."')");
}
?>
Go to the top of the page
+Quote Post
emajl22
post 29.03.2011, 22:41:25
Post #8





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


a sprawdź jak są dodawane rekordy do bazy i pod $query... daj var_dump($_POST) i wklej na forum to co ci wyskoczyło


--------------------
Go to the top of the page
+Quote Post
kosior11
post 29.03.2011, 23:21:01
Post #9





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Jeśli chodzi Ci o to czy rekordy w bazie też się powtarzają to właśnie nie, tam jest wszystko w porządku dlatego bardziej myślałem że to wina leży po stronie wyświetlania. Zaraz sprawdze z tym kodem, a dokładniej w którym miejscu ulokować var dump($_POST)?

a może te błędy są za to odpowiedzialne? :

Undefined variable: naz in...

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...

Ten post edytował kosior11 29.03.2011, 23:26:57
Go to the top of the page
+Quote Post
sakul55
post 29.03.2011, 23:35:39
Post #10





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


  1. echo '<tr>'.$naz.'</tr>';

daj linijke wyzej, a } nizej
Go to the top of the page
+Quote Post
kosior11
post 30.03.2011, 20:16:03
Post #11





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


załatwiło to sprawę błędu: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ..

Ale w dalszym ciągu dodawane teksty się powielają :/

Wkleje kod który wyświetla artykuły jeszcze raz, bo bardzo mi na tym zależy:

CODE

<?php
include("polacz.php");
$query = mysql_query("select * from news WHERE `kat_id` = '1'");
while($rekord = mysql_fetch_array($query))
{
$naz .= '<table><img src="html/f_6.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord[3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';

echo '<tr>'.$naz.'</tr>';
}
?>


Mam w pliku index tabele w której podzieloną na kilka wierszy i wiersze te podzielone są na kilka kategorii. Zrobiłem z pomocą chłopaków tak, żeby każdy artykuł został dodany do wiersza odpowiadającego danej kategorii, na tym etapie jest wszystko w porządku.

Jednak mimo tego że w np. w wierszu odpowiadającym kategorii 1 umieszczam cały kod z ("select * from news WHERE `kat_id` = '1'") artykuł się wyświetla w wierszach o innych kategoriach. Czyli jest powielany na pozostałe kategorie. W przypadku 2 kategorii jest podobnie ale z ominięciem wiersza 1. i tak w każdej kategorii. Zawsze artykuły są powielane o następną kategorię, jeśli chodzi o poprzednie to jest spoko.

Jakie zmiany wprowadzić do kodu żeby artykuły wyświetlały sie prawidłowo tzn, dany artykuł tylko i wyłącznie w danej kategorii.

Pozdr!
Go to the top of the page
+Quote Post
sakul55
post 30.03.2011, 20:33:29
Post #12





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


zrob jakiegos screena jak to wyglada i podaj caly kod odpowiadajacy za wszystkie wiersze

wrzuc w tagi [PHP]
Go to the top of the page
+Quote Post
kosior11
post 31.03.2011, 12:30:02
Post #13





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----





  1. <table width=580px align="top" border="10">
  2.  
  3. <tr>
  4. <td><a href="dodaj.php"><img src="html/dodaj.jpg"></a></td>
  5.  
  6. <tr bgcolor="#FF6600">
  7. <td>kategoria 1</td>
  8. <tr>
  9. <td>
  10. <table width=580>
  11.  
  12. <?php
  13. include("polacz.php");
  14. $query = mysql_query("select * from news WHERE `kat_id` = '1'");
  15. while($rekord = mysql_fetch_array($query))
  16. {
  17. $naz .= '<table><img src="html/f_6.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  18.  
  19. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  20.  
  21. echo '<tr>'.$naz.'</tr>';
  22. }
  23. ?>
  24.  
  25. </td>
  26. <tr>
  27. <td><a href="ekstra.php">(więcej)</a></td>
  28. </tr>
  29.  
  30.  
  31.  
  32.  
  33. <tr bgcolor="#FF6600">
  34. <td>kategoria 2</td>
  35. <tr>
  36. <td>
  37. <table width=580>
  38.  
  39. <?php
  40. include("polacz.php");
  41. $query = mysql_query("select * from news WHERE `kat_id` = '2'");
  42. while($rekord = mysql_fetch_array($query))
  43. {
  44. $naz .= '<table><img src="html/f_1.gif"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  45.  
  46. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  47.  
  48. echo '<tr>'.$naz.'</tr>';
  49. }
  50. ?>
  51.  
  52. </td>
  53. </tr>
  54.  
  55. <tr bgcolor="#FF6600">
  56. <td>kategoria 3</td>
  57. <tr>
  58. <td>
  59. <table width=580>
  60.  
  61. <?php
  62. include("polacz.php");
  63. $query = mysql_query("select * from news WHERE `kat_id` = '3'");
  64. while($rekord = mysql_fetch_array($query))
  65. {
  66. $naz .= '<table><img src="html/f_2.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  67.  
  68. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  69.  
  70. echo '<tr>'.$naz.'</tr>';
  71. }
  72. ?>
  73.  
  74. </td>
  75. </tr>
  76.  
  77. <tr bgcolor="#FF6600">
  78. <td>kategoria 4</td>
  79. <tr>
  80. <td>
  81. <table width=580>
  82.  
  83.  
  84. <?php
  85. include("polacz.php");
  86. $query = mysql_query("select * from news WHERE `kat_id` = '4'");
  87. while($rekord = mysql_fetch_array($query))
  88. {
  89. $naz .= '<table><img src="html/f_3.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  90.  
  91. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  92.  
  93. echo '<tr>'.$naz.'</tr>';
  94. }
  95. ?>
  96.  
  97.  
  98. </td>
  99. </tr>
  100.  
  101. <tr bgcolor="#FF6600">
  102. <td>kategoria 5</td>
  103. <tr>
  104. <td>
  105. <table width=580>
  106.  
  107. <?php
  108. include("polacz.php");
  109. $query = mysql_query("select * from news WHERE `kat_id` = '5'");
  110. while($rekord = mysql_fetch_array($query))
  111. {
  112. $naz .= '<table><img src="html/f_4.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  113.  
  114. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  115.  
  116. echo '<tr>'.$naz.'</tr>';
  117. }
  118. ?>
  119.  
  120. </td>
  121. </tr>
  122.  
  123. <tr bgcolor="#FF6600">
  124. <td>kategoria 6</td>
  125. <tr>
  126. <td>
  127. <table width=580>
  128.  
  129.  
  130. <?php
  131. include("polacz.php");
  132. $query = mysql_query("select * from news WHERE `kat_id` = '6'");
  133. while($rekord = mysql_fetch_array($query))
  134. {
  135. $naz .= '<table><img src="html/f_5.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord
  136.  
  137. [3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  138.  
  139. echo '<tr>'.$naz.'</tr>';
  140. }
  141. ?>
  142.  
  143. </td>
  144. </tr>
  145. </table>
  146. </table>
  147. </table></table></table></table></table>


Powinno być po jednym artykule w każdej kategorii, a jak widzimy w drugiej kategorii znalazł sie artykuł z kategorii pierwszej i w trzecim wypadku jest podobnie.

Teraz się tak przyjrzałem temu co wkleiłem.

A przypadkiem błędem nie będzie to że w zasadzie w każdym nowym wierszu tabeli kod zaczyna się od: include("polacz.php"); Może include("polacz.php"); powinno być tylko jakoś na początku.

Wiecie jakby to miało wyglądać?

Ten post edytował kosior11 30.03.2011, 21:03:50
Go to the top of the page
+Quote Post
sakul55
post 31.03.2011, 12:32:04
Post #14





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


a masz zrobione zamykanie polaczenia z baza? bo jak ci sie polaczy i pobierze dane to potem znowu ci sie laczy i znowu pobiera, a wciaz masz otwarta baze dla starego polaczenia. prawdopodobnie przez to masz ten blad
Go to the top of the page
+Quote Post
kosior11
post 31.03.2011, 13:06:01
Post #15





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


rozumiem że zamykanie polaczenia z bazą powinienem był umiescic w pliku polacz.php? Czy gdzies w tym kodzie? :

  1. <?php
  2. include("polacz.php");
  3. $query = mysql_query("select * from news WHERE `kat_id` = '1'");
  4. while($rekord = mysql_fetch_array($query))
  5. {
  6. $naz .= '<table><img src="html/f_6.jpg"><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> Autor: '.$rekord[3].' - '.$rekord[2].'<br><center><img src="html/linia.jpg"></center></br></table>';
  7.  
  8. echo '<tr>'.$naz.'</tr>';
  9. }
  10. ?>


  1. <?php
  2. mysql_connect('localhost', 'root' , '');
  3. mysql_query("SET NAMES 'utf8'");
  4. ?>


Co powinno się znaleźć w nawiasie?
Go to the top of the page
+Quote Post
sakul55
post 31.03.2011, 13:17:23
Post #16





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


w kodzie, po pobraniu wszystkiego z bazy.

nie wiem niestety jak to dziala, ja uzywam PDO i tam to jest duzo lepiej zrobione. wydaje mi sie, ze powinienes zrobic jakas zmianna i w niej wywolac polaczenie do bazy, a potem ta zmienna podac w mysql_close($zmienna);
Go to the top of the page
+Quote Post
amii
post 31.03.2011, 14:05:59
Post #17





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Cytat z manuala czyli nie musisz zamykać połączenia z bazą:
Cytat
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources.



--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
miaka
post 23.07.2011, 15:46:05
Post #18





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.07.2011

Ostrzeżenie: (0%)
-----


Stwierdzilam, ze nie ma sensu tworzyc podobnego tematu zwlaszcza, ze wykorzystalam kod napisany tutaj przez PlayKiller.

Moj problem polega na tym, ze nie biore liste rozwijana oraz text po czym umieszczam te dane w bazie. Mam problem z lista rozwijana. Bo chyba w tym jest blad zeby wybrac z listy i dodac do bazy. Z góry dziekuje za pomoc.

  1. function dodaj_pozycje()
  2. {
  3. if (isset($_SESSION['pracownik']))
  4. {
  5. echo '<form action="index.php?dzial=oferta&dodaj=ok&dodano=yes" method="post">
  6. nazwa: <input type="text" name="nazwa">
  7. <br/>cena <input type="text" name="cena">
  8. <br/>kategoria: <select name="kategoria">';
  9.  
  10. $array = mysql_query('SELECT * FROM Kategoria');
  11.  
  12. if(mysql_num_rows($array) > 0)
  13. {
  14. while($l = mysql_fetch_assoc($array))
  15. {
  16. echo "<option value='{$l['id_kategoria']}'>{$l['kategoria']}</option>";
  17. }
  18. }
  19.  
  20. echo '</select>
  21. <br/><input type="submit" value="Dodaj"></form>';
  22.  
  23. if(isset($_GET['dodano']))
  24. {
  25. dodaj_o();
  26. }
  27. }
  28. else
  29. {
  30. logowanie();
  31. }
  32. }
  33.  
  34.  
  35. function dodaj_o()
  36. {
  37. if (isset($_SESSION['pracownik']))
  38. {
  39. $kategoria=mysql_real_escape_string (trim($_POST['kategoria']));
  40. $nazwa=mysql_real_escape_string (trim($_POST['nazwa']));
  41. $cena=mysql_real_escape_string (trim($_POST['cena']));
  42.  
  43. $zap = "select id_kategoria from Kategoria where kategoria='$folder'";
  44. $wyn = mysql_query($zap);
  45.  
  46. while($row = mysql_fetch_array($wyn))
  47. {
  48. $id_kategoria = mysql_real_escape_string (trim($row['id_kategoria']));
  49.  
  50. $zapytanie="INSERT INTO Oferta (id_kategoria, nazwa, cena) VALUES ('$id_kategoria', '$nazwa','$cena')";
  51. mysql_query($zapytanie) or die ("Niepowodzenie! ".mysql_error());
  52.  
  53. echo "<br>Pozycja została dodana<br>";
  54. }
  55.  
  56. echo "<script LANGUAGE='JavaScript' TYPE='text/javascript'>location.href='index.php?dzial=oferta';</SCRIPT>";
  57. }
  58. else
  59. {
  60. logowanie();
  61. }
  62. }
  63.  
Go to the top of the page
+Quote Post
nospor
post 20.12.2013, 14:10:55
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Sebapgd pytasz o to w innnym temacie. Naprawde wystarczy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 01:21