Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Poprawne napisanie formularza
Forum PHP.pl > Forum > Przedszkole
IceBeast
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?
CuteOne
  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);
IceBeast
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:


Po dodaniu tego drugiego kodu:
Kod
Array
(
)
CuteOne
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)
sadistic_son
Masz użytą niedozwoloną nazwę tabeli - desc. Opatrz ją w `` to powinno śmigać.
IceBeast
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
CuteOne
(id, pid, name, `desc`, author, text, date)

sadistic: heh a ja zawsze starałem się omijać takie słówka
IceBeast
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();
?>
sadistic_son
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
IceBeast
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ć? 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?
Prezi2907
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:


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 smile.gif nie mogę się doszukać 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:


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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.