ugrás a tartalomhoz

Egyszerű fórum kódom nem jó SQL-eket generál

Anonymous · 2005. Aug. 26. (P), 16.52
Sziasztok!

Egy forum létre hozásában kérném a segítségeteket.
Amikor hozzászólás érkezik egy témára akkor nekem nem úgy csinálja az sql beillesztést ahogy azt én elterveztem, ne a téma azonósítót írja be csak egy üres értéket
Amásik próblémám ezzel a kóddal hogy amikor válasz
érkezet akkor az üzenet lekérdezésbe nem a téma
azonosító marad hanem a hozzászoló neve.
tehát a lekérdezés hozzászólás után így néz ki:

select * from message whwre topic=ide a hozászoló nevét írja nem a téma azonosítót

Ezeket miért csinálja moit nem írtam jól?
Próbáltam már rejtett mezővel azzal se csinálja meg.
Ha tudtok lécci segítsetek.
ime a kódom:

<center><title>Topics create</title>
<table>
<form action="show1.php" method="post">
<tr><td><b>Név</b>:</td><td><input name="name"
type="text"></td></td>
<tr><td>email:</td><td><input
name="email"type="text"></td></tr>
<tr><td>Szöveg:</td><td><textarea  name="message"
cols=50 rows=25>&nbsp</textarea></td></tr>
<tr><td colspan=2 align="center"><input type="submit"
value="send"><input type="reset"
value="deleted"></td></tr>
</form></table>
</center>
<?php
$write=$_GET['topic'];// téma azonosító
$conn=mysql_connect("localhost", "tomika", "onweb");
mysql_select_db("forum");
$sql="select * from message WHERE
topicid='".$_GET['topic']."'";
$result=mysql_query($sql);
while($mess=mysql_fetch_array($result))
{
echo '".$mess['message']."';
}
echo $sql;
echo $_POST['name'];
$write=$_GET['topic'];
echo "<b>".$write."</b>";
if(isset($_POST['name']) and isset($_POST['email'])
and isset($_POST['message']))
{
$sql1="insert into message
values('".$_POST['message']."','NOW()','','".$write"','".$_POST['name']."')";
mysql_query($sql1);
echo $sql1;
}
echo $_POST['topic'];
mysql_close($conn);
?>
Köszi Tamás
 
1

Mindjárt étnézem a kódot

Sweetchack · 2005. Aug. 26. (P), 20.33
Most így első ránézésre nem tudom mi lehet a megoldás, de láttam néhány dolgot amit érdemeslenne javítani.

javasolt olvasmány :
http://www.w3.org/Provider/Style/TITLE.html
http://www.w3.org/WAI/UA/TS/html401/cp0909/0909-TABLE-CAPTION.html

aztán a <form> ne a <table> -ban legyen, hanem azt kéne hogy a <form> fogja közre a táblát. Persze ezek csak formaságok.

Jha majdnem elfelejtettem:
$sql="select * from message WHERE topicid='".$_GET['topic']."'";
adatellenörzés nélkül ne állíts össze SQL mondatot ürlapról jött adatokból.
2

Jó lenne ismerni az adatbázis tábák szerkezetét

Sweetchack · 2005. Aug. 26. (P), 21.04
INSERT INTO message .....
A harmadik mező az üres stringet kap.
Itt is közvetlenül használod a felhasználótól jött adatokat. Nem egészséges.
4

kösz

Anonymous · 2005. Aug. 26. (P), 21.19
megadhatom a tábla szerkezetemet csak nem tudom, hogy ide vagy küldjem inkább magánba?
3

Még néhány javaslat

Sweetchack · 2005. Aug. 26. (P), 21.15
A beérkezett ürlapnak a kiértékelését még az HTML ürlap megjelenítése elött végezd el. Igy ha hibás adatokat írt be a felhasználó akkor úgy tudod megjeleníteni az ürlapot, hogy a beírt adatok ott legyenek. (Hibaüzenettel vagy más kiemeléssel). Kényelmesebb, nem kell az egészet újra beírnia.
5

Köszi de..

Anonymous · 2005. Aug. 26. (P), 21.26
Ez még csak a próba verzióm azért nincs benne ellenőrzés csak szerettem volna kipróbálni, hogy tudok e témához hozzászólni, de nem lehet mert mindig nulla "id"- jű témához illeszti az új hozzászólást.
Nem pedig a kiválasztotthoz ezt nem értem miért csinálja.
6

<Nincs cím>

akksi · 2005. Aug. 26. (P), 23.40
Szia!

Egyrészt, ha azt szeretnéd, hogy segítsenek, akkor legalább tiszteld meg a többi olvasót azzal, hogy értelmes magyar mondatokat írsz ide, azt már nem is merem kérni, hogy áttekinthetően tördelve.

Ha jól értettem a problémákat:

Az insertnél lehet, hogy a tábla is rosszul van létrehozva, a kódból nem derül ki. Csináld úgy a query-t, hogy INSERT INTO tábla( 'mező1', 'mező2', 'mező3' ) VALUES ( 'érték1', 'érték2', 'érték3' );
Az id mezőt értelemszerűen hagyd ki belőle.

A $_GET['topic']-ot nem látom, honnan kapja.

Próbáld meg okosan feltenni a kérdést!

--
Akksi
7

$write=$_GET['topic'];

pint3r · 2005. Aug. 27. (Szo), 09.49
Szia!

Ha jól veszem ki a kódból, akkor az űrlapnak a topic azonosítót GET módon adod át, csak ezt nem fogadod és adod tovább POST módon. Ha elküldöd az űrlapot akkor az így el fog veszni.

Először fogadd az űrlapnak GET módon küldött azonosítót és tedd bele egy rejtett mezőbe pl: az alábbi módon:
<input type='hidden' name='topic' value='$_GET['topic']'>

A feldolgozásnál pedig a GET helyett POST-ot használj:
$write=$_POST['topic'];// téma azonosító

- pint3r -

GPRS Easy Connect Team
http://easyconnect.linuxuser.hu
8

Köszi

Anonymous · 2005. Aug. 27. (Szo), 12.14
Köszi így még ne próbáltam meg próbálom így is