27. februar 2006 - 17:37
Der er
28 kommentarer og 1 løsning
tilføj rækker til tabel i MySql database
Hej Jeg har brug for at kunne tilføje en lang liste af ord (1 ord pr. linie) til en tabel i min database, men ved ikke helt hvordan den skal drejes Scriptet skal have 3 felter. 1 textfield til listen af ord, 1. textbox til kategori ID og 1 textbox til sektion ID hvert ord skal så tilføjes til en eksisterende tabel hvor disse tre "variabler" angives pr. række. Jeg er en spasser til mysql så al hjælp modtages med kyshånd :)
Annonceindlæg fra HP
27. februar 2006 - 18:47
#1
Prøv noget i retning af: <?php $SektionId = $_REQUEST['sektionid']; $CategoryId = $_REQUEST['categoryid']; $Words = $_REQUEST['words']; $WordsExploded = explode("\n",$Words); if (is_numeric($SektionId) && is_numeric($CategoryId) && is_array($WordsExploded)) { while (list(,$Word) = @each($WordsExploded)) { if (trim($Word)) mysql_query("INSERT INTO dintabel (sektionid,categoryid,word) VALUES ($SektionId,$CategoryId,'".trim($Words)."')"); } } ?> Jeg er gået ud fra at feltet hvor du indtaster ordene er et textarea, og at man indtaster et ord pr. linie.
27. februar 2006 - 18:48
#2
Det var en fejl i sql-query, denne skal benyttes i stedet: mysql_query("INSERT INTO dintabel (sektionid,categoryid,word) VALUES ($SektionId,$CategoryId,'".trim($Word)."')");
27. februar 2006 - 18:52
#3
Det ser ud som noget jeg kan bruge... hvordan skal formularens submitknap fange funktionen?
27. februar 2006 - 18:53
#4
Og ja, det er et textarea til indtastning af ordene(min fejl)
27. februar 2006 - 20:14
#5
Prøv dette: <?php if (isset($_POST['ButtonSave'])) { $SektionId = $_POST['sektionid']; $CategoryId = $_POST['categoryid']; $Words = $_POST['words']; $WordsExploded = explode("\n",$Words); if (is_numeric($SektionId) && is_numeric($CategoryId) && is_array($WordsExploded)) { while (list(,$Word) = @each($WordsExploded)) { if (trim($Word)) mysql_query("INSERT INTO dintabel (sektionid,categoryid,word) VALUES ($SektionId,$CategoryId,'".trim($Word)."')"); } } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> SektionId<br> <input name="sektionid" type="text" id="sektionid" size="10" maxlength="10"> <br> <br> CategoryId<br> <input name="categoryid" type="text" id="categoryid" size="10" maxlength="10"> <br> <br> Words<br> <textarea name="words" cols="30" rows="10" id="words"></textarea> <br> <br> <input name="ButtonSave" type="submit" id="ButtonSave" value="Save"> </form> </body> </html>
13. marts 2006 - 22:10
#6
Beklager jeg først vender tilbage nu, men jeg har prøvet et par aftner at få koden til at virke uden rigtig held. Jeg har tilpasset den til mine tabeller i databasen og jeg får ingen fejl, men der bliver ikke oprettet noget nyt indhold i databasen Koden ser sådan ud: <?php if (isset($_POST['ButtonSave'])) { $server = "XXXXXX"; $dbuser = "XXXXXX"; $dbpasswd = "XXXXXX"; $dbname = "XXXXXX"; $connection = mysql_connect("$server","$dbuser","$dbpasswd") or die("Unable to connect to database"); mysql_select_db("$dbname", $connection) or die("Unable to select database"); $sectionid == '1'; $catid == '1'; $Words = $_POST['title']; $Words = $_POST['title_alias']; $WordsExploded = explode("\n",$Words); $publishDate = date('Y-m-d H:i:s'); $creator = "Administrator"; $publishState = intval($fgConfig['auto_publish']); $publishDays = intval($fgConfig['publish_days']); if ($publishState > 0 && $publishDays != 0 && !empty($publishDays)) $publishDown = date('Y-m-d H:i:s', time() + ($publishDays * 24 * 60 * 60)); mysql_query(" INSERT INTO jos_content (title,title_alias,introtext,fulltext,state,sectionid,mask,catid,created,created_by,created_by_alias,checked_out,publish_up,publish_down,attribs,version,ordering,metakey,access) VALUES ('test','test','','','$publishState','$sectionid','0','$catid','$publishDate','','$creator','0','$publishDate','$publishDown','introtext=0','createdate=1','1','0','','1')"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Speed Content</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> SektionId<br> <input name="sektionid" type="text" id="sektionid" size="10" maxlength="10"> <br> <br> CategoryId<br> <input name="catid" type="text" id="catid" size="10" maxlength="10"> <br> <br> Sider der skal oprettes <br> <textarea name="words" cols="30" rows="10" id="words"></textarea> <br> <br> <input name="ButtonSave" type="submit" id="ButtonSave" value="Save"> </form> </body> </html>
13. marts 2006 - 22:18
#7
Hvor får du $fgConfig fra?
13. marts 2006 - 22:32
#8
Det er godt set - fgconfig er ikke en jeg bruger, men den skal senere komme fra en xml fil så den kan bare udelades: $publishState = "1"; $publishDays = "1";
13. marts 2006 - 22:34
#9
Men det hjælper ikke rigtig noget at jeg retter oventående
13. marts 2006 - 22:38
#10
lige nu er det sådan set ikke så vigtigt at kunne oprette sider fra formularen - det vigtigste er, at jeg får en forbindese til databasen og får oprettet noget indhold - så er jeg sikkert på jeg bagefter kan få din kode til at virke...
13. marts 2006 - 22:40
#11
Prøv at smide: or die (mysql_error()); efter din insert query. Altså: mysql_query("INSERT INTO jos_content (title,title_alias,introtext,fulltext,state,sectionid,mask,catid,created,created_by,created_by_alias,checked_out,publish_up,publish_down,attribs,version,ordering,metakey,access) VALUES ('test','test','','','$publishState','$sectionid','0','$catid','$publishDate','','$creator','0','$publishDate','$publishDown','introtext=0','createdate=1','1','0','','1')") or die (mysql_error());
13. marts 2006 - 22:40
#12
Eksperten cutter så i koden: mysql_query("INSERT INTO jos_content....") or die (mysql_error());
13. marts 2006 - 22:46
#13
Se her se... så fik jeg jo en fejl der kan bruges til noget: 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 'fulltext,state,sectionid,mask,catid,created,created_by,created_by_alias,checked_' at line 1
13. marts 2006 - 23:02
#14
Jeg har lige siddet og kigget på din insert-query. Skal disse to "introtext=0,createdate=1" gemmes i samme felt i databasen?
13. marts 2006 - 23:07
#15
Nej det var da ikke meningen :-O
13. marts 2006 - 23:13
#16
Jo vent lige engang - kiggede lige i min database og "introtext=0,createdate=1" skal stå i samme felt... den er go nok
13. marts 2006 - 23:13
#17
Ok, så mangler du et felt navn i queryen. Du har pt. 19 feltnavne, men forsøger at sætte 20 værdier ind. Det er nok der fejlen skal findes. Så vidt jeg kan tyde ud fra feltnavne og værdier, er det nok i nærheden af feltet attribs du mangler et felt.
13. marts 2006 - 23:13
#18
Okay, så mangler du ikke et feltnavn, men har i stedet en værdie for meget.
13. marts 2006 - 23:15
#19
Prøv denne istedet: mysql_query("INSERT INTO jos_content (title,title_alias,introtext,fulltext,state,sectionid,mask,catid,created,created_by, created_by_alias,checked_out,publish_up,publish_down,attribs,version,ordering, metakey,access) VALUES ('test','test','','','$publishState','$sectionid','0','$catid','$publishDate','', '$creator','0','$publishDate','$publishDown','introtext=0,createdate=1','1','0','', '1')");
13. marts 2006 - 23:16
#20
Før stod dine attribs som 'introtext=0','createdate=1'. Dette vil den forsøge at indsætte i to forskellige felter, så jeg har ændre det til 'introtext=0,createdate=1'
13. marts 2006 - 23:22
#21
Får stort set samme fejl: 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 'fulltext,state,sectionid,mask,catid,created,created_by, created_by_alias,checke' at line 2
13. marts 2006 - 23:26
#22
Nu virker det sgu... mysql_query("INSERT INTO jos_content (`title`, `title_alias`, `introtext`, `fulltext`, `state`, `sectionid`, `mask`, `catid`, `created`, `created_by`, `created_by_alias`, `checked_out`, `publish_up`, `publish_down`, `attribs`, `version`, `ordering`, `metakey`, `access` ) VALUES ('test','test','','','$publishState','$sectionid','0','$catid','$publishDate','', '$creator','0','$publishDate','$publishDown','introtext=0,createdate=1','1','0','', '1')") or die (mysql_error()); Der skulle bare `` omkring felterne... kanon
13. marts 2006 - 23:28
#23
Jeg havde lige din query inde i min mysql_front, og kan se at ordet version nok er et reserveret ord. Så det er nok derfor at det hjælper at sætte `` rundt omkrint feltnavnene.
13. marts 2006 - 23:47
#24
Men når jeg smider din kode ind så sker der nada $sectionid == '1'; $catid == '1'; $title = $_POST['title']; $WordsExploded = explode("\n",$title); $publishDate = date('Y-m-d H:i:s'); $creator = "Administrator"; $publishState = "1"; $publishDays = "0"; if ($publishState > 0 && $publishDays != 0 && !empty($publishDays)) $publishDown = date('Y-m-d H:i:s', time() + ($publishDays * 24 * 60 * 60)); if (is_numeric($sectionid) && is_numeric($catid) && is_array($WordsExploded)) { while (list(,$title) = @each($WordsExploded)) { if (trim($title)) mysql_query("INSERT INTO jos_content (`title`, `title_alias`, `introtext`, `fulltext`, `state`, `sectionid`, `mask`, `catid`, `created`, `created_by`, `created_by_alias`, `checked_out`, `publish_up`, `publish_down`, `attribs`, `version`, `ordering`, `metakey`, `access` ) VALUES ('".trim($title)."','".trim($title)."','','','$publishState','$sectionid','0','$catid','$publishDate','', '$creator','0','$publishDate','$publishDown','introtext=0,createdate=1','1','0','', '1')") or die (mysql_error()); } } } Kan du se en fejl ?
13. marts 2006 - 23:55
#25
Du mangler at tilrette denne linie $title = $_POST['title'];, så den passer til din form. Prøv at ændre den til $title = $_POST['words'];
13. marts 2006 - 23:57
#26
Det var bare catid og sectionid der drillede lidt. NU virker skidtet sgu som det skal :) Mange tak for din hjælp
13. marts 2006 - 23:58
#27
jeg havde rettet formen så den passede til title idet dette navn var mere sigende for hvad der skulle oprettes. skulle bare rette cadid og sectionid til $sectionid = "1"; $catid = "1";
14. marts 2006 - 00:00
#28
Ok. Takker for pointene.
Vi tilbyder markedets bedste kurser inden for webudvikling