• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Checkbox wysyłanie danych z tablicy - tylko litery

Object Storage Arubacloud
0 głosów
572 wizyt
pytanie zadane 24 września 2017 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)

Witam

Mam dzisiaj takie problem. Otóż pobieram dane z bazy sql i wrzucam do input i checkbox.
Niestety po wysłaniu zapytania do bazy danych pojawiają się dziwne rzeczy. Zamiast pełnej nazwy np RAMKA, w kolejnych wierszach mam R a potem w następnej A. Istotne jest to, że zczytuje dobrą ilość checbox, ale złe wartości. Poniżej kod  oraz screen z bazy danych.
 

	<div class="span12">
		
		
<div class="span2 text-left">Usługa<hr></div>
<div class="span2 text-center">Całość<hr></div>		
<div class="span2 text-center">Cena Części<hr></div>
<div class="span2 text-center">NETTO<hr></div>
<div class="span2 text-center">Koszt wymiany B2C<hr></div>
</div>
<?php 
foreach ($stmt as $row) {
	$calosc = $row['CENACZESC'] + $row['SERWISB2C'];
       ?>
	<div class="span12">	
<div class="span2 text-left">
    <input type="checkbox" name="category[]" id ="$id" value="<?php $row['TYP']; ?>"><?php echo  " ".$row['TYP'] . " " . $row['INFO']. " " . $row['RAMKA']. " " . $row['KOLOR']; ?>
</div>
<input type="hidden" name="kolor" value="<?php echo $row['KOLOR']; ?>">	        
TYP<input type="text" name="czesc" value="<?php echo $row['TYP']; ?>">        
<div class="span2 text-center"><input type="text" name="calosc[]" class="form-control text-center" value="<?php echo $calosc; ?>"></div>		
<div class="span2 text-center"><input type="text" name="cenaczesci[]" class="form-control text-center" value="<?php echo $row['CENACZESC']; ?>"></div>
<div class="span2 text-center"><input type="text" name="netto[]"  class="form-control text-center" value="<?php echo $row['NETTO']; ?>"></div>
<div class="span2 text-center"><input type="text" name="cenawymiany[]" class="form-control text-center" value="<?php echo $row['SERWISB2C']; ?>"></div>
		</div>
		
<?php } ?>
<input type="hidden" name="ilosc" value="1">
<input type="hidden" name="MARKA" value="<?php echo $row['MARKA']; ?>">
<input type="hidden" name="MODEL" value="<?php echo $row['MODEL']; ?>">

Kod zapytania do bazy danych

foreach($_POST['category'] as $id=>$value){
      $czesc = $db -> prepare("INSERT  ticketnaprawa SET ilosc = :ilosc, ticket = :ticket, czesc = :czesc, kolor = :kolor, model = :model, cenaczesci = :cenaczesci, netto = :netto, cenawymiany = :cenawymiany ");    
   	  $czesc -> bindValue(':ilosc', $_POST['ilosc'], PDO::PARAM_STR); 
      $czesc -> bindValue(':ticket', $_POST['ticket'], PDO::PARAM_STR); 
      $czesc -> bindValue(':czesc', $_POST['czesc'][$id], PDO::PARAM_STR); 
      $czesc -> bindValue(':kolor', $_POST['kolor'][$id], PDO::PARAM_STR); 
      $czesc -> bindValue(':model', $_POST['MODEL'], PDO::PARAM_STR); 
      $czesc -> bindValue(':cenaczesci', $_POST['cenaczesci'][$id], PDO::PARAM_INT); 
      $czesc -> bindValue(':netto', $_POST['netto'][$id], PDO::PARAM_INT); 
      $czesc -> bindValue(':cenawymiany', $_POST['cenawymiany'][$id], PDO::PARAM_INT); 
      $czesc -> execute();
}

A poniżej screen z bazy danych

1 odpowiedź

0 głosów
odpowiedź 24 września 2017 przez Chess Szeryf (76,710 p.)
edycja 24 września 2017 przez Chess

Zmień w bazie wartość z char(1), na np. varchar. Chyba, że wiesz, że nie będą się pojawiać teksty dłuższe niż, np. 20 znaków, to daj wtedy char(20).

Edit: Źle masz napisane zapytanie SQL, powinno być UPDATE ... SET, a nie INSERT ... SET.

komentarz 26 września 2017 przez Chess Szeryf (76,710 p.)

https://forum.pasja-informatyki.pl/288328/jak-wykonac-przeladowywanie-stronny#c288678
http://phpmajster.blogspot.com/2015/06/ajax-podstawy-ajax-i-obiekt.html

xmlhttp.open("POST", "ajax.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("miesiac=" + numer);

W PHP możesz odebrać to tak:

echo $_POST['miesiac'];

 

komentarz 26 września 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)
Korzystałem z tego tutorialu

https://www.w3schools.com/php/php_ajax_database.asp

Dlaczego nie widać tego co pobiorę z bazy danych i zaznaczę checkbox a potem wyślę POST-em? Wiem, że są różne możliwości wysyłania poprzez POST (ajax). Tę treść, którą sobie pobieram jest w <div id="txtHint"> </div>. Chcę, żeby dynamicznie pobierała mi się treść cennika, ale potem chcę zaznaczyć kilka opcji i wysłać. Błądzę i niestety nie wiem co dalej. Może macie jakieś pomysły?
komentarz 26 września 2017 przez Chess Szeryf (76,710 p.)
komentarz 26 września 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)
No i super (cytując mojego syna) - czyli czar prysnął :(

Jednak do cennika jak najbardziej działa. Jakieś wskazówki jak tego szukać, żeby po wybraniu czegoś z <select> miałbym możliwość wyboru części?
komentarz 26 września 2017 przez Chess Szeryf (76,710 p.)

Wysłałem Tobie linki po to, abyś przeczytał zawartość tych witryn. Lepiej byłoby moim zdaniem, gdybyś sobie template Ajax'a skopiował z MDN.

Nie chcę powtarzać, co napisałem w innym temacie, ale...

<select name="choose" id="choose">
    <option value="8">eight</option>
</select>

Odbierasz to tak:

echo $_POST['choose'];

name ma być w select, a nie w polach option.

 

Podobne pytania

0 głosów
0 odpowiedzi 136 wizyt
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 16 października 2016 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)
0 głosów
1 odpowiedź 1,166 wizyt
pytanie zadane 6 września 2015 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...