Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]php i checkbox
Forum PHP.pl > Forum > Przedszkole
czechu5
mam formularz zamowienia w html. jest tam do wyboru 6 opcji (checkbox).
wynik zamowienia ma byc wyslany jako email.wszystko dziala ok jednak zalezy mi na tym zeby w tym emailu byly tylko te opcje zaznaczone w formaularz, a nie wszytkie


  1. <?php
  2.  
  3.  
  4. $EmailFrom = "mail@gmail.com";
  5. $EmailTo = "mail@gmail.com";
  6. $Subject = "catering order request";
  7. $first = Trim(stripslashes($_POST['first']));
  8. $last = Trim(stripslashes($_POST['last']));
  9. $phone = Trim(stripslashes($_POST['phone']));
  10. $email = Trim(stripslashes($_POST['email']));
  11. $chk0 = Trim(stripslashes($_POST['chk0']));
  12. $chk1 = Trim(stripslashes($_POST['chk1']));
  13. $chk2 = Trim(stripslashes($_POST['chk2']));
  14. $chk3 = Trim(stripslashes($_POST['chk3']));
  15. $chk4 = Trim(stripslashes($_POST['chk4']));
  16. $chk5 = Trim(stripslashes($_POST['chk5']));
  17. $sel0 = Trim(stripslashes($_POST['sel0']));
  18. $sel1 = Trim(stripslashes($_POST['sel1']));
  19. $sel2 = Trim(stripslashes($_POST['sel2']));
  20. $sel3 = Trim(stripslashes($_POST['sel3']));
  21. $sel4 = Trim(stripslashes($_POST['sel4']));
  22. $sel5 = Trim(stripslashes($_POST['sel5']));
  23. $price1 = Trim(stripslashes($_POST['price1']));
  24. $price2 = Trim(stripslashes($_POST['price2']));
  25. $price3 = Trim(stripslashes($_POST['price3']));
  26. $price4 = Trim(stripslashes($_POST['price4']));
  27. $price5 = Trim(stripslashes($_POST['price5']));
  28. $price6 = Trim(stripslashes($_POST['price6']));
  29. $txtTotal = Trim(stripslashes($_POST['txtTotal']));
  30.  
  31.  
  32. $validationOK=true;
  33. if (!$validationOK) {
  34. print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  35. }
  36.  
  37.  
  38. $Body = "";
  39. $Body .= "First Name: ";
  40. $Body .= $first;
  41. $Body .= "\n";
  42. $Body .= "Last Name: ";
  43. $Body .= $last;
  44. $Body .= "\n";
  45. $Body .= "Phone: ";
  46. $Body .= $phone;
  47. $Body .= "\n";
  48. $Body .= "E-mail: ";
  49. $Body .= $email;
  50. $Body .= "\n";
  51. $Body .= "\n";
  52. $Body .= "==========================================================\n";
  53. $Body .= "\n";
  54. $Body .= "Option #1: ";
  55. $Body .= $chk0  ;
  56. $Body .= "qty: ";
  57. $Body .= $sel0;
  58. $Body .= " ";
  59. $Body .= "x";
  60. $Body .= " ";
  61. $Body .= $price1;
  62. $Body .= "\n";
  63. $Body .= "\n";
  64. $Body .= "==========================================================\n";
  65. $Body .= "\n";
  66. $Body .= "Option #2: ";
  67. $Body .= $chk1  ;
  68. $Body .= "qty: ";
  69. $Body .= $sel1;
  70. $Body .= " ";
  71. $Body .= "x";
  72. $Body .= " ";
  73. $Body .= $price2;
  74. $Body .= "\n";
  75. $Body .= "\n";
  76. $Body .= "==========================================================\n";
  77. $Body .= "\n";
  78. $Body .= "Option #3: ";
  79. $Body .= $chk2  ;
  80. $Body .= "qty: ";
  81. $Body .= $sel2;
  82. $Body .= " ";
  83. $Body .= "x";
  84. $Body .= " ";
  85. $Body .= $price3;
  86. $Body .= "\n";
  87. $Body .= "\n";
  88. $Body .= "==========================================================\n";
  89. $Body .= "\n";
  90. $Body .= "Option #4: ";
  91. $Body .= $chk3  ;
  92. $Body .= "qty: ";
  93. $Body .= $sel3;
  94. $Body .= " ";
  95. $Body .= "x";
  96. $Body .= " ";
  97. $Body .= $price4;
  98. $Body .= "\n";
  99. $Body .= "\n";
  100. $Body .= "==========================================================\n";
  101. $Body .= "\n";
  102. $Body .= "Option #5: ";
  103. $Body .= $chk4  ;
  104. $Body .= "qty: ";
  105. $Body .= $sel4;
  106. $Body .= " ";
  107. $Body .= "x";
  108. $Body .= " ";
  109. $Body .= $price5;
  110. $Body .= "\n";
  111. $Body .= "\n";
  112. $Body .= "==========================================================\n";
  113. $Body .= "\n";
  114. $Body .= "Option #6: ";
  115. $Body .= $chk5  ;
  116. $Body .= "qty: ";
  117. $Body .= $sel5;
  118. $Body .= " ";
  119. $Body .= "x";
  120. $Body .= " ";
  121. $Body .= $price6;
  122. $Body .= "\n";
  123. $Body .= "\n";
  124. $Body .= "==========================================================\n";
  125. $Body .= "\n";
  126.  
  127. $Body .= "TOTAL $: ";
  128. $Body .= $txtTotal;
  129. $Body .= "\n";
  130.  
  131.  
  132. $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
  133.  
  134.  
  135. if ($success){
  136.  print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.htm\">";
  137. }
  138.  
  139. ?>


probowalem wstawic cos takiego ale i tak pokazuje nawet te niezaznaczone


  1. <?php
  2. {
  3. if ($_POST[chk0]== 1){
  4.  
  5. $Body .= "\n";
  6. $Body .= "Option #1: ";
  7. $Body .= $chk0  ;
  8. $Body .= "qty: ";
  9. $Body .= $sel0;
  10. $Body .= " ";
  11. $Body .= "x";
  12. $Body .= " ";
  13. $Body .= $price1;
  14. $Body .= "\n";
  15. $Body .= "\n";
  16.  
  17. }}
  18. ?>



help please exclamation.gif smile.gif
erix
Zrób te checkboksy jako tablicę, będzie dużo łatwiej...
czechu5
ok.wiec formularz teraz wyglada mniej wiecej tak:

  1. <input name="checkbox[]" type="checkbox" id="chk0" value="1" />
  2. <select name="sel0" class="gty" id="sel0">
  3. <option value="0">qty</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <option value="4">4</option>
  8. <option value="5">5</option>
  9. </select>
  10. <br /><br />
  11.  
  12. <input name="checkbox[]" type="checkbox" id="chk1" value="1" />
  13. <select name="sel1" class="gty" id="sel1">
  14. <option value="0">qty</option>
  15. <option value="1">1</option>
  16. <option value="2">2</option>
  17. <option value="3">3</option>
  18. <option value="4">4</option>
  19. <option value="5">5</option>
  20. </select><br /><br />
  21.  
  22.  
  23.  
  24. <input name="checkbox[]" type="checkbox" id="chk2" value="1" />
  25. <select name="sel2" class="gty" id="sel2">
  26. <option value="0">qty</option>
  27. <option value="1">1</option>
  28. <option value="2">2</option>
  29. <option value="3">3</option>
  30. <option value="4">4</option>
  31. <option value="5">5</option>
  32. </select>
  33. <br /><br />
  34.  
  35. <input name="checkbox[]" type="checkbox" id="chk3" value="1" />
  36. <select name="sel3" class="gty" id="sel3">
  37. <option value="0">qty</option>
  38. <option value="1">1</option>
  39. <option value="2">2</option>
  40. <option value="3">3</option>
  41. <option value="4">4</option>
  42. <option value="5">5</option>
  43. </select>
  44. <br /><br />


