[PHP/MySQL] insert query maakt twee records

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een heel raar probleempje. Namelijk: Ik ben bezig met een soort php weblog te schrijven. Als ik dmv een form, gegevens in een database zet dan levert dat geen problemen op. Maar wat er wel gebeurt, is dat er een tweede record wordt aangemaakt in de database die alle waarden bevat op twee longtext velden na.
De code van de insert pagina (blogpost.php)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
setlocale (LC_ALL, 'Dutch');

//sql query
require_once("inc/config.inc");

//insert variabelen
$datum= strftime("%A  %d %B %Y");
$tijd= strftime("%H:%M");
$auteur= $_SESSION['username'];
$titel= $_POST['titel'];
$inhoud= $_POST['inhoud'];

$sql= "INSERT INTO tblblog(auteur, titel, inhoud, datum, tijd) VALUES('$auteur','$titel','$inhoud','$datum','$tijd')";

$result= mysql_query($sql, $conn) or die ("<b>Foutje!</b><br />".mysql_error());

mysql_close();


De code van de connectie include (inc/config.inc):
PHP:
1
2
3
4
5
6
7
8
$server="localhost";
$username="******";
$password="********";
$database="database";

$conn= mysql_connect ($server, $username, $password) or die ('Verbindings Foutje! - ' . mysql_error());

mysql_select_db ($database);


PHP versie: 4.3.4
MySQL versie: 4.0.17
Platform: Windows XP (IIS)

Heeft iemand een idee waar de fout kan zitten?

[ Voor 25% gewijzigd door Verwijderd op 25-01-2004 20:36 ]


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

$sql= $sql=

wijzigen in $sql =

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer eerst eens te achterhalen of het formulier niet 2 keer verstuurd wordt.

Hang aan de submitknop eens het volgende onclick attribuut:
onclick="this.disabled = true;"

Die setlocale regel slaat volgens mij nergens op. Maak daar eens van:
setlocale(LC_ALL, 'nl_NL');

[ Voor 30% gewijzigd door Verwijderd op 25-01-2004 20:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
X-Lars schreef op 25 januari 2004 @ 20:28:
$sql= $sql=

wijzigen in $sql =
dat was een typo |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 25 januari 2004 @ 20:29:
Probeer eerst eens te achterhalen of het formulier niet 2 keer verstuurd wordt.

Hang aan de submitknop eens het volgende onclick attribuut:
onclick="this.disabled = true;"

Die setlocale regel slaat volgens mij nergens op. Maak daar eens van:
setlocale(LC_ALL, 'nl_NL');
Mag tegenwoordig ook gewoon 'Dutch' neerzetten, stond bij op de PHP site. resulteert gewoon in de volledige datum, daar ligt verder het probleem niet :)

[ Voor 5% gewijzigd door Verwijderd op 25-01-2004 20:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 25 januari 2004 @ 20:29:

Probeer eerst eens te achterhalen of het formulier niet 2 keer verstuurd wordt.

Hang aan de submitknop eens het volgende onclick attribuut:
onclick="this.disabled = true;"
Dan verstuurt ie de hele form niet :)

Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
Verwijderd schreef op 25 januari 2004 @ 20:48:
[...]


Dan verstuurt ie de hele form niet :)
Als het goed is, wordt de button disabled nadat je erop geklikt hebt. En zelfs IE doet dat nog goed. :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Billie schreef op 25 januari 2004 @ 20:52:
[...]


Als het goed is, wordt de button disabled nadat je erop geklikt hebt. En zelfs IE doet dat nog goed. :+
Maar er worden nog steeds 2 records gemaakt, alleen zoals gezegd het tweede record wordt gemaakt zonder de $titel en $inhoud variabelen.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

dan loopt-ie in ieder geval 2 keer dat script door, alleen de 2e x zonder dat er een form gesubmit is (omdat die 2 velden dmv $_POST opgehaald worden en dat de 2e keer dus niet gebeurt)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
X-Lars schreef op 25 januari 2004 @ 21:31:
dan loopt-ie in ieder geval 2 keer dat script door, alleen de 2e x zonder dat er een form gesubmit is (omdat die 2 velden dmv $_POST opgehaald worden en dat de 2e keer dus niet gebeurt)
moet ik ergens een break toevoegen? of zou een loopje de uitkomst bieden?

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

post anders het form of de rest van de code eens? ik weet er ook niet het fijne van, maar volgens mij ligt het aan iets anders wat we nu niet kunnen zien

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
X-Lars schreef op 25 januari 2004 @ 21:39:
post anders het form of de rest van de code eens? ik weet er ook niet het fijne van, maar volgens mij ligt het aan iets anders wat we nu niet kunnen zien
Ik heb het gevoel dat het geheel een tweede keer uitgevoerd wordt zonder dat dat enig nut heeft. Ik zal eens kijken of ik er een loop omheen kan bouwen zodat het maar een keer uitgevoerd wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het heeft niet gewerkt met een loop, hier is de pagina waarin alles ingetypt wordt in een form...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
echo    "<td>";
echo    "<table cellpadding='0' cellspacing='0' border='0'>";
echo    "<tr valign='top'>";
echo    "<td>";
echo    "<table width='400' height='100%' bgcolor='#FFFFFF' cellpadding='0' cellspacing='0' border='1' bordercolor='#FFFFFF'>";

echo    "<tr><td background='#FFFFFF'><br /></td></tr>";

