Avatar billede 1409 Praktikant
24. februar 2005 - 13:16 Der er 3 kommentarer og
1 løsning

multiple inserts i mysql

CREATE TABLE artikel (
  ar_id smallint(4) NOT NULL auto_increment,
  dato date NOT NULL default '0000-00-00',
  overskr varchar(255) NOT NULL default '',
  manchet text NOT NULL,
  brodtekst text NOT NULL,
  PRIMARY KEY  (ar_id)
) TYPE=MyISAM;

CREATE TABLE ar_ho (
  id tinyint(4) NOT NULL auto_increment,
  ar_id tinyint(4) NOT NULL default '0',
  ho_id tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE holdet (
  ho_id smallint(2) NOT NULL auto_increment,
  fornavn varchar(30) NOT NULL default '',
  efternavn varchar(40) NOT NULL default '',
  PRIMARY KEY  (ho_id)
) TYPE=MyISAM;



En liste af forfatternavne genereres ud fra dette på art_index.php

$query2 = MYSQL_QUERY("SELECT ho_id, fornavn, efternavn FROM holdet ORDER BY efternavn");

<SELECT NAME=\"forfatter\" SIZE=\"2\" MULTIPLE>\n";

WHILE($r = MYSQL_FETCH_ARRAY($query2)){
    $ho_id = $r["ho_id"];
    $fornavn = $r["fornavn"];
    $efternavn = $r["efternavn"];

    ECHO "<OPTION VALUE=\"$ho_id\">&nbsp;".$fornavn." ".$efternavn."&nbsp;</OPTION>\n";
    }
ECHO "</SELECT>\n";

Værdierne fra form-felterne "forfatter", "overskr", "manchet" og "brodtekst" parses til action.php

I et system, hvor det er muligt at lægge artikler ind i tabellen 'artikel', skal det være muligt at vælge flere forfattere, der gerne skulle indsættes i 'ar_ho' - men hvordan? Jeg er på bar bund...

/* -- action -- */
$dato = date("Y-m-d");

IF(isset($_POST['add'])) {
    $overskr = $_POST['overskr'];
    $manchet = $_POST['manchet'];
    $brodtekst = $_POST['brodtekst'];

    //Kobler til db
    MYSQL_CONNECT($host,$user,$password) OR DIE($c_error);
    MYSQL_SELECT_DB($database) OR DIE($s_error);
   
    //tekst sættes ind i db
    $query = MYSQL_QUERY("INSERT INTO artikel (dato, overskr, manchet, brodtekst, tid_id)"."VALUES('$dato','$overskr','$manchet','$brodtekst')");
   
    $mess = "Artikel er sat ind.";
    unset($_POST['add']);
    Header("Location:art_index.php?mess=$mess");
}

På forhånd tak!
Avatar billede greew Nybegynder
24. februar 2005 - 15:33 #1
Jeg vil skyde på, at når du har valgt de forskellige punkter i forfatter-selecten, og når du trykker på send, eller hvad du nu gør, skal du have noget Javascript til at genere en streng med de forskellige $ho_id'er på listeform, som dit PHP så bagefter kan pille fra hinanden og bruge.

Jeg sidder og leger med det, men jeg er ikke særlig hård i Javascript, så det går langsomt.
Avatar billede greew Nybegynder
24. februar 2005 - 15:47 #2
Ok.. en anden mulighed.

i
<SELECT NAME=\"forfatter\" SIZE=\"2\" MULTIPLE>\n";

skal du skrive
<SELECT NAME=\"forfatter[]\" SIZE=\"2\" MULTIPLE>\n";

Så sender du i hvert fald et array med numre i stedet for et enkelt tal.

Så laver du en løkke, som løber array'et igennem og indsætter de rigtige værdier i databasen for hver værdi i array'et..

Kan det bruges ?
Avatar billede hmortensen Nybegynder
25. februar 2005 - 07:31 #3
Som greew siger og så kan du bruge:

foreach ($_POST['forfatter'] AS $val)
{
  INSERT INTO tabel (felt) VALUES ($val)...
}
Avatar billede 1409 Praktikant
22. marts 2006 - 11:34 #4
Lukker...
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