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

skrypt działa ale jednak nie PHP, MySql

Object Storage Arubacloud
0 głosów
390 wizyt
pytanie zadane 12 listopada 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

Witam, trochę tak jak w tytule :D

Mam taki kod dodający wartość do bazy

 include("connect.php");
    if(isset($_SESSION['zalogowany'])){
        if(isset($_POST['content'])){
            $title = $_POST['title'];
            $content = $_POST['content'];
            $sth=$connect->prepare('INSERT INTO `forum-posts`(`title`,`content`) VALUES (:title,:content)');
            $sth->bindParam(':title', $title);
            $sth->bindParam(':content', $content);
            $sth->execute();
            echo "Dodano do BD";
        }
    }

Skrypt wywołuję sobie ajaxem do danego diva...no i nie działa. Kiedy odtworzę skrypt normalnie tzn. skrypt.php, wtedy działa. Skrypt działa również kiedy usunę issety i nie pobieram danych z pól forma tylko ustawię stałe zmienne. Trochę mnie to dziwi ponieważ nie przesyłam żadnych danych AJAXem tylko wywołuję nim skrypt do diva, na tym jego działanie się kończy. Ma ktoś jakiś pomysł?

Z góry dzięki za pomoc.

komentarz 12 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
Pokaż kod Ajaxa. Najprawdopodobniej źle pobierasz odpowiedź ze skryptu.
komentarz 12 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)

Ale ja nie pobieram żadnych danych AJAXem. Kod którym wyświetlam plik w divie wygląda tak:

function getXMLHttpRequestObject()
{
  try{
    return new XMLHttpRequest();
  }
  catch(e){
    try{
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e){
      return false;
    }
  }
}

function pobierzDane()
{
  if(XMLHttpRequestObject){
    var div = document.getElementById("content-forum");
    var przyciskEl = document.getElementById("new-post");
    przyciskEl.disabled = true;
    XMLHttpRequestObject.open("GET", "new-post.php");
    XMLHttpRequestObject.onreadystatechange = function()
    {
      if (XMLHttpRequestObject.readyState == 4 && 
          XMLHttpRequestObject.status == 200) {
        div.innerHTML = XMLHttpRequestObject.responseText;
        przyciskEl.disabled = false;
      }
    }
    XMLHttpRequestObject.send(null);
  }
}

var XMLHttpRequestObject = getXMLHttpRequestObject();

 

1
komentarz 13 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
Wywal tego nulla z metody send i wtedy sprawdź.
komentarz 13 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Niestety to samo
1
komentarz 13 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
Kod przesłania jest w ogóle wykonywany?
komentarz 13 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)

Tak, jeśli zrobię coś takiego

 $title = "Hahaha";
            $content = "DDDDDD";
            $sth=$connect->prepare('INSERT INTO `forum-posts`(`title`,`content`) VALUES (:title,:content)');
            $sth->bindParam(':title', $title);
            $sth->bindParam(':content', $content);
            $sth->execute();
            echo "Dodano do BD";

Dane zostaną dodane do bazy, kiedy dodam issety i wartości do zmiennych z post nie działa

1
komentarz 13 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)

Ale ja się pytam o kod w tym warunku if (XMLHttpRequestObject).

1
komentarz 13 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
Zmień metodę wysyłania z GET na POST. Domyślam się, że masz zamiar coś wysyłać do serwera (po $_POST w kodzie), więc metodę send zaopatrz w odpowiedni argument z danymi.
komentarz 13 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Dalej nic. Nie wiem czy mnie rozumiesz ale ja nie przesyłam danych do bazy AJAXem, wyświetlam n im tylko skrypt, taka alternatywa dla ramki
komentarz 13 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
ok, zadziałało. Wyniosłem skrypt dodawania do osobnego pliku a w formularzu dodałem action""
komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)

Chciałbym jeszcze dopytać w jaki sposób przesłać wartości AJAXem GETem do pliku php?

