Avatar billede nek Praktikant
20. august 2006 - 23:54 Der er 7 kommentarer

Tilmeldingskupon med efterfølgende mysqludtræk

Jeg har spurgt et andet sted på sitet. Men de gode svar fik mig til at se, at det nok var en større opgave, end det egentlig så ud til. Så jeg har kvalificeret mit spørgsmål noget og øget pointene. Jeg vil også gerne betale for ulejligheden, hvis vi kan blive enige om en pris.

Det drejer sig om:
Et slægtsarrangement, som man kan melde sig til elektronisk.
Når man melder sig, skal man udfylde

Dato
Navn på tilmelderen
Adresse
Postnr
By
Slægtsgren (gerne drop down med syv muligheder)
email
telefon

Hvis tilmelderen melder andre end sig selv til skal der desuden for hver deltager være

Navn på den, der deltager og
Adresse
Postnr
By
Slægtsgren
email
telefon
Om personen er over eller under 14 år.
(Da nogle af deltagerne er to år, vil der være nogle af felterne, der er tomme, f.eks. telefon - det skal være muligt.
Alle med emailadresse skal have kvitering på, at de har meldt sig.


Det skulle gerne gemmmes i mysql og man skulle gerne kunne trække en liste frem - helst een, der er opdelt efter navn på tilmelderen med de tilhørende poster under og een, der er opdelt efter slægtsgren
Kunne det laves, så der blev sendt en enslydende mail til alle emailadresser var det helt fint, men ingen betingelse.

Jeg kan godt lidt PHP Mysql så det er ok med noget, der bare viser strukturen, som jeg selv kan arbejde videre på.
Avatar billede aeroone Nybegynder
21. august 2006 - 20:04 #1
Hvorfor skal det være muligt at tilmelde andre end sig selv??
Hvis der er nogen der har børn, kan De vel bare tilmelde dem, som enkelt personer.
Avatar billede aeroone Nybegynder
21. august 2006 - 20:21 #2
Her er lidt:

SQL DUMP:

CREATE TABLE `tilmeld` (
  `ID` varchar(50) collate latin1_danish_ci NOT NULL,
  `Navn` varchar(100) collate latin1_danish_ci NOT NULL,
  `Adresse` varchar(255) collate latin1_danish_ci NOT NULL,
  `Postnr` varchar(10) collate latin1_danish_ci NOT NULL,
  `By` varchar(100) collate latin1_danish_ci NOT NULL,
  `Tlf` varchar(10) collate latin1_danish_ci default NULL,
  `Email` varchar(255) collate latin1_danish_ci default NULL,
  `Gren` varchar(100) collate latin1_danish_ci NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

PHP side til at indsætte records:

<?php $hostname_test = "DB-HOST";
$database_test = "DB-NAME";
$username_test = "DB-USER";
$password_test = "DB-PASSWORD";
$test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
}

$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 tilmeld (ID, Navn, Adresse, Postnr, `By`, Tlf, Email, Gren) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                      GetSQLValueString($_POST['hiddenField'], "text"),
                      GetSQLValueString($_POST['navn'], "text"),
                      GetSQLValueString($_POST['adresse'], "text"),
                      GetSQLValueString($_POST['postnr'], "text"),
                      GetSQLValueString($_POST['by'], "text"),
                      GetSQLValueString($_POST['tlf'], "text"),
                      GetSQLValueString($_POST['email'], "text"),
                      GetSQLValueString($_POST['slaegt'], "text"));

  mysql_select_db($database_test, $test);
  $Result1 = mysql_query($insertSQL, $test) or die(mysql_error());

  $insertGoTo = "test.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="95" align="right">Navn:</td>
      <td width="405" align="left"><input name="navn" type="text" id="navn" size="40" /></td>
    </tr>
    <tr>
      <td align="right">Adresse:</td>
      <td align="left"><input name="adresse" type="text" id="adresse" size="40" /></td>
    </tr>
    <tr>
      <td align="right">Postnr:</td>
      <td align="left"><input name="postnr" type="text" id="postnr" size="10" /></td>
    </tr>
    <tr>
      <td align="right">By:</td>
      <td align="left"><input name="by" type="text" id="by" size="40" /></td>
    </tr>
    <tr>
      <td align="right">Email:</td>
      <td align="left"><input name="email" type="text" id="email" size="40" /></td>
    </tr>
    <tr>
      <td align="right">Tlf:</td>
      <td align="left"><input name="tlf" type="text" id="tlf" size="10" /></td>
    </tr>
    <tr>
      <td align="right">Sl&aelig;gtsgren:</td>
      <td align="left"><select name="slaegt" id="slaegt">
        <option value="1">gren1</option>
        <option value="2">gren2</option>
        <option value="3">gren3</option>
        <option value="4">gren4</option>
        <option value="5">gren5</option>
        <option value="6">gren6</option>
        <option value="7">gren7</option>
      </select>
      </td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td align="left"><input type="submit" name="Submit" value="Inds&aelig;t" />
      <input name="hiddenField" type="hidden" value="&gt;?php echo time(); ?&gt;" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>
Avatar billede nek Praktikant
21. august 2006 - 21:34 #3
Det kan godt være, at der kommer en noget lignende tekst på et tidspunkt, for der skete et eller andet. Det jeg skrev før var for det første tak for indsatsen, og at jeg endda godt kan følge, hvordan koden er bygget op.
Så skrev jeg, at jeg havde skyndt mig at oprette basen og uploade scriptet. Men når jeg lagde den første ind, fik jeg denne fejl

Warning: Cannot modify header information - headers already sent by (output started at /mounted-storage/home19a/sub001/sc19338-UNPL/karkovs.dk/tilmeld.php:3) in /mounted-storage/home19a/sub001/sc19338-UNPL/karkovs.dk/tilmeld.php on line 63

Når jeg så gik ind i databasen kunne jeg se, at recorden faktisk er oprettet, men at der i ID feltet står '>?php echo time(); ?>'

Men jeg prøvede så ufortrødent at oprette een til, men den record kom ikke ind - der kom bare denne fejlmeddelelse

Duplicate entry '>?php echo time(); ?>' for key 1

Jeg kan jo desværre ikke gennemskue, hvad der er galt, men du er tæt på, og det er jeg glad for
Avatar billede horsmark Nybegynder
22. august 2006 - 16:01 #4
<input name="hiddenField" type="hidden" value="&gt;?php echo time(); ?&gt;" />
skal vel være

<input name="hiddenField" type="hidden" value="<?=time()?>" />
Avatar billede aeroone Nybegynder
26. august 2006 - 12:40 #5
Hopla :-)
Jeg havde ikke set at dreamweaver havde lavet lidt om i koden.
Avatar billede aeroone Nybegynder
26. august 2006 - 12:49 #6
Bemærk lige, at den fil som jeg har sat op, skal hedde test.php, hvis den skal hedde tilmeld.php skal du ændre denne linie:
$insertGoTo = "test.php"; til $insertGoTo = "tilmeld.php";
Avatar billede aeroone Nybegynder
27. august 2006 - 12:57 #7
En lille bemærkning, hvis du vil have, at folk bliver sendt til en anden side efter at de har tilmedt sig, skal du ændre $insertGoTo = "test.php"; til den side, du vil have vist f.eks $insertGoTo = "takfordintilmelding.php";
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

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