Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Formularz i przesłanie do bazy mysql
Forum PHP.pl > Forum > Przedszkole
bladykiel
Witam wszystkich. Mam taki oto problem.
Mam pętelkę foreach
Kod
foreach($monsters as $monster) {
<a href="/stworzenia-'.urlencode($monster['nazwa']).'.html">'.$monster['nazwa'].';
}

która wypisuje mi nazwy stworzeń z bazy mysql. Tu wszystko działa ok. Jednak chciałbym aby byłą możliwość wybrania dla każdego stworzenia wartości (od 0 do 5) tu screen

problem mam z przesłaniem tych wartości do formularza i wygenerowania z nich tabeli tzn. przykładowo :
4 x stworzenie1
2 x stworzenie 2
itd.
Może ktoś mi poradzić jak to zrobić?
Próbowałem to na wiele sposobów biggrin.gif i mój aktualny kod wygląda tak:
Kod
foreach($monsters as $monster) {
if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++;
$main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>
<form method="post"><TD width="150"></TD><TD colspan="2"><b>
                <select name="karty1">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                </select>
                <a href="/stworzenia-'.urlencode($monster['nazwa']).'.html">'.$monster['nazwa'].'</a>   </form></br>
                </TD>';
};$main_content .= '<input type="submit" name="wygeneruj" value="wygeneruj"/>';


Proszę o szybką pomoc smile.gif
Pozdrawiam
AdIoS_Neo
Witam,
na szybko taki przykładzik:
  1. $main_content .= "<form method='post'>";
  2. foreach($monsters as $monster) {
  3. //if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++;
  4. $main_content .= '<TR><TD width="150"></TD><TD colspan="2">';
  5. $main_content .= '<select name="'.$monster['nazwa'].'">';
  6. for($i=0;$i<=5;$i++){
  7. $main_content .= '<option value="'.$i.'">'.$i.'</option>';
  8. }
  9. $main_content .= '</select><a href="/stworzenia-'.urlencode($monster['nazwa']).'.html"><strong>'.$monster['nazwa'].'</strong></a></br>
  10. </TD></TR>';
  11. };$main_content .= '<input type="submit" name="wygeneruj" value="wygeneruj"/></form>';
  12.  
  13. if(isset($_POST['wygeneruj'])){
  14. // filtrowanie danych
  15. $how_much = $_POST;
  16. echo "<table>";
  17. foreach($how_much as $creature => $amount){
  18. if($amount > 0)
  19. echo "<tr>\n<td>". $amount ." x ". $creature ."</td>\n</tr>\n";
  20. }
  21. echo "</table>";
  22. }
  23. echo $main_content;
bladykiel
Jesteś wielki biggrin.gif
o coś takiego mi chodziło smile.gif


edit//

