[php/mysql]Insert Error

Pagina: 1
Acties:
  • 31 views sinds 30-01-2008

  • Vecodo
  • Registratie: Februari 2003
  • Laatst online: 30-01 10:09
Ok het volgende is gelukt

Ik heb dus een Database met daarin een tabel : Nieuwsberichten.
In deze tabel zitten drie velden : Titel, Datum, Bericht

Ik heb een index.php gemaakt die de Tabel Nieuwsberichten uitleest, dit werkt vlekkeloos.

Ik heb een Formulier gemaakt met 3 input velden
wederom : Titel, Datum, Bericht.
Dit formulier heeft als atributen : Action="formverwerking.php" method="post".

Daarna ben ik aan formverwerking.php begonnen
Als aller eerste open ik een Database connectie. en ga de global variable $_POST['Titel']; defineren als een normale variable : $Titel. met deze variable voer ik een SQL query uit ( insert into )
Als de qeury een TRUE terug geeft dan echo mijn script mooi : de titel is toegevoegd.

de toegevoegde titel is dus ook netjes terug te vinden op de index.php

Tot zover zo goed !

Maar op het moment dat ik het zelfde ga doen voor de input Bericht gaat het dus fout ( ik doe dus nu een insert voor de titel en het bericht )

De eerste x lijkt alles goed te gaan :
maar ik word bedrogen want :
Hij voegt wel wat toe aan de Database, maar dat word een rotzooi. namelijk 1 nieuwe record voor de titel ( dit werkt ) en weer een andere record voor het bericht.

Nu ga ik de 2de x wat toevoegen aan de DB.
en krijg ik het volgende :
Query is mislukt.
Duplicate entry '' for key 1

Hij voegt wel wat toe aan de Database, namelijk 1 record met alleen de titel erin en 1 record zonder titel en zonder bericht

Nu omdat sommige dingen gewoon niet goed uit te leggen zijn zonder code
Bij deze de code
FORMULIER.PHP
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   <form action="Formverwerking.php" method="post">
<table width="743" border="0">
  <tr>
    <td width="60">Titel</td>
    <td width="13">:</td>
    <td width="648"><input type="text" name="Titel"></td>
  </tr>
  <tr>
    <td>Datum</td>
    <td>:</td>
    <td><input type="text" name="Datum" value=""></td>
  </tr>
  <tr>
    <td>Bericht</td>
    <td>:</td>
    <td><textarea name="Bericht" cols="50" rows="4"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input type="submit" value="Toevoegen"></td>
  </tr>
</table>
</form>

Hier zijn wat dingen weghaald. want in de headers staan nog php code vandaar dat dit een php bestand is.

Formverwerking.php
code:
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
27
28
29
30
31
32
33
   <?
   include("../includes/mysql_connect.inc.php");
   
$Connectie = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die ("MYSQL connectie is niet gemaakt." );
      if (is_resource($Connectie)) {
      echo "MYSQL connectie is gemaakt.";
      }

$DbConnectie = mysql_select_db(MYSQL_DATABASE);
      if ($DbConnectie == TRUE) {
      echo "<br> Database kon worden geopend."; }
      else {
      echo "Database kon niet worden geopend.";
      }

if (isset($_POST['Titel'])) {
$Titel = $_POST['Titel'];
$sql = "INSERT INTO nieuwsberichten (Titel) VALUES ('$Titel');";
$result = mysql_query($sql) or die("<br><br>Query is mislukt.<br>" .mysql_error());
if ($result == TRUE) {
      echo "Titel is toegvoegd aan de Database.";
      }
}

if (isset($_POST['Bericht'])) {
$Bericht = $_POST['Bericht'];
$sql = "INSERT INTO nieuwsberichten (Bericht) VALUES ('$Bericht');";
$result = mysql_query($sql) or die("<br><br>Query is mislukt.<br>" .mysql_error());
if ($result == TRUE) {
      echo "Bericht IS TOEGEVOEGD.";
      }
}
   ?>


En de index.php, deze is opzich overboden. want ik kan hem ook in de Database controleren en daar word hij ook verkeerd geinsert
Index.php
code:
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
<?php
require_once("includes/mysql_connect.inc.php");
   
$Connectie = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die ("MYSQL connectie is niet gemaakt." );
      if (is_resource($Connectie)) {
      echo "MYSQL connectie is gemaakt.";
      }

$DbConnectie = mysql_select_db(MYSQL_DATABASE);
      if ($DbConnectie == TRUE) {
      echo "<br> Database kon worden geopend."; }
      else {
      echo "Database kon niet worden geopend.";
      }

$sql = "SELECT `Titel`, `Datum`, `Bericht` FROM `Nieuwsberichten`";
$result = mysql_query($sql) or die("<br><br>Query is mislukt<br>" .mysql_error());
while ($record = mysql_fetch_array($result)) {
echo "<br><br>";
echo $record ['Titel'];
echo "<br>";
echo $record ['Datum'];
echo "<br>";
echo $record ['Bericht'];
}
?>



Heb heel wat gegoogeld, php.net, mysql maar kom er echt niet aan uit. iemand een goude tip ?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ehm, ten eerste zou je niet die tweede insert moeten doen maar een update, hoewel het handiger is als je de titel en het bericht gelijktijdig insert ;)

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 21-02 06:28
Hint, kijk is naar AUTOINCREMENT van je index table

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Je moet een record per keer inserten, niet één enkel veld. Hoe wil MySQL anders zien bij welk record de waarde die je invoert hoort? :?

Daarnaast zou ik eens een ID-veld (autonummering) opnemen, en een fatsoenlijke tutorial doornemen, of een goed boek kopen, want daar wordt dit wel in behandeld. Simpelweg even [google=mysql insert syntax] moet je meer dan genoeg voorbeelden geven om te zien wat je hier fout doet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.