a w php cos takiego questionmark.gif ?
  1. <?php
  2. if(is_array($_POST[checkbox]))
  3. {
  4. $orders="Item orders: \".implode(\" , \",$_POST[checkbox]);
  5.  
  6. }
  7. print "$orders&#092;";
  8. ?>


to pokazuje mi zaznaczone pola, a ja potrzebuje utworzyc liste zaznaczonych checkboxow jeden pod drugim a obok kazdego vrtosc z pola "sel"
najlepiej jakby tworzylo tabele dal kazdego checkbox.

jak to zrobic? ja nie jestem programista.pomozcie
robar12
  1. <?php
  2.  
  3. $form = '<form action="index.php" method="post">';
  4.  
  5. $form .= '<label>Box 1</label><input type="checkbox" name="box[]" value="box1"/><br/>';
  6. $form .= '<select name="sel[]"><option selected="default">Wybież z listy</option><option>1</option><option>2</option><option>3</option></select><br/>';
  7. $form .= '<label>Box 2</label><input type="checkbox" name="box[]" value="box2" /><br/>';
  8. $form .= '<select name="sel[]"><option selected="default">Wybież z listy</option><option>1</option><option>2</option><option>3</option></select><br/>';
  9. $form .= '<label>Box 3</label><input type="checkbox" name="box[]" value="bo3" /><br/>';
  10. $form .= '<select name="sel[]"><option selected="default">Wybież z listy</option><option>1</option><option>2</option><option>3</option></select><br/>';
  11. $form .= '<label>Box 4</label><input type="checkbox" name="box[]" value="bo4" /><br/>';
  12. $form .= '<select name="sel[]"><option selected="default">Wybież z listy</option><option>1</option><option>2</option><option>3</option></select><br/>';
  13.  
  14. $form .= '<input type="submit" value="Wyślij"></form>';
  15.  
  16. print($form);
  17.  
  18.  
  19. //Sprawa jest prosta jeżeli checkboxów jest tyle samo co selectów , ale ....
  20.  
  21. if(isset($_POST['box']) && isset($_POST['sel'])){
  22.    
  23.    $box = $_POST['box'];
  24.    $sel = $_POST['sel'];
  25.    for($i=0;$i<count($box);$i++){
  26.        $string .= 'Wybrałeś : '.$box[$i].' box. A wartość z listy to : '.$sel[$i].'<br>' ;
  27.    }
  28.    print($string);
  29. }
  30. ?>


// Prosty przykład bez dokładnego sprawdzania forma .
//W efekcie pod formem wyświetlają się tylko zaznaczone opcje i wartości. Nie wiem czy o to chodziło.
// W zasadzie teraz tylko funkcja mail() i odpowiedznie nagłówki no wysyłasz.
czechu5
  1. <?php
  2. if(isset($_POST['box']) && isset($_POST['sel']) && isset($_POST['price']) && isset($_POST['dsc'])){
  3.  
  4. $box = $_POST['box'];
  5. $sel = $_POST['sel'];
  6. $dsc = $_POST['dsc'];
  7. $price = $_POST['price'];
  8.  
  9.  
  10. for($i=0;$i<count($box);$i++){
  11.  
  12.  
  13. $string .= 'Wybrałeś : '.$box[$i].' quantity : '.$sel[$i].' Price : '.$price[$i].' description: '.$dsc[$i].'';
  14. }
  15. print($string);
  16. }
  17.  
  18.  
  19. ?>


skrypt dziala ale kiedy zaznacze np tylko ostatni pole to pokazuje wartosc 0 czyli z innego pola, tak samo jest z price i dsc.
wartosci z tych pol sie mieszaja jesli nie sa zaznaczone wszystki checkboxy.


jesli zaznacze checkboxy 4,5,6
to pokazuja one watosc odpowiednio :

4 - 1
5 - 2
6 - 3


a zaznaczajac np 2 i 6
2 - 1
6 - 2


