Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Błąd w trakcie zapisywania
pawel06281990
post
Post #1





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Witam,

dostaje taki błąd
Incorrect integer value: '' for column `grobnet_01`.`wyszukiwarka_posts`.`post_comments`
chodź w bazie mam ustawione TINYINT(1) bo w tej tabeli będę zapisywał 1 lub 0 zawsze mi działało teraz mi działać nie chce co to może być (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Johnas
post
Post #2





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


a można fragmento kodu i treść zapytania... Zobacz też jakie dane są w zmiennej i spróbuj dodać wykonywane zapytanie przez phpmyadmin
Go to the top of the page
+Quote Post
pawel06281990
post
Post #3





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Moj kod wygląda tak
  1. $post_comments = isset($_POST['post_comments']) ? '1': "0";

a tak wygląda checkbox
  1. echo"<input type='checkbox' name='post_comments' value='yes' onclick='SetRatings();'".$post_comments." />";


Przez phpmyadmin dodaje
Go to the top of the page
+Quote Post
Johnas
post
Post #4





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


pokaż całe zapytanie które sie wykonuje

Cytat(pawel06281990 @ 5.01.2023, 19:09:00 ) *
Moj kod wygląda tak
  1. $post_comments = isset($_POST['post_comments']) ? '1': "0";

to powinno być przy walidacji

Cytat(pawel06281990 @ 5.01.2023, 19:09:00 ) *
  1. echo"<input type='checkbox' name='post_comments' value='yes' onclick='SetRatings();'".$post_comments." />";

a tutaj powinieneś mieć checked, a nie 0/1


Cytat( @ 5.01.2023, 19:09:00 )
Przez phpmyadmin dodaje


to znaczy że wina leży po stronie PHP

Ten post edytował Johnas 5.01.2023, 19:20:19
Go to the top of the page
+Quote Post
pawel06281990
post
Post #5





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Ja te pola wyboru zrobiłem we function.

tak wygląda moja function
  1. function form_checkbox_switch_succes($input_name, $label = '',$wyniki_wyświetlanie ='', array $options = []){
  2.  
  3. $default_options = [
  4. 'type' =>'checkbox',
  5. 'input_id' => $input_name,
  6. 'required' => FALSE,
  7. 'onclick_id' =>'',
  8. 'option' => [],
  9. 'class' => '',
  10. 'id' => '',
  11. ];
  12. $options += $default_options;
  13. $disabled='';
  14. $opt= '';
  15. foreach($options['option'] as $key => $name){
  16.  
  17.  
  18. $chackbox ="<div class='form-group'>";
  19. $chackbox .="<div class='icheck-success d-inline'>";
  20. $chackbox .="<input type='".$options['type']."' name='".$input_name."' value='".$key."' ".$disabled." class='".$options['class']."' id='".$options['id']."' ".($options['onclick_id'] ? " onclick='".$options['onclick_id']."' " : '')." ".($wyniki_wyświetlanie ? " checked='checked' " : '').">";
  21. $chackbox .="<label for='".$options['id']."'>".$name."</label>";
  22. $chackbox .="</div>";
  23. $chackbox .="</div>";
  24. }
  25. return $checkbox;
  26.  
  27. }


A tak kieruje zapytanie do function
  1. echo form_checkbox_switch_succes('post_comments', $post_comments, '',
  2. ['option' => ['yes' => $locale['516']],'id' => 'checkbox'.$locale['516']]);


i mi to działało normalnie.

Ten post edytował pawel06281990 5.01.2023, 19:21:14
Go to the top of the page
+Quote Post
Johnas
post
Post #6





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


dobrze, gdzieś wykonuje sie również zapytanie do bazy danych... Zobacz czy niezaznaczony Ci dodaje też do bazy... i czy przypadkiem
  1. $chackbox .="<input type='".$options['type']."' name='".$input_name."' value='".$key."' ".$disabled." class='".$options['class']."' id='".$options['id']."' ".($options['onclick_id'] ? " onclick='".$options['onclick_id']."' " : '')." ".($wyniki_wyświetlanie ? " checked='checked' " : '').">";




.($name ? " checked='checked' " : '').

bo $key => $value bo value nie powinno być key tylko 0 albo 1 w html, nie wiem jakie masz wartości w $key i $value- Weź to zamień na

  1. $chackbox .="<input type='".$options['type']."' name='".$input_name."' value='".$key."' ".$disabled." class='".$options['class']."' id='".$options['id']."' ".($options['onclick_id'] ? " onclick='".$options['onclick_id']."' " : '')." ".($wyniki_wyświetlanie ? " checked='checked' " : '')."> To jest $key=>".$key;
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Incorrect integer value: '' for column `grobnet_01`.`wyszukiwarka_posts`.`post_comments`

Komunikat bled wyraznie mowi ze wstawiasz pusty tekst '' w miejscie gdzie powinien byc INT. Wiec albo wkoncu podaj kod gdzie tworzysz zapytanie, albo sam szukaj co zepsules
Go to the top of the page
+Quote Post
Johnas
post
Post #8





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.01.2023, 19:34:58 ) *
Komunikat bled wyraznie mowi ze wstawiasz pusty tekst '' w miejscie gdzie powinien byc INT. Wiec albo wkoncu podaj kod gdzie tworzysz zapytanie, albo sam szukaj co zepsules



