Beste,

Ik heb een probleem waarvan ik de oplossing niet zelf vind.
Het gaat over het volgende:
ik heb een data base aangemaakt die er als volgd uitziet

CREATE TABLE IF NOT EXISTS `beurs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fns` varchar(40) NOT NULL,
  `ns` varchar(40) NOT NULL,
  `sns` varchar(50) NOT NULL,
  `gps` varchar(50) NOT NULL,
  `ls` varchar(4) NOT NULL,
  `ts` varchar(20) NOT NULL,
  `nts` varchar(20) NOT NULL,
  `mas` varchar(50) NOT NULL,
  `ms` varchar(6) NOT NULL,
  `sbs` varchar(6) NOT NULL,
  `stb` varchar(5) NOT NULL,
  `oas` varchar(400) NOT NULL,
  `os` varchar(400) NOT NULL,
  `acs` varchar(3) NOT NULL,
  `ocs` varchar(500) NOT NULL,
  `bs` varchar(6) NOT NULL,
  `ds` varchar(10) NOT NULL,
  `sbw` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=20160 ;


daarin worden gegevens vanuit een form in gezet.
even verkkort de code:

$fns =    addslashes($_POST['1']);
$ns =    addslashes($_POST['2']);
$sns =    addslashes($_POST['3']);
$gps =    addslashes($_POST['4']);
$ls =    addslashes($_POST['5']);
$ts =    addslashes($_POST['6']);
$nts =    addslashes($_POST['7']);
$mas =    addslashes($_POST['8']);
$ms =    addslashes($_POST['9']);
$os =    addslashes($_POST['10']);
$oas =    addslashes($_POST['11']);
$acs =    addslashes($_POST['12']);
$ocs =    addslashes($_POST['13']);

mysql_query("INSERT INTO beurs (fns, ns, sns, gps, ls, ts, nts, mas, ms, os, oas, acs, ds, sbw, ocs) VALUES ('".$fns."', '".$ns."', '".$sns."',
 '".$gps."', '".$ls."', '".$ts."', '".$nts."',
 '".$mas."', '".$ms."', '".$os."', '".$oas."', '".$acs."', NOW(), '".$sbw."', '".$ocs."')") 
or die (mysql_error());


Tot daar is er geen probleem.
Nu wil ik naar de persoon een mail sturen waarin zijn id is vermeld,
maar het lukt me gewoonweg niet om die te voorschijn te halen voor deze bewerking.

kan iemand me helpen aub?

Met dank
Of een SELECT-query waarin je kijk naar $ns, $ns $sns, $gps, $ls, $ts, $nts (hadden we die niet al?), $mas, $ms, $os, $oas, $acs en $ocs...

Dus je update iets met gegevens: dan kijk je welk ID exact die gegevens hebben gekregen.
Krijg je geen resultaat terug, dan is je data dus verkeerd opgeslagen.... want addslashes is geen beveiliging en eigenlijk niet eens meer nodig.
Daarnaast... een formulierveld mag niet beginnen met een cijfer... dus $_POST['1'] mag eigenlijk niet bestaan...
Beste,

Ik heb het opgelost als volgd:

$sql = "SELECT MAX( id )FROM table";


Met dank
Die afkortingen in de velden zijn zeker beurs-deelnemers?
In theorie zou je nooit je velden moeten uitbreiden waarbij je je applicatie steeds moet aanpassen.

Als je dit netjes zou willen doen kom je uit op een extra tabel waarin de afkortingen staan als record, in plaats als veld, waarna je deze koppelt aan de juiste ID's. Want wat nou als ID-nummer 4 bijvoorbeeld eens geen 'acs' kan bevatten?
$sql = "SELECT MAX( id )FROM table";

Met een beetje pech, is er intussen nog een geïnsert en heb je de verkeerde te pakken.

en

Dus je update iets met gegevens: dan kijk je welk ID exact die gegevens hebben gekregen.
Krijg je geen resultaat terug, dan is je data dus verkeerd opgeslagen.... want addslashes is geen beveiliging en eigenlijk niet eens meer nodig.


wat nu als die combinatie er al 10x instaat? Dan krijg je dus 10 id's retour?

Reageren