echo    "<tr><td>";
echo    "<table width='500' height='100%' bgcolor='#6699cc' cellpadding='0' cellspacing='0' border='1' bordercolor='#000000'>";
echo    "<tr><th bordercolor='#006699' background='img/menutopbg.gif' height='21'>Blog Post</th></tr>";
echo    "<tr><td bordercolor='#6699cc' >";
echo    "<table width='50%' border='0' align='center' cellpadding='4' cellspacing='0'>";
echo    "<form action='index.php?id=blogpost' method='post'>";
echo    "<tr><td width='50%'><p>Titel:</p></td><td><p><input name='titel' type='text' size='50'></p></td></tr>";
echo    "<tr><td><p>Blog:</p></td></tr>";
echo    " <tr><td></td><td><textarea rows=10 cols=40 name='inhoud'></textarea></td></tr>";
echo    "<tr><td><input type='submit' name='Submit' value='Submit' class='button'></td></tr>";
echo    "</form>";
echo    "</table>";
echo    "</td></tr>";
echo    "</table>";
echo    "</td></tr>";

echo    "</table>";
echo    "</td>";


de form action verwijst dmv een case naar blogpost.php

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

kan hier idd weinig uithalen, maar

1) je kunt ook gewoon een .html includen, hoef je niet alles te echo-en
2) je nest 3 tables in elkaar, ook niet echt netjes

Acties:
  • 0 Henk 'm!

  • BrZ
  • Registratie: Maart 2000
  • Laatst online: 14:15

BrZ

Verwijderd schreef op 25 januari 2004 @ 22:02:
de form action verwijst dmv een case naar blogpost.php
Laat dat dan ook eens zien... ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
X-Lars schreef op 25 januari 2004 @ 22:05:
kan hier idd weinig uithalen, maar

1) je kunt ook gewoon een .html includen, hoef je niet alles te echo-en
2) je nest 3 tables in elkaar, ook niet echt netjes
1) klopt, maar ik ben het nou eenmaal zo gewend ;)
2) het is niet netjes, maar de enige manier om mijn tabellen mooi te krijgen.

Zou het aan de versie van php/mysql kunnen liggen? Ik heb verder écht geen idee wat er nog fout aan zou kunnen zijn.

Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Kun je met behulp van iets als
PHP:
1
if (isset($_POST['titel'])) { insert code}

de overbodige insert opvangen?

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Je zou even na de query mysql_affected_rows() kunnen printen. Om er zeker van te zijn dat in één keer 2 records worden ge-Insert, en er geen dubbele aanroepen zijn ofzo :?

System specs - Ik word blij van knipperende lichtjes.


Acties:
  • 0 Henk 'm!

  • getty
  • Registratie: Januari 2001
  • Laatst online: 15:20
Zit er niet iets fout in je index.php, dat die 2 keer blogpost.php aanroept ofzo. Probeer anders eens de target van het forum te veranderen in blogpost.php ipv index.php?id=blogpost

A computer is almost human - except that it does not blame its mistakes on another computer.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zwippie schreef op 25 januari 2004 @ 23:53:
Kun je met behulp van iets als
PHP:
1
if (isset($_POST['titel'])) { insert code}

de overbodige insert opvangen?
_/-\o_ _/-\o_

werkt! dat ik daar zelf niet op kwam! ontzettend bedankt voor jullie hulp allemaal!

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
*kuch* wil je niet weten waarom de boel dubbel geinsert werd :?
Domweg als de titel leeg is voorkomen dat er wat in gezet wordt is sowieso wel handig, maar je zou es kunnen proberen te achterhalen waarom je uberhaupt een lege titel kreeg (waarschijnlijk omdat je die blogpost.php include op een moment dat ie niet geinclude zou moeten worden, als je de code zelf in acht neemt)

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

offtopic:
ik zou 'inc/config.inc' toch heel snel veranderen in 'inc/config.inc.php'.
Kijk voor de grap maar eens wat er gebeurt als je het bestand oproept met je browser........ >:)

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023

hobbeldebobbel

tjop tjop

IorGie schreef op 26 januari 2004 @ 12:41:
offtopic:
ik zou 'inc/config.inc' toch heel snel veranderen in 'inc/config.inc.php'.
Kijk voor de grap maar eens wat er gebeurt als je het bestand oproept met je browser........ >:)
vertel eens wat er gebeurd?

hier zou een slimme opmerking kunnen staan
maar die staat er niet


Acties:
  • 0 Henk 'm!

  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

hobbeldebobbel schreef op 26 januari 2004 @ 15:22:
[...]


vertel eens wat er gebeurd?
Wat zou er gebeuren met bestanden die niet d.m.v. hun filetype aan een parser gekoppeld zijn? :z :Y) >:)

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


Acties:
  • 0 Henk 'm!

Verwijderd

mindcrash schreef op 26 januari 2004 @ 16:06:
[...]


Wat zou er gebeuren met bestanden die niet d.m.v. hun filetype aan een parser gekoppeld zijn? :z :Y) >:)
;)

Tja, of je moet ze afschermen d.m.v. de server settings

Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023

hobbeldebobbel

tjop tjop

Verwijderd schreef op 26 januari 2004 @ 17:09:
[...]


;)

Tja, of je moet ze afschermen d.m.v. de server settings
dat zijn ze bij mij wel vandaar dat ik geen problemen had :)

hier zou een slimme opmerking kunnen staan
maar die staat er niet

Pagina: 1