webForumDet fria alternativet

Posta formulär till olika tabeller, samtidigt

Databaser & SQLur Databashanterare & SQL

3 svar · 566 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Någon som kan ge ett exempel på hur man kan posta till olika tabeller samtidigt, via ett formulär!?

Dessa tabeller finns:

CREATE TABLE `serier` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `titel` varchar(100) NOT NULL default '',
  `datum` datetime NOT NULL default '0000-00-00 00:00:00',
  `handling` text NOT NULL,
  `bild` varchar(100) NOT NULL default '',
  `speltid` varchar(5) NOT NULL default '',
  `skapad` date NOT NULL default '0000-00-00',
  `medlem` tinyint(4) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `titel` (`titel`)

CREATE TABLE `serie_kategori` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `namn` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `namn` (`namn`)

CREATE TABLE `serie_kategori_mix` (
  `serie` int(10) unsigned NOT NULL default '0',
  `kategori` int(10) unsigned NOT NULL default '0',
  KEY `serie` (`serie`,`kategori`)

CREATE TABLE `serie_skadespelare_mix` (
  `serie` int(10) unsigned NOT NULL default '0',
  `skadespelare` int(10) unsigned NOT NULL default '0',
  KEY `serie` (`serie`,`skadespelare`)

CREATE TABLE `skadespelare` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `namn` varchar(50) NOT NULL default '',
  `fodd` date NOT NULL default '0000-00-00',
  `dod` date NOT NULL default '0000-00-00',
  `land` int(10) unsigned NOT NULL default '0',
  `foto` varchar(100) NOT NULL default '',
  `biografi` text NOT NULL,
  `tillagd` datetime NOT NULL default '0000-00-00 00:00:00',
  `medlem` tinyint(4) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `namn` (`namn`)

När jag ska lägga till en ny serie, så vill jag också att resp. skådespelare samt kategorier (som visas i drop-down menyer) skall sparas i länk-tabellerna. *lite svårt att förklara*

Medlem sedan juni 200032 967 inlägg
#2

Det är ju bara att exekvera x antal insert-frågor.

insert into tabell1 ...
insert into tabell2 ...
insert into tabell3 ...

Vad är problemet?

Medlem sedan juli 20041 271 inlägg
#3

@nders skrev:

Det är ju bara att exekvera x antal insert-frågor.

insert into tabell1 ...
insert into tabell2 ...
insert into tabell3 ...

Vad är problemet?

:x
Problemet är att jag inte har arbetat med detta tidigare.

Är det ok att göra såhär:

<?php
include("link.php");

if (isset($_POST['submit']))
{

	$title = ucfirst($_POST['title']);
       $handling = ucfirst($_POST['handling']);

	mysql_query("INSERT INTO titles values
	(
	0,
	'$title',
       '$handling',
	'{$_POST['year']}',
	'{$_POST['lang']}',
	'{$_POST['url']}',
	'{$_POST['image']}',
	0,
	0
	)") or die(mysql_error());

	$lastid = mysql_insert_id();

	mysql_query("INSERT INTO directormix values
	(
	'0',
	'$lastid',
	'{$_POST['dir1']}'
	)") or die(mysql_error());;

	if ($_POST['dir2'] != "Tom")
	{
	mysql_query("insert into directormix values
	(
	'0',
	'$lastid',
	'{$_POST['dir2']}'
	)") or die(mysql_error());;
	}

	if ($_POST['dir3'] != "Tom")
	{
	mysql_query("insert into directormix values
	(
	'0',
	'$lastid',
	'{$_POST['dir3']}'
	)") or die(mysql_error());;
	}

	if ($_POST['dir4'] != "Tom")
	{
	mysql_query("insert into directormix values
	(
	'0',
	'$lastid',
	'{$_POST['dir4']}'
	)") or die(mysql_error());;
	}

	if ($_POST['dir5'] != "Tom")
	{
	mysql_query("insert into directormix values
	(
	'0',
	'$lastid',
	'{$_POST['dir5']}'
	)") or die(mysql_error());;
	}

	mysql_query("insert into genremix values
	(
	'0',
	'{$_POST['gen1']}',
	'$lastid'
	)") or die(mysql_error());;

	if ($_POST['gen2'] != "Tom")
	{
	mysql_query("insert into genremix values
	(
	'0',
	'{$_POST['gen2']}',
	'$lastid'
	)") or die(mysql_error());;
	}

	if ($_POST['gen3'] != "Tom")
	{
	mysql_query("insert into genremix values
	(
	'0',
	'{$_POST['gen3']}',
	'$lastid'
	)") or die(mysql_error());;
	}

	if ($_POST['gen4'] != "Tom")
	{
	mysql_query("insert into genremix values
	(
	'0',
	'{$_POST['gen4']}',
	'$lastid'
	)") or die(mysql_error());;
	}
}
?>

<?php
if ($_POST['name'] && $_POST['nationality'])
{

	mysql_query("
	INSERT INTO directors
	VALUES (
	0,
	'{$_POST['name']}',
	'{$_POST['nationality']}',
	'{$_POST['year']}',
	'{$_POST['month']}',
	'{$_POST['day']}',
       '{$_POST['bild']}'
	)") or die(mysql_error());
	echo "Skådespelare sparad...";
	echo "<hr>";
}
?>

<form name="add" method="post" action="test.php">
<table width="600" border="0" bordercolor="#666666">
  <tr bgcolor="#CCCCCC">
    <td><span class="style8">L&Auml;GG TILL SERIE </span></td>
    <td><span class="style7"></span></td>
  </tr>
  <tr>
    <td width="38%"><strong>Namn (titel):</strong></td>
    <td width="62%"><input name="title" type="text" class="formfield" size="30" /></td>
  </tr>
  <tr>
    <td bgcolor="#666666">&nbsp;</td>
    <td bgcolor="#666666">&nbsp;</td>
  </tr>
  
  <tr>
    <td><strong>Sk&aring;despelare:</strong></td>
    <td><select name="dir1" size="1" class="formdropdown" id="<?php echo $_SERVER['php_self'] ?>">
      <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
        </select>
      <select name="dir2" size="1" class="formdropdown" id="dir2">
      <option>Tom</option>
      <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
    </select>
      <select name="dir3" size="1" class="formdropdown" id="dir3">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="dir4" size="1" class="formdropdown" id="dir4">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="dir5" size="1" class="formdropdown" id="dir5">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="dir6" size="1" class="formdropdown" id="dir6">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name ASC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="dir7" size="1" class="formdropdown" id="dir7">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,name FROM directors ORDER BY name DESC");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>Kategori:</strong></td>
    <td><select name="gen1" size="1" class="formdropdown" id="gen1">
      <?php
$sql = mysql_query("SELECT id,genre FROM genre ORDER BY genre");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
        </select>
      <select name="gen2" size="1" class="formdropdown" id="gen2">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,genre FROM genre ORDER BY genre");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="gen3" size="1" class="formdropdown" id="gen3">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,genre FROM genre ORDER BY genre");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select>
      <select name="gen4" size="1" class="formdropdown" id="gen4">
        <option>Tom</option>
        <?php
$sql = mysql_query("SELECT id,genre FROM genre ORDER BY genre");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
      </select></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>S&auml;ndes f&ouml;rsta g&aring;ngen:</strong></td>
    <td><select name="select" size="1" class="formdropdown" id="select">
      <?php
for($i=1930;$i<=date("Y");$i++)
{
echo "<option>" . $i . "</option>";
}
?>
        </select></td>
  </tr>
  <tr>
    <td><strong>Spr&aring;k:</strong></td>
    <td><select name="lang" size="1" class="formdropdown" id="lang">
      <?php
$sql = mysql_query("SELECT id, language FROM languages ORDER BY id");
while($rad = mysql_fetch_array($sql))
{
echo "<option value='{$rad[0]}'>" . $rad[1] . "</option>";
}
?>
        </select></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>Handling:</strong></td>
    <td><textarea name="handling" cols="60" rows="6" class="formfield"></textarea></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>IMDb:</strong></td>
    <td><input name="url" type="text" class="formfield" id="url" size="30" />
    <br />
      <span class="style4">(ex. http://www.imdb.com/title/<strong>tt0118480</strong>)</span></td>
  </tr>
  <tr>
    <td><strong>Bild:</strong></td>
    <td><input name="image" type="text" class="formfield" id="image" size="30" />
    <br />
      <span class="style6">(Direktlänk till bild.)</span></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr bgcolor="#999999">
    <td>&nbsp;</td>
    <td><input name="submit" type="submit" class="formbutton" id="submit" value="lägg till serie" /></td>
  </tr>
</table>
</form>
<br><br>

<form name="add" method="post" action="test.php">

<table width="600" border="0" bordercolor="#666666">
  <tr bgcolor="#999999">
    <td><span class="style8 style10">L&Auml;GG TILL SK&Aring;DESPELARE </span></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>Namn:</strong></td>
    <td><input name="name" type="text" class="formfield" size="30" /></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>Nationalitet:</strong></td>
    <td><input name="nationality" type="text" class="formfield" size="30" /></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><strong>F&ouml;dd:</strong></td>
    <td><select name="year" size="1" class="formdropdown" id="year">
      <?php for($i=1900;$i<=date("Y");$i++) echo "<option value=$i>$i</option>" ?>
        </select>
      <select name="month" size="1" class="formdropdown" id="month">
        <?php for($i=0;$i<=12;$i++) echo "<option value=$i>$i</option>" ?>
            </select>
      <select name="day" size="1" class="formdropdown" id="day">
        <?php for($i=0;$i<=31;$i++) echo "<option value=$i>$i</option>" ?>
            </select></td>
  </tr>
  <tr bgcolor="#666666">
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  
  <tr>
    <td><strong>Bild:</strong></td>
    <td><input name="bild" type="text" class="formfield" size="30" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr bgcolor="#999999">
    <td>&nbsp;</td>
    <td><input name="sumbit" type="submit" class="formbutton" value="lägg till" /></td>
  </tr>
</table>
</form>

..eller finns det ett "bättre" sätt? :r

Medlem sedan juni 200032 967 inlägg
#4

Så länge SQL-frågorna blir korrekta så är det bara att köra på...

Vi vet ju inte vad några variabler innehåller (och inte kan jag något om php heller), men vad gäller SQL-delen är det inte så mycket svårare än att sätta ihop SQL-frågorna och exekvera dem en och en.

139 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)