naprawdę? a ja myślałem że kod mówi że wartość dodawana nie jest integerem

Ten post edytował Johnas 5.01.2023, 19:41:55
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
naprawdę? a ja myślałem że kod mówi że wartość dodawana nie jest intrigerem

No ludzie, przeciez tam w bledzie zapytania wyraznie jest podane co jest wstawiane: ''
I posrednio tak, blad mowi, ze pusty tekst nie jest integerem.
Go to the top of the page
+Quote Post
pawel06281990
post
Post #10





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.01.2023, 19:34:58 ) *
Komunikat bled wyraznie mowi ze wstawiasz pusty tekst '' w miejscie gdzie powinien byc INT. Wiec albo wkoncu podaj kod gdzie tworzysz zapytanie, albo sam szukaj co zepsules


Kod, który ma sprawdzić czy checkbox jest zaznaczony.

  1. $post_comments = isset($_POST['post_comments']) ? '1': '0';


Jak sprawdzam go var_dump(); to pokazuje mi 0 tak jak powinno, bo checkbox jest nie zaznaczony jak zaznaczę checkbox to się ładuje problem tkwi, że on nie chce zapisać mi wartości 0 do bazy.

a tak wygląda sprawdzanie zapisu do bazy
  1. ["post_type"]=>string(5) "posts"
  2. ["post_category"]=>string(1) "1"
  3. ["post_comments"]=>string(1) "0"
  4. ["minaturs"]=>string(41) ""
  5. ["minaturs_t1"]=>string(44) ""
  6. ["minaturs_t2"]=>string(44) ""


No i pobiera ale nie zapisuje.
Go to the top of the page
+Quote Post
Johnas
post
Post #11





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


  1. function form_checkbox_switch_succes($input_name, $label = '',$wyniki_wyświetlanie ='', array $options = []){
  2.  
  3. $default_options = [
  4. 'type' =>'checkbox',
  5. 'input_id' => $input_name,
  6. 'required' => FALSE,
  7. 'onclick_id' =>'',
  8. 'option' => [],
  9. 'class' => '',
  10. 'id' => '',
  11. ];
  12. $options += $default_options;
  13. $disabled='';
  14. $opt= '';
  15. foreach($options['option'] as $key => $name){
  16.  
  17. if (strlen($key) == 0)
  18. $key = 0;
  19. else
  20. $key = 1;  
  21.  
  22.  
  23. $chackbox ="<div class='form-group'>";
  24. $chackbox .="<div class='icheck-success d-inline'>";
  25. $chackbox .="<input type='".$options['type']."' name='".$input_name."' value='".$key."' ".$disabled." class='".$options['class']."' id='".$options['id']."' ".($options['onclick_id'] ? " onclick='".$options['onclick_id']."' " : '')." ".($wyniki_wyświetlanie ? " checked='checked' " : '').">";
  26. $chackbox .="<label for='".$options['id']."'>".$name."</label>";
  27. $chackbox .="</div>";
  28. $chackbox .="</div>";
  29. }
  30. return $checkbox;
  31.  
  32. }


ten kod powinien działać... napisane na szybko wiec nie jest idealny (IMG:style_emoticons/default/tongue.gif) Piwko mi wisisz (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Chlopie... pokaz wkoncu kod ktory tworzy twoje zapytanie. Jesli twoj nastepny post bedzie bez tego kodu to temat zamkne bo dalsza dyskusja nie ma sensu (IMG:style_emoticons/default/smile.gif)

@Johnas cos ty sie tak zafiksowal na te value ze musi tam byc 0 albo 1 wylacznie? Value w checkbox moze byc dowolne.
Go to the top of the page
+Quote Post
Johnas
post
Post #13





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.01.2023, 19:49:33 ) *
@Johnas cos ty sie tak zafiksowal na te value ze musi tam byc 0 albo 1 wylacznie? Value w checkbox moze byc dowolne.