wszystkich pol jest tyle samo. 6 checkboxow , 6 selectow ....
erix
To ustawiaj z góry indeksy w nazwach, np. checkbox[1], checkbox[2], itd.
czechu5
  1. <form id="form1" name="form1" method="post" action="untiled.php">
  2.  
  3. <input name="box[0]" type="checkbox" value="1" />
  4. <input name="box[1]" type="checkbox" value="2" />
  5. <input name="box[2]" type="checkbox" value="3" />
  6.  
  7. <select name="sel[0]" id="select">
  8. <option value="0">select</option>
  9. <option value="1">1</option>
  10. <option value="2">2</option>
  11. <option value="3">3</option>
  12. <select name="sel[1]" id="select2">
  13. <option value="0">select</option>
  14. <option value="1">1</option>
  15. <option value="2">2</option>
  16. <option value="3">3</option>
  17.  
  18. <select name="sel[2]" id="select3">
  19. <option value="0">select</option>
  20. <option value="1">1</option>
  21. <option value="2">2</option>
  22. <option value="3">3</option>
  23.  
  24. <input name="hidden[0]" type="hidden" id="hiddenField" value="111" />
  25. <input name="hidden[1]" type="hidden" id="hiddenField2" value="222" />
  26. <input name="hidden[2]" type="hidden" id="hiddenField3" value="333" />
  27.  
  28. <input name="" type="submit" value="Submit" />
  29. </form>


ale skrypt zwraca zla wartosc.. pokazuje wszystkie chexkboxy

  1. <?php
  2. if(isset($_POST['box']) && isset($_POST['sel']) && isset($_POST['hidden'])){
  3.  
  4.  
  5. $box = $_POST['box'];
  6. $sel = $_POST['sel'];
  7. $hidden = $_POST['hidden'];
  8.  
  9.  
  10. for($i=0;$i<3;$i++)
  11. {
  12.  
  13. $string .= 'Wybrałeś : '.$box[$i].' '.'wartość z listy to : '.$sel[$i].' '.'wartość pola : '.$hidden[$i].'
  14. ' ;
  15.  
  16. }
  17. print($string);
  18.  
  19.  
  20. }
  21.  
  22.  
  23. ?>


co robie zle?
robar12
Kod
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<form id="form1" name="form1" method="post" action="index.php">

<input name="box[0]" type="checkbox" value="1" />
<input name="box[1]" type="checkbox" value="2" />
<input name="box[2]" type="checkbox" value="3" />

<select name="sel[0]" id="select">
<option value="0">select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="sel[1]" id="select2">
<option value="0">select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

<select name="sel[2]" id="select3">
<option value="0">select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

<input name="hidden" type="hidden" id="hiddenField" value="xt2by2t321" />

<input name="" type="submit" value="Submit" />
</form>

<?php
if(isset($_POST['box']) && isset($_POST['sel']) && isset($_POST['hidden'])){


$box = $_POST['box'];
$sel = $_POST['sel'];
$hidden = $_POST['hidden'];

print('<pre>');
print_r($_POST);
print('</pre>');

//Pętle uzależniasz od długości tablicy $sel ponieważ tablica $box jest zmiennej gługości
for($i=0;$i<count($sel);$i++)
{
if($box[$i]!=0){
$b = $box[$i];
$string .= 'Wybrałeś : '.$b.'. ';
}else{
  //Ustawia pusty $string  na pusty
  $b = "";
  $string .= "";
}
if($sel[$i]!=0){
$s = $sel[$i];
$string .= 'Wartość z listy to : '.$sel[$i].' / ';
}else{
  //Ustawia pustystring
  $s = "";
  $string .= "";
}

$string .= 'Pole ukryte : '.$hidden.'<br/>';

}
print($string);


}


?>

// Może ten kawałek kodu coś ci podpowie


dzieję się tak dlatego , ponieważ pętla for iteruje count($sel) razy.
warunek można zrobić ale po co jak przecież hidde'm sprawdzasz z którego formuarza dane przyszły?.
Wystarczy warunkiem sprawdzić czy dane pochodzą z formularza np. zamuwienia książki , ale nie uwzględniać go w $string , bo po co klientowi ukryte dane.
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.