Skocz do zawartości

[php/sql] Pomoc z komentami na stronie


Zakol

Rekomendowane odpowiedzi

Robię swoją stronkę, i stanąłem na komentarzach. Robie je w php (sql) i to pierwszy raz więc nie za bardzo wiem co i jak xD Mam już baze, tabele i pola; zrobiłem żeby komenty wyświetlały się na stronie (Tymon mi pomagał =X), ale za Chiny nie mogę zrobić, żeby można było robić nowe wpisy :angry: Aktualnie mam coś takiego:

 

[index.php]

<?php
$sql = mysql_connect('localhost', 'login', 'haslo');
mysql_select_db('database');
$wykonaj = mysql_query("SELECT * FROM exams_comments WHERE piece_id='111111'");
while ($pole = mysql_fetch_array($wykonaj, MYSQL_BOTH))
{
echo '<b>'.$pole["author_id"].'</b>'.'<BR>';
echo $pole["content"].'<BR>'.'<BR>';
}
echo '<BR>'.'<BR>';
?>

<FORM name="forma" action="addcom.php" method="POST">
Nazwa :<br><INPUT TYPE="TEXT" NAME="autor"><br><br>
Tresc :<br><textarea rows=6 cols=40 NAME="tekst"></textarea><br><br>
<INPUT TYPE="hidden" NAME="process_id" value="111111">
<INPUT TYPE="SUBMIT" value="Dodaj"><br>
</FORM>

 

[addcom.php]

<?php
    @mysql_query("INSERT INTO `exams_comments` (`piece`, `author`, `content`) VALUES
      (
      $_POST["tekst"],
      $_POST["autor"],
      $_POST["process_id"])"
      );
?>

 

Co tutaj jest źle?

Jak próbuje dodać komenta to wyskakuje error:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in source/addcom.php on line 4

Proszę o pomoc i z góry dzięki. B)

Odnośnik do komentarza
Udostępnij na innych stronach

Proste to bardzo :] Pomyśl jak możesz wysłać jakieś dane. Z formularza :D Choćby takiego :

<form action="dodaj_koma.php" METHOD="POST">

<input TYPE="text" NAME="nick">
<textarea cols="40" rows="9" name="text"></textarea>

<input TYPE="SUBMIT" value="Dodaj komentarz">
</form>

 

Teraz patrz. <form action="dodaj_koma.php" method="post"> Wysyła te dane do pliku dodaj_koma.php metodą post. Czyli musisz mieć plik który odbierze te dane, a w tym pliku skrypt odczytujący i dodający do tabeli nowy wpis.

 

Wygląda to mniej więcej tak :

$nick=$_POST['nick']; // Odbiera dane z pola formularza "nick" i zapisuje do zmiennej.
$text=$_POST['text']; // Odbiera dane z pola formularza "text" i zapisuje do zmiennej.

$zapytanie="INSERT INTO nazwa_tabeli VALUES ('$nick','$text')";
$wykonaj=mysql_query ($zapytanie);

header("Location: index.php"); // Przekierowanie na stronę główną

I tu uwaga! Użyłem polecenia header czyli albo jo skasujesz albo będziesz musiał wstawić ten skrypt przed tagiem <html> ;)

 

No i to chyba tyle. Do tego możesz jeszcze dodać jakieś zabezpieczenia itd. Jeśli gdzieś błąd popełniłem to poprawcie mnie :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

@mysql_query("INSERT INTO `exams_comments` (`piece`, `author`, `content`) VALUES
     (
     '".$_POST['tekst']."',
     '".$_POST['autor']."',
     '".$_POST['process_id']."')"
     );

był to podstawowy błąd - znak " otwierał i zamykał w tym przypadku zmienną. Pozatym zmienna dodawana do bazy musi znaleźć się pomiędzy ' i '.

Proponuję też drugie wyjście

$autor=$_POST['autor'];
$tekst=$_POST['tekst'];
$pid=$_['process_id'];
@mysql_query("INSERT INTO exams_comments (piece, author, content) VALUES      ('$text','$autor','$pid');

Odnośnik do komentarza
Udostępnij na innych stronach

Tymon powtórzył to co napisałem wcześniej i tylko dodał

header("Location: index.php");

Po obu przykładach (Tymona i Gnyska) wyskakuje error:

Parse error: parse error, unexpected T_STRING in source/addcom.php on line 6

:angry:

Nie wiem, może coś jest nie tak w index.php ?

Odnośnik do komentarza
Udostępnij na innych stronach

Coś ruszyło jak dałem to co gnysek na początku napisał:

@mysql_query("INSERT INTO `exams_comments` (`piece`, `author`, `content`) VALUES
    (
    '".$_POST['tekst']."',
    '".$_POST['autor']."',
    '".$_POST['process_id']."')"
    );
    header("Location: http://www.darmoland.pl//index.php");

Ale teraz nie ma errora tylko cofa mnie do strony głównej bez dodania komenta.

 

EDIT:

Tymon, przecież sam kazałeś zrobić typy "text" :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Zmienne tekstowe powinne być w cudzysłowiu. Wpisz echo mysql_error();

 

 

ps. Nie SQL tylko MySQL. SQL to standard zapisu zapytań, a MySQL to jedna z baz danych opierających się na tym standardzie. Wiem, czepiam się. :D

Edit by BWO: A czy on napisał że oparty na bazie SQL? Nie, tylko że wykoszystuje SQL - wiem czepiam sie :P

Odnośnik do komentarza
Udostępnij na innych stronach

Znowu mam problem - niby już można dodawać komentarze ale narazie "na sucho" (dodaje to mu kazałem, nie czyta z wpisanych danych). I właśnie nie jestem pewien jak powinna wyglądać składnia:

$zmienna="$_POST('autor')";

 

Jeżeli zrobie to co podałem wyżej, to zamiast $zmienna zwraca puste pole <_<

A powinno przecież to co wpisałem w polu tekstowym 'autor' na poprzedniej stronie. Niech mnie ktoś poprawi :lol2:

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...