Bo to coś czego nienawidzę - Wordpress i wydawało mi się że on nie tworzy zapytania tylko funkcja sama dedukuje co ma wstawić (IMG:style_emoticons/default/biggrin.gif)

Dobra ja lece bo biblioteke mi zamykają

Ten post edytował Johnas 5.01.2023, 19:52:30
Go to the top of the page
+Quote Post
pawel06281990
post
Post #14





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Już wiem co jest grane kod który ma zapisać w array nie pobiera mi 0 i robi puste pole w zapisie

Kod zapisu do bazy w array wygląda tak

  1. function insert($table, $data, $exclude = array()){
  2. $fields = $values = array();
  3.  
  4. if( !is_array($exclude) ) $exclude = array($exclude);
  5.  
  6. foreach( array_keys($data) as $key ) {
  7. if( !in_array($key, $exclude) ) {
  8. $fields[] = "`$key`";
  9. $values[] = "'" . mysqlirealescapestring($data[$key]) . "'";
  10. }
  11. }
  12.  
  13. $fields = implode(",", $fields);
  14. $values = implode(",", $values);
  15. $sql = "INSERT INTO `$table` ($fields) VALUES ($values)";
  16.  
  17.  
  18. return dbquery($sql);
  19. }


jak sprawdziłem go array to mam taki wynik

  1. string(260) "INSERT INTO `wyszukiwarka_posts` (`post_author`,`post_date`,`post_title`,`post_visibility`,`page_content`,`po
    st_type`,`post_category`,`post_comments`,`minaturs`,`minaturs_t1`,`minaturs_t2`) VALUES ('1','1672944686','Test zapisu','1','','posts','1','','','','')"


dla tego mi daje komunikat błędu bo pole jest puste w zapisie

Coz brakuje w zapisie że usuwa mi 0
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Już wiem co jest grane kod który ma zapisać w array nie pobiera mi 0 i robi puste pole w zapisie

Juz ci to od dawna mowilem....
Go to the top of the page
+Quote Post
pawel06281990
post
Post #16





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Pytanie moje brzmi teraz takie czemu tak się dzieje??
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




POkaz dokladnie co zawiera $data

print_r($data);
Go to the top of the page
+Quote Post
pawel06281990
post
Post #18





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Po sprawdzieniu mamy to
  1. string(1) "0"
  2. (
  3. [post_author] => 1
  4. [post_date] => 1672945212
  5. [post_title] => Test zapisu
  6. [post_visibility] => 1
  7. [page_content] =>
  8. [post_type] => posts
  9. [post_category] => 0
  10. [post_comments] => 0
  11. [minaturs] =>
  12. [minaturs_t1] =>
  13. [minaturs_t2] =>
  14. )




Ten post edytował pawel06281990 5.01.2023, 20:09:14
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




znaczy ze to
$values[] = "'" . mysqlirealescapestring($data[$key]) . "'";

a dokladnie mysqlirealescapestring ci zamienia tekst 0 na pusty tekst. Wywal to mysqlirealescapestring dla testu.
Swoja droga tak beznadziejnego sposobu tworzenia zapytania nie widzialem juz od wiekow. Jak mozna tak robic jeszcze :/
Go to the top of the page
+Quote Post
pawel06281990
post
Post #20





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.01.2023, 20:06:51 ) *
znaczy ze to
$values[] = "'" . mysqlirealescapestring($data[$key]) . "'";

a dokladnie mysqlirealescapestring ci zamienia tekst 0 na pusty tekst. Wywal to mysqlirealescapestring dla testu.

Tak masz rację to mysqlirealescapestring(); mi zmienia 0 na puste pole
Bo jak dodałem samo zapytanie $data[$key] To pokazało mi 0
Cytat(nospor @ 5.01.2023, 20:06:51 ) *
Swoja droga tak beznadziejnego sposobu tworzenia zapytania nie widzialem juz od wiekow. Jak mozna tak robic jeszcze :/


Możesz sprecyzować swoją uwagę i co jest źle w mojej function (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 08:45