Problem z edycją checkbox - In_array

Problem z edycją checkbox - In_array
HA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
0

Witam,
Próbowałem samemu rozwiązać problem, który dotyczy edycji pół checkbox. Działa edycja, gdy usunę $id i z zapytania sql where id='$id'. Dodatkowo znika w pasku adresu id, który chce edytować. Kod jest taki:

Kopiuj
require_once('dbconn.php');
  $id = isset($_GET['id']) ? $_GET['id'] : '';
  $sql2 = $db->query("SELECT * FROM generalbox where id = '$id'");
	 $result=$sql2->fetch_All(MYSQLI_ASSOC);
	foreach($result as $row){
		$update_data = explode(',', $row['form']);
		//print_r($update_data);
	}
	
 if(isset($_POST['submit'])){
	$id = isset($_GET['id']) ? $_GET['id'] : '';
	
	$update_data = implode(',', $_POST['general']);
    $sql = $db->query("UPDATE generalbox SET form = '$update_data' where id = '$id' "); 
		 
	 if($sql>0){
		 echo "Zaktualizowano dane";
	 }else{
		 echo "Błąd w aktualizacji!";
	 }
	 
	  $sql3 = $db->query("SELECT * FROM generalbox where id='$id' ");
	 $result=$sql3->fetch_All(MYSQLI_ASSOC);
	foreach($result as $row){
		$update_data = explode(',', $row['form']);
	}
}

A błędy pokazują na pola checkbox:

Kopiuj
Warning: in_array() expects parameter 2 to be array, string given in C:\xampp\htdocs\www\Projekty\formcheckbox.php on line 50
/> PHP
Warning: in_array() expects parameter 2 to be array, string given in C:\xampp\htdocs\www\Projekty\formcheckbox.php on line 51
/> Python
Warning: in_array() expects parameter 2 to be array, string given in C:\xampp\htdocs\www\Projekty\formcheckbox.php on line 52
Kopiuj
<div><input type="checkbox" name="general[]" value="PHP" <?php in_array('PHP', $update_data) ? print "checked" : ""; ?> /> PHP</div>
	   <div><input type="checkbox" name="general[]" value="Python" <?php in_array('Python', $update_data) ? print "checked" : ""; ?> /> Python</div>
	   <div><input type="checkbox" name="general[]" value="C#" <?php in_array('C#', $update_data) ? print "checked" : ""; ?>/> C#</div>```

Robiłem to na podstawie jednego tutorialu, który jest na Youtube, tylko u tego autora działało i nie było żadnego select nad isset. Też sprawdzałem jak miał i nie działało. Proszę o odpowiedź problem rozwiązać a naszukałem się. I zastanawiałem się, czy tu napisać, ale to już moja ostateczność.


Nie wystarczy napisać program/aplikacje web. Ważne jest aby ją zaprezentować tak, aby zainteresowała się duża społeczność.
edytowany 2x, ostatnio: cerrato
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:2 minuty
  • Postów:3475
0

Do $update_data przypisujesz explode co tworzy stringa.
Przemyśl sobie jak to ma działać i co robić.

HA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
0
jurek1980 napisał(a):

Do $update_data przypisujesz explode co tworzy stringa.
Przemyśl sobie jak to ma działać i co robić.

Ja wiem, jak ma działać, i chcę aby po ID edytowało checkboxy. Dodawanie do bazy mam napisane i obok danych mam edit, który przenosi do id danego rekordu.


Nie wystarczy napisać program/aplikacje web. Ważne jest aby ją zaprezentować tak, aby zainteresowała się duża społeczność.
serek
  • Rejestracja:około 11 lat
  • Ostatnio:około 7 godzin
  • Postów:1473
0

Przeanalizuj sobie kod, a dokładniej użycie implode.

HA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
0
serek napisał(a):

Przeanalizuj sobie kod, a dokładniej użycie implode.

To może pokaże link do tego filmu, na którym się wzorowałem. Film I u tego Autora działa z implode i explode, tylko, że ja mam bez listy rozwijanej.
Ja już analizowałem i nie mogę dojść. Dlatego proszę o pomoc. Bo naprawdę szukałem. Wiem i czytałem różnice implode a explode, ale nadal nie mogę dojść.


Nie wystarczy napisać program/aplikacje web. Ważne jest aby ją zaprezentować tak, aby zainteresowała się duża społeczność.
edytowany 3x, ostatnio: Hatezit
PH
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:9
0

Daj w 5 linijce jakis dump na row['form`] co tam jest

HA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
0

Znalazłem problem, zakomentowałem wszystko i dodałem pole username, gdzie mam tak przy dodawaniu. Okazało się, że zapytanie update nie działa. Dobra napiszę od nowa, ale nie dziś,


Nie wystarczy napisać program/aplikacje web. Ważne jest aby ją zaprezentować tak, aby zainteresowała się duża społeczność.
serek
  • Rejestracja:około 11 lat
  • Ostatnio:około 7 godzin
  • Postów:1473
1

Po pierwsze strasznie nieczytelne to masz. Masz zmienną update_data, która służy do 3 rzeczy naraz, przy czym poprzedni jej wynik jest nadpisywany dalej. Raz zawiera stringa, a raz array,

Potem masz foreach, który też nic nie wnosi, bo też wyżej wymienioną zmienną nadpisuje za każdym razem. Więc na koniec update_data straci informacje o poprzednich iteracjach. Zresztą, czy to jest gdziekolwiek użyte potem?

Kopiuj
 foreach($result as $row){
        $update_data = explode(',', $row['form']);
 }
edytowany 1x, ostatnio: serek
HA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
0
serek napisał(a):

Po pierwsze strasznie nieczytelne to masz. Masz zmienną update_data, która służy do 3 rzeczy naraz, przy czym poprzedni jej wynik jest nadpisywany dalej. Raz zawiera stringa, a raz array,

Potem masz foreach, który też nic nie wnosi, bo też wyżej wymienioną zmienną nadpisuje za każdym razem. Więc na koniec update_data straci informacje o poprzednich iteracjach. Zresztą, czy to jest gdziekolwiek użyte potem?

Kopiuj
 foreach($result as $row){
        $update_data = explode(',', $row['form']);
 }

Dlatego podałem link (film) gdzie jest raz explode, a nie dwa razy. Tylko u autora działa z jednym, a u mnie nie. Muszę na nowo napisać.
Update!
Już sobie poradziłem i działa. Kod jest bez zmian, ale poprawiłem przekazywanie id. Zrobiłem to etapami. 1. Dodawanie do bazy, 2. wyświetlenie. 3 przejście do edycji i działa.


Nie wystarczy napisać program/aplikacje web. Ważne jest aby ją zaprezentować tak, aby zainteresowała się duża społeczność.
edytowany 1x, ostatnio: Hatezit
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)