i mam takie małe pytanko, dlaczego to nie działa ? tzn, wybieram Bohatera o nazwie "xorm", po czym ilość kart i po kliknięciu wygeneruj nic się nie dzieje smile.gif

  1. if($action == 'Zbuduj')
  2. {
  3. $main_content .= '<form method="POST">Wybierz Bohatera:
  4. <select name="nacja">
  5. <optgroup label="Inferno">
  6. <option value=Xorm>Xorm</option>
  7. <option value=Garant>Garant</option>
  8. <option value=Kal-Azaar>Kal-Azaar</option>
  9. <option value=Belias>Belias</option>
  10. </optgroup>
  11.  
  12. <optgroup label="Necropolis">
  13. <option value=Seria>Seria</option>
  14. <option value=Nergal>Nergal</option>
  15. <option value=Matka Namatru>Matka Namatru</option>
  16. <option value=Fleshbane>Fleshbane</option>
  17. </optgroup>
  18.  
  19. <optgroup label="Haven">
  20. <option value=Jezziel>Jezziel</option>
  21. <option value=Kasandra>Kasandra</option>
  22. <option value=Marcus>Marcus</option>
  23. <option value=Sandalphon>Sandalphon</option>
  24. </optgroup>
  25.  
  26. <optgroup label="Stronghold">
  27. <option value=Acamas>Acamas</option>
  28. <option value=Kat>Kat</option>
  29. <option value=Kelthor>Kelthor</option>
  30. <option value=Shaar>Shaar</option>
  31. </optgroup>
  32. </select>
  33. <input type="submit" name="wybierz" value="Wybierz"/>
  34. </form>';
  35.  
  36. };
  37.  
  38. if(($_POST["nacja"])=="Xorm"){
  39.  
  40. //---------------------------------------
  41. $main_content .= "<form method='post'>";
  42. foreach($monsters as $monster) {
  43. //if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++;
  44. $main_content .= '<TR><TD width="150"></TD><TD colspan="2">';
  45. $main_content .= '<select name="'.$monster['nazwa'].'">';
  46. for($i=0;$i<=5;$i++){
  47. $main_content .= '<option value="'.$i.'">'.$i.'</option>';
  48. }
  49. $main_content .= '</select><a href="/stworzenia-'.urlencode($monster['nazwa']).'.html"><strong>'.$monster['nazwa'].'</strong></a></br>
  50. </TD></TR>';}
  51. //--
  52. $main_content .= 'Czary</br>';
  53. foreach($spells as $spell) {
  54. //if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++;
  55. $main_content .= '<TR><TD width="150"></TD><TD colspan="2">';
  56. $main_content .= '<select name="'.$spell['nazwa'].'">';
  57. for($i=0;$i<=5;$i++){
  58. $main_content .= '<option value="'.$i.'">'.$i.'</option>';
  59. }
  60. $main_content .= '</select><a href="/stworzenia-'.urlencode($spell['nazwa']).'.html"><strong>'.$spell['nazwa'].'</strong></a></br>
  61. </TD></TR>';
  62. //--
  63. };$main_content .= '<input type="submit" name="wygeneruj" value="wygeneruj"/></form>';
  64. $karty = " ";
  65. if(isset($_POST['wygeneruj'])){
  66. // filtrowanie danych
  67. $how_much = $_POST;
  68. echo "<table>";
  69. foreach($how_much as $creature => $amount){
  70. if($amount > 0)
  71. $karty = $karty . "$creature"." x $amount".'\n';
  72. }
  73. echo "</table>";
  74. $SQL->query ("INSERT INTO `z_deck` (karty) VALUES ('$karty')");
  75. }
  76.  
  77. };



//edit 2

Oraz mam pytanie czy to jest dobrze (pod względem optymalizacji, składni itd, bo działać działa)
Kod
$karty = " ";
if(isset($_POST['wygeneruj'])){
    // filtrowanie danych
    $how_much = $_POST;
    echo "<table>";
    foreach($how_much as $creature => $amount){
        if($amount > 0)
        $karty = $karty . "$creature"." x $amount".'\n';
    }
    echo "</table>";
    $SQL->query ("INSERT INTO `z_deck` (karty) VALUES ('$karty')");
}


Ktoś skory do pomocy ? smile.gif
radziopoke
tak mi się wydaje że przydało by się jakaś sprawdzić dokładnie czy ktoś nie przesłał nią nieporządanych danych. warto by sprawdzić czy po prostu nie zawiera nieporządanych znaków i na wszelki wypadek je wykasować.
bladykiel
hmm cały formularz jest z select option, więc nie da rady wysłać czegoś niepotrzebnego. W dodatku instrukcja if, zapobiega wysłaniu pustego formularza.



Po całym dniu wojowania poradziłem sobie z tym problemem. W pierwszym pliku zastosowałem tylko formularz z wybraniem championa oraz "action" prowadzącym do innego pliku, w którym znajduje się kod odpowiedzialny za przesłanie wybranych kart.
Jest to dobre rozwiązanie ? czy jest jakieś lepsze?
xxdrago
A jeżeli ktoś w option prześle ci zamiast value="1" np. value="\" ?
bladykiel
jak ? to jest option select, masz do wyboru tylko 0,1,2,3,4,5
Posio
Jak ? Chrome + F12 i moge sobie twój form zmienić dowolnie i przesłać w nim co chcę...
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.