Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PHP / MySQL - czy widzi ktoś gdzieś błąd w zapytaniu ?

sharminte 15 Lut 2016 04:52 609 12
  • #1 15 Lut 2016 04:52
    sharminte
    Poziom 5  

    dla obu zapytań w skrypcie zamieszczonym poniżej otrzymuję komunikaty o błędzie czy są zamieszczone w input'ach polskie znaki czy też nie. tj. "nie można było utworzyć..." , "nie można było dodać...".

    oto plik o nazwie add_worker.php

    Kod: php
    Zaloguj się, aby zobaczyć kod


    a oto formularz.

    Kod: html
    Zaloguj się, aby zobaczyć kod

    0 12
  • #2 15 Lut 2016 06:51
    rufek90
    Poziom 23  

    Wywal ID z inserta. A create table powinno chyba zadziałać. Jeżeli nie działa to wyświetl je sobie i sprawdź, co jest źle. Masz jakiś program do obsługi bazy? Jeżeli tak, to zapuść do niego wygenerowane przez siebie zapytanie - dużo łatwiej niż tak pracować z ciemno.
    Poza tym, tworzenie tabeli dla pojedynczego peselu to raczej słaby pomysł :)

    0
  • #3 15 Lut 2016 07:59
    sharminte
    Poziom 5  

    za moment sprawdzę :) co do peselu to jak dla mnie jest to dużo prostsze jeżeli chodzi o późniejsze generowanie zestawień czasu pracy :)

    Dodano po 18 [minuty]:

    wrzuciłem to zapytanie poprzez PHPMyAdmin'a do bazy i normalnie zostało zinterpretowane z konkretnymi wartościami teraz tylko należałoby ustalić gdzie został popełniony błąd że nie chce się wykonać z poziomu PHP

    0
  • #4 15 Lut 2016 10:14
    arnoldziq
    Moderator Programowanie

    sharminte napisał:
    należałoby ustalić gdzie został popełniony błąd że nie chce się wykonać z poziomu PHP
    A jaki błąd generuje PHP?

    0
  • #5 15 Lut 2016 14:02
    sharminte
    Poziom 5  

    jedyny błąd wyświetlany przez PHP to ten który jes zdefiniowany przeze mnie, tzn.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    oraz

    Kod: php
    Zaloguj się, aby zobaczyć kod


    interpreter błędu żadnego nie podaje.

    0
  • #6 15 Lut 2016 14:10
    arnoldziq
    Moderator Programowanie

    sharminte napisał:
    interpreter błędu żadnego nie podaje.
    Włącz pokazywanie błędów i warnings i zobacz co się wyświetli.

    0
  • #7 15 Lut 2016 14:26
    sharminte
    Poziom 5  

    jeżeli masz na myśli:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    to jest włączone i nic nie wyświetla.

    0
  • #8 15 Lut 2016 15:06
    arnoldziq
    Moderator Programowanie

    Zanim odpalisz to zapytanie SQL, wyświetl je na ekranie (już wypełnione danymi), skopiuj tekst i załącz tutaj.

    0
  • #9 15 Lut 2016 15:14
    sharminte
    Poziom 5  

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Notice: Undefined variable: pracownik in C:\xampp\htdocs\projekt\add_worker.php on line 32
    = 'CREATE TABLE'.213124123.'(id INT NOT NULL AUTO_INCREMENT, data_wejscia date NOT NULL, czas_wejscia time NOT NULL, data_wyjscia date NOT NULL, czas_wyjscia time NOT NULL, czas int (2), PRIMARY KEY(id))'.'INSERT INTO `worker_list` (`Imie`, `Nazwisko`, `Pesel`, `mail`, `telefon`) VALUES ('.test.', '.tęst.', '.213124123.', '.patryk@test.pl.', '.112334221.')'
    Notice: Undefined variable: pracownik in C:\xampp\htdocs\projekt\add_worker.php on line 33

    0
  • #10 15 Lut 2016 15:15
    marcinj12
    Poziom 40  

    Podstawowe pytanie: czy po wykonaniu skryptu sprawdziłeś phpMyAdminem, czy aby pracownik / tabela nie zostali jednak dodani do bazy? Czy nie próbujesz po raz drugi dodać już istniejącego wpisu / tabeli?

    0
  • #11 15 Lut 2016 15:27
    arnoldziq
    Moderator Programowanie

    A następne, to po co tworzysz za każdym razem osobną tablelę, skoro wszystkie dane są powtarzalne?

    0
  • Pomocny post
    #12 15 Lut 2016 15:37
    marcinj12
    Poziom 40  

    arnoldziq napisał:
    A następne, to po co tworzysz za każdym razem osobną tablelę, skoro wszystkie dane są powtarzalne?
    Na to już Koledze ze 3x zwracali uwagę, ale Kolega dalej brnie w zaparte... Cóż, jego wybór. :)

    Tak dopiero teraz patrzę, że chyba nie wstawiasz apostrofów gdzie trzeba... Popatrz sobie na jakiś przykładach, gdzie w MySqlu mają być apostrofy zwykłe, gdzie odwrócone, a gdzie można je pominąć. Na pewno w zapytaniu $tabela_insert nie wstawiasz apostrofów - tylko przerywasz ciąg tekstowy i łączysz go kropką z kolejnym. Najlepiej umieść całe zapytanie w cudzysłowie, wtedy można wstawiać w środku apostrofy.

    Zapytanie powinno wyglądać mniej więcej (nie mam mysqla pod ręką żeby przetestować) tak:
    Kod: php
    Zaloguj się, aby zobaczyć kod


    To można jeszcze poupraszczać i nie łączyć kropkami, ale teraz nie pamiętam kiedy PHP rozwiąże nazwę zmiennej, a kiedy nie... A już najlepiej użyć do tego parametrów.

    0
  • #13 15 Lut 2016 15:49
    sharminte
    Poziom 5  

    Brnę w temat ponieważ dla mnie jako początkującego w tym języku jest znacznie prościej jako zestawienie wyrzucić na ekran wyświetloną całą tabelę dla konkretnego pracownika niż bawić się z pętlami i generowaniem warunków, które nie do końca mi jeszcze wychodzą. Po prostu wybieram to co na daną chwilę odniesie zamierzony efekt a nie skomplikuje mi bardzo życia i nie zeżre, że tak powiem 50h na zastanawianie się jak to powinno być zrobione a później kolejnych 50 na pisanie i zastanawianie się co zostało zrobione źle ;)

    wracając do tematu:
    zapytanie które jest w kodzie, jeżeli podam wartości takie jak przez PHP to przez PHPMyAdmina normalnie przechodzą. użytkowników żadnych w bazie nie mam więc nie mogą się zdublować więc to na pewno nie było przyczyną komunikatu o nie możności wykreowania użytkownika:)

    dziękuję za fragment kodu, za momencik sprawdzę czy działa i tam znać :)

    ---- EDIT ----
    Dziękuję bardzo, faktycznie było tak jak mówiłeś namieszałem z apostrofami i tym zestawieniem dwóch zapytań do bazy w jednej zmiennej. W momencie kiedy rozbiłem to na dwie i nadanie drugiego zapytania dodałem w miejscu wyświetlenia komunikatu o pomyślnym wykonaniu pierwszego, wszystko przeszło tak jak powinno. :) dziękuję bardzo za pomoc :)

    0