Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Poprawne napisanie formularza
IceBeast
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 20.11.2010

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


Próbowałem napisać prosty formularz, ale nic z tego nie wyszło... Pojawia się Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /x/public_html/newthread.php on line 30.
Kod
<?php
ob_start();
require 'includes/config.php';

session_start();
$number = $_GET['id'];
$user = $_SESSION['user_id'];

if(empty($_GET))
{
echo "nie wybrano nic";
}
else
{?>


<form method="post">Tytuł wątku: <input type="text" name="name" size="50"  /><br>
Opis wątku: <input type="text" name="desc" size="50"  /><br>
Treść:  <br><textarea name="text" cols="15" rows="30"></textarea><br>
<input type="submit" value="Wyslij!" />

<?php }
$name=$_POST["name"];
$desc=$_POST["desc"];
$text=$_POST["text"];
$user=$_POST["user"];

$zapis = "INSERT INTO threads (id, pid, name, desc, author, text, date) VALUES ('', 'x', '$name', '$desc', '$text', '$user', '')";
$wyn = mysql_query($zapis);
$dane = mysql_fetch_array($wyn);
echo "x ".$_POST["name"]." został wysłany.";



ob_end_flush();
?>


Czy ktoś mógłby powiedzieć co zrobiłem źle?

Ten post edytował IceBeast 16.02.2011, 20:00:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $zapis = "INSERT INTO threads (id, pid, name, desc, author, text, date) VALUES ('', 'x', '$name', '$desc', '$text', '$user', '')";
  2. $wyn = mysql_query($zapis) or die(mysql_error());


Napisz nam jaki błąd wyświetli


-----------------------------------------

A dla pewności sprawdź czy $_POST nie jest pusty:

  1. <?php }
  2. $name=$_POST["name"];
  3. $desc=$_POST["desc"];
  4. $text=$_POST["text"];
  5. $user=$_POST["user"];
  6.  
  7. echo '<pre>';
  8. print_r($_POST);


Ten post edytował CuteOne 16.02.2011, 20:08:44
Go to the top of the page
+Quote Post
IceBeast
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 20.11.2010

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


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc, author, text, date) VALUES ('', 'x', '', '', '', '', '')' at line 1

A oto screen tabeli threads:
(IMG:http://i56.tinypic.com/25ix2zc.png)

Po dodaniu tego drugiego kodu:
Kod
Array
(
)


Ten post edytował IceBeast 16.02.2011, 20:11:07
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. zmień desc na cos innego np. descc
2. dodaj action="" do tagu <form>
<form method="post" action="newthread.php?id=5"> (nie wiem o co chodzi z tym ID więc to ewentualnie do zmiany)


Ten post edytował CuteOne 16.02.2011, 20:14:18
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Masz użytą niedozwoloną nazwę tabeli - desc. Opatrz ją w `` to powinno śmigać.

Ten post edytował sadistic_son 16.02.2011, 20:17:07
Go to the top of the page
+Quote Post
IceBeast
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 20.11.2010

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


Kod
$descc=$_POST["descc"];
<input type="text" name="descc" size="50"  />
VALUES ('', 'x', '$name', '$descc', '$text', '$user', '')

Nadal ten sam błąd.

Teraz zmieniłem również w bazie danych z desc na descc i nadal
Kod
Array
(
)
Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/exiliado/domains/iboard.neteasy.pl/public_html/newthread.php on line 34


CuteOne, nie moge tego action dodać bo ID pobierane jest z adresu ?id=x

Ten post edytował IceBeast 16.02.2011, 20:17:58
Go to the top of the page
+Quote Post
CuteOne
post
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


(id, pid, name, `desc`, author, text, date)

sadistic: heh a ja zawsze starałem się omijać takie słówka
Go to the top of the page
+Quote Post
IceBeast
post
Post #8





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 20.11.2010

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


Teraz
Kod
Array
(
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''descc', author, text, date) VALUES ('', 'x', '', '', '', '', '')' at line 1


:/

Teraz w tabeli jest pole descc a cały kod wygląda tak:
Kod
<?php
ob_start();
require 'includes/config.php';

session_start();
$number = $_GET['id'];
$user = $_SESSION['user_id'];

if(empty($_GET))
{
echo "nie wybrano nic";
}
else
{?>


<form method="post">Tytuł wątku: <input type="text" name="name" size="50"  /><br>
Opis wątku: <input type="text" name="descc" size="50"  /><br>
Treść:  <br><textarea name="text" cols="15" rows="30"></textarea><br>
<input type="submit" value="Wyslij!" />

<?php }
$name=$_POST["name"];
$descc=$_POST["descc"];
$text=$_POST["text"];
$user=$_POST["user"];

echo '<pre>';

print_r($_POST);

      $zapis = "INSERT INTO threads (id, pid, name, 'descc', author, text, date) VALUES ('', 'x', '$name', '$descc', '$text', '$user', '')";
$wyn = mysql_query($zapis) or die(mysql_error());
$dane = mysql_fetch_array($wyn);
echo "x ".$_POST["name"]." został wysłany.";



ob_end_flush();
?>


Ten post edytował IceBeast 16.02.2011, 20:19:31
Go to the top of the page
+Quote Post
sadistic_son
post
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


PID jest w bazie typu integer a Ty próbujesz dodać go jako string. To samo tyczy się autora.
A co do desc czy tam descc... złe cudzysłowy użyłeś w nazewnictwie kolumn, użyj tego nad TABem, nie tegp koło entera ;P

Ten post edytował sadistic_son 16.02.2011, 20:23:11
Go to the top of the page
+Quote Post
IceBeast
post
Post #10





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 20.11.2010

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


D:
Zawsze wcześniej ten koło entera mi działał, dzięki ;]

Teraz Array() Unknown column '' in 'field list'.

Czyli co mam z tym pid zrobić? (IMG:style_emoticons/default/smile.gif)
Już rozumiem. Ale jeśli chcę, żeby do author wstawiało ID użytkownika pobierane z sesji to jak to mam zrobić? Zmienić na varchar?

Ten post edytował IceBeast 16.02.2011, 20:28:40
Go to the top of the page
+Quote Post
Prezi2907
post
Post #11





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Cytat(sadistic_son @ 16.02.2011, 20:21:04 ) *
PID jest w bazie typu integer a Ty próbujesz dodać go jako string. To samo tyczy się autora.
A co do desc czy tam descc... złe cudzysłowy użyłeś w nazewnictwie kolumn, użyj tego nad TABem, nie tegp koło entera ;P

Cytat(IceBeast @ 16.02.2011, 20:09:05 ) *
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc, author, text, date) VALUES ('', 'x', '', '', '', '', '')' at line 1

