Avatar billede daniel_d Nybegynder
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 :)
Avatar billede whatever Nybegynder
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.
Avatar billede whatever Nybegynder
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)."')");
Avatar billede daniel_d Nybegynder
27. februar 2006 - 18:52 #3
Det ser ud som noget jeg kan bruge... hvordan skal formularens submitknap fange funktionen?
Avatar billede daniel_d Nybegynder
27. februar 2006 - 18:53 #4
Og ja, det er et textarea til indtastning af ordene(min fejl)
Avatar billede whatever Nybegynder
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>
Avatar billede daniel_d Nybegynder
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>
Avatar billede whatever Nybegynder
13. marts 2006 - 22:18 #7
Hvor får du $fgConfig fra?
Avatar billede daniel_d Nybegynder
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";
Avatar billede daniel_d Nybegynder
13. marts 2006 - 22:34 #9
Men det hjælper ikke rigtig noget at jeg retter oventående
Avatar billede daniel_d Nybegynder
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...
Avatar billede whatever Nybegynder
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());
Avatar billede whatever Nybegynder
13. marts 2006 - 22:40 #12
Eksperten cutter så i koden:

mysql_query("INSERT INTO jos_content....") or die (mysql_error());
Avatar billede daniel_d Nybegynder
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
Avatar billede whatever Nybegynder
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?
Avatar billede daniel_d Nybegynder
13. marts 2006 - 23:07 #15
Nej det var da ikke meningen :-O
Avatar billede daniel_d Nybegynder
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
Avatar billede whatever Nybegynder
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.
Avatar billede whatever Nybegynder
13. marts 2006 - 23:13 #18
Okay, så mangler du ikke et feltnavn, men har i stedet en værdie for meget.
Avatar billede whatever Nybegynder
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')");
Avatar billede whatever Nybegynder
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'
Avatar billede daniel_d Nybegynder
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
Avatar billede daniel_d Nybegynder
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
Avatar billede whatever Nybegynder
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.
Avatar billede daniel_d Nybegynder
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 ?
Avatar billede whatever Nybegynder
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'];
Avatar billede daniel_d Nybegynder
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
Avatar billede daniel_d Nybegynder
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";
Avatar billede whatever Nybegynder
14. marts 2006 - 00:00 #28
Ok. Takker for pointene.
Avatar billede daniel_d Nybegynder
22. marts 2006 - 16:09 #29
Du har vel ikke lige et svar på denne: http://www.eksperten.dk/spm/697268
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester