Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] System glosowania, jak to zrobic?
Forum PHP.pl > Forum > Przedszkole
Selevan
Mam taki kod

  1. <?php
  2. mysql_connect ("localhost", "xxx", "xxx") or //staramy połączyć się z bazą danych
  3. die ("Nie można połączyć się z bazą MySQL");
  4. $wynik = mysql_query("SELECT * FROM Screeny ORDER BY nr")
  5. or die('Błąd zapytania');
  6. if(mysql_num_rows($wynik) > 0) {
  7. while($r = mysql_fetch_assoc($wynik)) {
  8. $visible = ($r['admin']);
  9. if ($visible == 1)
  10. {
  11. echo "<tr>";
  12. echo "<td id=tblnamedata><strong><a href=profil.php?id=".$r['nick'].">".$r['nick']."</a></strong></td>";
  13. echo '<td><strong><a href='.$r['Link'].'><img src='.$r['Miniaturka'].' alt=""/></a></strong></td>';
  14. echo "<td id=tblnamedata><strong>";
  15. echo wordwrap($r['Komentarz'],'20','<br />', 1);
  16. echo "<form method=post action=\"glosuj.php\">";
  17. echo '<select name=glosowanie'.$r['nr'].'>';
  18. echo "<option value=1>1</option>";
  19. echo "<option value=2>2</option>";
  20. echo "<option value=3>3</option>";
  21. echo "<option value=4>4</option>";
  22. echo "<option value=5>5</option>";
  23. echo "<option value=6>6</option>";
  24. echo "</select>";
  25. echo '<input name=submit'.$r['nr'].' type=button value=Głosuj />';
  26. echo "</form>";
  27. echo "</td></strong>";
  28. echo "</tr>";
  29. }
  30. else
  31. {
  32. }
  33. }
  34. }
  35. ?>


I teraz chodzi mi o to, zeby w pliku "glosuj.php" zrobic skrypt ktory by wiedzial, przycisk o jakiej nazwie wcisnelismy, i jaka wybralismy ocene, a potem dodal te informacje do bazy danych.

Np przy screenshocie z numerem 31, galeria wygeneruje obrazek, komentarz oraz formularz, gdzie lista z wyborem ocen bedzie miala nazwe "glosowanie31" oraz przycisk "submit31"

Wtedy przyciskajac przycisk submit31, skrypt glosuj.php dodal by informacje do bazy danych, do wiersza gdzie NR = 31.

Mam nadzieje ze cos tam zrozumieliscie biggrin.gif
ADeM
Nie lepiej po prostu użyć pola hidden?
Selevan
jeszcze jak bym wiedzial w jaki sposob.. smile.gif
ADeM
  1. echo '<input name=submit'.$r['nr'].' type=button value=Głosuj />';

Zamień na:
  1. echo '<input type="hidden" name="id" value="'. $r[ 'nr' ] . '" />';
  2. echo '<input name=submit type=button value=Głosuj />';

A później odbierasz jak pozostałe dane:
  1. echo $_POST[ 'id' ];

Selevan
a co dac w
  1. echo "<form method=post action=\"glosuj.php\">";
action?

chyba jednak nie do konca lapie jak dziala ten hidden ;P
ADeM
W action ma być adres do pliku, w którym będziesz te dane odczytywał i operował na nich.
EDIT:
A ten hidden działa dokładnie tak samo jak normalne pole typu text, z tym, że nie jest wyświetlany.
Selevan
cos to jakos nie chodzi..
ADeM
To może pokaż kod?
Selevan
  1. echo "<tr>";
  2. echo "<td id=tblnamedata><strong><a href=profil.php?id=".$r['nick'].">".$r['nick']."</a></strong></td>";
  3. echo '<td><strong><a href='.$r['Link'].'><img src='.$r['Miniaturka'].' alt=""/></a></strong></td>';
  4. echo "<td id=tblnamedata><strong>";
  5. echo wordwrap($r['Komentarz'],'20','<br />', 1);
  6. echo "<form method=post action=galeria.php >";
  7. echo '<select name=glosowanie'.$r['nr'].'>';
  8. echo "<option value=1>1</option>";
  9. echo "<option value=2>2</option>";
  10. echo "<option value=3>3</option>";
  11. echo "<option value=4>4</option>";
  12. echo "<option value=5>5</option>";
  13. echo "<option value=6>6</option>";
  14. echo "</select>";
  15. echo '<input type="text" name="id" value="'.$r['nr'].'" />';
  16. $blaa = $_POST['id'];
  17. $bl = $_POST['glosowanie'];
  18. echo '<input type="text" name="ocena" value="'.$bl.'"/>';
  19. echo '<input name=submit type=button value=Głosuj />';
  20. echo "</form>";
  21. echo "</td></strong>";
  22. echo "</tr>";


Chcialem zeby w drugim zawsze pokazywalo sie jaka wybralem opcje z tej listy glosowanie.$r['nr'].

ale zasadniczo chodzi o to zeby po wcisnieciu submit do bazy danych "screeny" przy wierszu gdzie kolumna "nr" zawiera taka sama wartosc co $_POST['id'], do kolumny "OCENA" dodala sie wartosc jaka wybralismy z listy, tzn z pola "glosowanie'.$r['nr'].'"

smile.gif

Jak cos takiego zrobic?
ADeM
  1. echo "<tr>";
  2. echo "<td id=tblnamedata><strong><a href=profil.php?id=".$r['nick'].">".$r['nick']."</a></strong></td>";
  3. echo '<td><strong><a href='.$r['Link'].'><img src='.$r['Miniaturka'].' alt=""/></a></strong></td>';
  4. echo "<td id=tblnamedata><strong>";
  5. echo wordwrap($r['Komentarz'],'20','<br />', 1);
  6. echo "<form method=post action=galeria.php >";
  7. echo '<select name="ocena">';
  8. echo "<option value=1>1</option>";
  9. echo "<option value=2>2</option>";
  10. echo "<option value=3>3</option>";
  11. echo "<option value=4>4</option>";
  12. echo "<option value=5>5</option>";
  13. echo "<option value=6>6</option>";
  14. echo "</select>";
  15. echo '<input type="hidden" name="id" value="'.$r['nr'].'" />';
  16. echo '<input name=submit type=button value=Głosuj />';
  17. echo "</form>";
  18. echo "</td></strong>";
  19. echo "</tr>";


I teraz w pliku galeria robisz zapytanie aktualizujące do bazy (o ile operujesz na bazie danych), dla rekordów o nr = $_POST[ 'id' ]. Wartość ocena ustalasz na ocena + $_POST[ 'ocena' ].
Selevan
cos takiego w galeria.php ?
  1. <?
  2. mysql_connect ("localhost", "xxx", "xxx") or //staramy połączyć się z bazą danych
  3. die ("Nie można połączyć się z bazą MySQL");
  4. mysql_select_db('xxxs', $db);
  5. $wynik = mysql_query("SELECT * FROM Screeny ORDER BY nr")
  6. or die('Błąd zapytania');
  7. $sqld = "UPDATE Screeny SET ocenaL = ocenaL + ".$_POST['ocena']." WHERE nr = ".$_POST['id']."";
  8. mysql_query($sqld);
  9. ?>
ADeM
A sprawdziłeś czy działa tak jak chcesz?
Selevan
No wlasnie nie.. bo po przycisnieciu przycisku submit doslownie nic sie nie dzieje..
ADeM
Co znaczy nic sie nie dzieje? Jakieś błędy? Zmiany w bazie?
Selevan
Wlasnie o to chodzi ze zero zmian w bazie.
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.