A oto screen tabeli threads:
(IMG:http://i56.tinypic.com/25ix2zc.png)

Po dodaniu tego drugiego kodu:
Kod
Array
(
)

Tak jak sadistich pisał z tym PID ... + weź ogarnij co gdzie wkładasz...
TWÓJ KOD
  1. $zapis = "INSERT INTO threads (id, pid, name, 'descc', author, text, date) VALUES ('', 'x', '$name', '$descc', '$text', '$user', '')";


POPRAWIONY
  1. $zapis = "INSERT INTO threads (id, pid, name, INNE, author, text, date) VALUES ('', 'ŻADEN X TYLKO JAKAŚ LICZBA...', '$name', '$PoCoTaNAzwa?','ZJADŁEŚ AUTORA JAK NIE UŻYWASZ DAJESZ NULL LUB PUSTE POLE' ,'$text', '$DATE A DAJESZ USERA...', '')";

I nie używaj żadnych nazw dziwnych... desc... co to ma Ci oznaczać w tym formularzu. Nazwy powinny Ci coś mówić a nie zamęt wprowadzać... Ogarnij coś i rób po kolei a nie wywalasz byle co i dawaj do przodu... Zjadłeś i wartość i dałeś zupełnie pokręcone dane... Pozdrawiam...



A te ostatnie wolne pole to nie wiem od czego (IMG:style_emoticons/default/smile.gif) nie mogę się doszukać (IMG:style_emoticons/default/smile.gif)

zrób może tak:
  1. $zapis = "INSERT INTO threads (id, pid, name, inna_nazwa, author, text, date) VALUES ('', '', '$name', '$descc', '$user', '$text', '')";


Cytat(IceBeast @ 16.02.2011, 20:09:05 ) *
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc, author, text, date) VALUES ('', 'x', '', '', '', '', '')' at line 1

A oto screen tabeli threads:
(IMG:http://i56.tinypic.com/25ix2zc.png)

Po dodaniu tego drugiego kodu:
Kod
Array
(
)

i w bazie ustaw...

ID - zostaw
pid - pewnie id person czyli osoby... możesz zostawić ale wtedy zmienna przekazuj ID lub po wyciągnięciu z innej tabeli...
name - powinno działać...
desc - zmien ta nazwe, daj coś po polsku byle nie takie głupie nazwy
author - wysyłasz ID tylko czy nazwe usera ? Jak samo ID może być, jak nazwe to musisz dać varchar lub text...
text - daj text dla wygody bo w może później dłuższy tekst będziesz chciał wprowadzać i wtedy już nie będzie to tak dobre...
date - co tym chcesz zdziałać? nie wysyłasz nic więc nic sie nie wpisze.... daj timestamp i bez zadnych auto_increment bo inaczej będzie się sypać i jak wprowadzasz timestamp to nie rów '' tylko wpisuj NULL to samo wygodnie jest robić dla id tez lepiej NULL niz ''


Pozdrawiam.

Uwagi są czysto osobiste i może się ktoś z nimi nie zgadzać ale proszę o nie podważanie tych wzmianek to są tylko sugestie...

Ten post edytował Prezi2907 16.02.2011, 20:54:26
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 14:34