Zweite Tabelle in PHP-Script

P

PilotPirx

Ich möchte eigentlich nur innerhalb des Scriptes eine zweite Tabelle (in diesem Fall Teilnehmer) mit den gleichen Bedingungen wie die Tabelle Veranstaltungsort einbauen.

Die Tabelle Teilnehmer besteht aus den Feldern id (auto), veranstaltungs_id, nummer und name.

Zur Übersicht das Script
PHP:
<?php require_once('Connections/seminar.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) 
  {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
$id .= $_POST['id'];

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) 
{
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) 
{
  $insertSQL = sprintf("INSERT INTO veranstaltungsort (veranstaltung_id, straße, plz, ort) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['veranstaltung_id'], "int"),
                       GetSQLValueString($_POST['straße'], "text"),
                       GetSQLValueString($_POST['plz'], "int"),
                       GetSQLValueString($_POST['ort'], "text"));

  mysql_select_db($database_seminar, $seminar);
  mysql_query($insertSQL, $seminar) or die(mysql_error());
  
  $insertGoTo = "ort.php";

  if (isset($_SERVER['QUERY_STRING']))
      { 
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
    }

  header(sprintf("Location: %s", $insertGoTo));
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Veranstaltungsort</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form method="post" name="seminarort" action="<?php echo $editFormAction; ?>">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Straße:</td>
      <td><input type="text" name="straße" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Plz:</td>
      <td><input name="plz" type="text" size="32" maxlength="5"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Ort:</td>
      <td><input type="text" name="ort" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><div align="center">
        <input type="submit" value="Datensatz einfügen">
      </div></td>
    </tr>
  </table>
  <input name="MM_insert" type="hidden" id="MM_insert" value="form1">
  <input type="hidden" name="veranstaltung_id" value="<?php echo $_GET['id']; ?>"> 
</form>
<p>&nbsp;</p>
</body>
</html>

Mir ist nicht ganz klar in welcher Form und an welcher Stelle die zweite Tabelle stehen müsste.
 
Ich verstehe glaube nicht so ganz.
Du willst das:
PHP:
$insertSQL = sprintf("INSERT INTO veranstaltungsort (veranstaltung_id, straße, plz, ort) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['veranstaltung_id'], "int"),
                       GetSQLValueString($_POST['straße'], "text"),
                       GetSQLValueString($_POST['plz'], "int"),
                       GetSQLValueString($_POST['ort'], "text"));
praktisch zweimal machen?
 
Im Prinzip ja, wobei beide Tabellen die gleiche id übergeben bekommen und im Feld veranstaltungs_id speichern müssen.

Danke für die schnelle Reaktion!
 
@PilotPirx
Ich war mal so frei und hab den Titel des Threads geändert. Ich möchte dich bitten, nächstesmal doch einen Titel zu wählen, der etwas mehr über das Problem aussagt, da der Thread auch für andere User hilfreich sein könnte.

MFG

Sascha
 
Dann schreib doch in die zweite Tabelle einfach die veranstaltungs_id mit rein, die hast du ja in dem Script in $_POST['veranstaltung_id'] gespeichert:
PHP:
$insertSQL = sprintf("INSERT INTO teilnehmer (veranstaltungs_id, nummer, name) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['veranstaltung_id'], "int"),
                       GetSQLValueString($_POST['nummer'], "int"),
                       GetSQLValueString($_POST['name'], "text"));
Ich würds dann unter den ersten Query schreiben.
 
Ich habs einfach mal so gemacht.

PHP:
$id .= $_POST['id'];

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) 
{
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) 
{
  $insertSQL = sprintf("INSERT INTO veranstaltungsort (veranstaltung_id, straße, plz, ort) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['veranstaltung_id'], "int"),
                       GetSQLValueString($_POST['straße'], "text"),
                       GetSQLValueString($_POST['plz'], "int"),
                       GetSQLValueString($_POST['ort'], "text"));

  $insertSQL = sprintf("INSERT INTO teilnehmer (veranstaltungs_id, nummer, name) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['veranstaltungs_id'], "int"),
                       GetSQLValueString($_POST['nummer'], "text"),
                       GetSQLValueString($_POST['name'], "text"));					   

  mysql_select_db($database_seminar, $seminar);
  mysql_query($insertSQL, $seminar) or die(mysql_error());
  
  $insertGoTo = "ort.php";

  if (isset($_SERVER['QUERY_STRING']))
  	{ 
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
	}

  header(sprintf("Location: %s", $insertGoTo));
}

und von der ersten Seite kommt dann

PHP:
<input type="hidden" name="veranstaltung_id" value="<?php echo $_GET['id']; ?>">

Was mich nur etwas verwundert ist, dass es offenbar egal ist ob man hier den gleichen ValueString ("veranstaltung_id") mehrfach verwendet.

Naja, Anfänger lässt Grüßen!
 
Tja, ich mußte aber leider gerade feststellen das zwar jetzt die Daten in der Tabelle Teilnehmer gespeichert werden, nicht aber in der Tabelle Veranstaltungsort.

Sehr seltsam!
 
Zurück