Kod wygląda tak:

function getXMLHttpRequestObject()
{
  try{
    return new XMLHttpRequest();
  }
  catch(e){
    try{
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e){
      return false;
    }
  }
}
 
function pobierzDane()
{
  if(XMLHttpRequestObject){
    var div = document.getElementById("content-forum");
    var przyciskEl = document.getElementById("new-post");
    przyciskEl.disabled = true;
    XMLHttpRequestObject.open("GET", "new-post.php");
    XMLHttpRequestObject.onreadystatechange = function()
    {
      if (XMLHttpRequestObject.readyState == 4 && 
          XMLHttpRequestObject.status == 200) {
        div.innerHTML = XMLHttpRequestObject.responseText;
        przyciskEl.disabled = false;
      }
    }
    XMLHttpRequestObject.send(null);
  }
}
 
var XMLHttpRequestObject = getXMLHttpRequestObject();

Tutaj gdzie jest ta linijka:

XMLHttpRequestObject.open("GET", "new-post.php");

i jak by do new-post.php dodać coś takiego new-post.php?id=id ?

Jak to zrobić, no wiecie o co mi chodzi, prawda :D

Tak jak to pokazałem raczej się tego nie robi, no i jeszcze kwestia "włożenia" danych z początkowego pliku do zmiennej w JS

Tak schematycznie to mniej więcej tak: poczatek.php(tutaj jest ta wartość którą chcę włożyć do GET) ----GET---->skrypt który wyświetli pliki new-post.php------------->new-post.php(Odebranie i wyświetlenie danych z GETa)

komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)

Jeśli chodzi o przesyłanie metodą GET, to masz przykład tutaj. Nie rozumiem, co masz na myśli pisząc ten schemat. Napisz to własnymi słowami.

komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Przykład mi wystarczył, dzięki :)

A jeśli chodzi o przesyłanie danych POSTem
komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)

Tutaj masz wszystko.

komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
edycja 14 listopada 2017 przez mi-20

OK, jeszcze tylko to:

Jak mam tą linijkę:

xhttp.open("GET", "new-post.php?t=" + id, true);

i zdefiniuję sobie wyżej tą zmienną

var id ="id";

to w jaki sposób przesłać do niej dane z PHP?

komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
A nie zmienną?
komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Zmienną, sorry za pomyłkę, myślałem o czymś innym, już poprawiam. W takim raze jak do zmiennej przesłać dane z PHP?
komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)

Masz przecież w swoim kodzie stringa 

XMLHttpRequestObject.responseText;

który zawiera odpowiedź serwera.

komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)

Ok, ale i tak wiele mi to nie mówi, dalej nie wiem jak to zrobić. Coś w tym stylu?

var id = "<?php echo $id; ?>";

 

komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)
Nie rozumiem, czego ty nie rozumiesz. Wysyłasz żądanie Ajaxem do skryptu PHP o zwrócenie jakieś odpowiedzi i pobierasz ją z tego stringa.
komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Nie rozumiem tego:

jeśli w pliku plik.php mam $zmienna1

to jak jak jej wartość "włożyć" do zmiennej JS którą mam w pliku "skrypt.js"

tego nie ogarniam
komentarz 14 listopada 2017 przez Patrycjerz Mędrzec (192,320 p.)

Aha. To musisz jakoś zwrócić jej wartość do JS przez Ajaxa. Najłatwiej wywołać echo $zmienna1, a potem pobrać dane z responseText.

komentarz 14 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)
Jakiś przykład albo przykładowy kod?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 412 wizyt
pytanie zadane 14 listopada 2018 w PHP przez Bartek Pydynkowski Początkujący (320 p.)
0 głosów
1 odpowiedź 601 wizyt
pytanie zadane 27 stycznia 2018 w JavaScript przez BlvckFox Gaduła (4,240 p.)
0 głosów
1 odpowiedź 978 wizyt

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 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!

...