Heey, ik heb helaas weer een vraag :(

Ik heb een toevoeg systeem voor informatie dat werkt met ID's. Ik heb nu een script gemaakt waar de titel en tekst goed worden ingevuld, maar het ID moet ook worden ingevuld. Ik wil dit niet zelf typen, maar ik wil het laatste ID uit die tabel hebben +1.

Even voor de duidelijkheid, ik wil dus weten hoe je het laatste ID uit de database kan krijgen.

Miniejjj
Inderdaad moet je gewoon een auto_increment opgeven aan de id kolom. En je foutmelding komt van de regel:

mysql_insert_id()+1

Deze sluitj e niet af met ;
Als ik dat wil doen, dan krijg ik een foutmelding, wat ik hierboven ook al zei, welk type moet ID zijn, want nu geeft hij deze fout:

SQL-query:

ALTER TABLE `zoeken` CHANGE `id` `id` INT( 11 ) NOT NULL DEFAULT '0' AUTO_INCREMENT
MySQL retourneerde:

#1067 - Invalid default value for 'id'

Dit is trouwens een fout van phpmyadmin

Miniejjj
Is dat zo Miniejjj? Een fout van phpmyadmin?

Bij een AUTO_INCREMENT kan je geen DEFAULT opgeven ;) Haal "DEFAULT '0'" maar eens weg :)
je id moet gewoon een int (numeriek getal) blijven. Deze kan je ophogen met een auto increment.

Je bent er bijna! Daarna je script als volgt:

<?php
if $_POST['submit'] {
$titel = addslashes($_POST['titel']);
$tekst = addslashes($_POST['tekst']);

mysql_connect("localhost", "username", "pass");
mysql_select_db("zoeken");

$sql = "insert into zoeken(tekst,titel)
values('".$tekst."','".$title."')";

$res = mysql_query($sql) or die(mysql_error());

if($res){
echo 'Bericht toegevoegd.';
}else{
echo 'Er is iets fout gegaan';
}
}
?>
Gooi DEFAULT '0' weg, slaat nergens op, zeker niet in combinatie met NOT NULL.

Wat wil je nu? Een verplicht veld of een default waarde wanneer er niks is opgegeven? Het is een blunder van PhpMyAdmin, zorg er dus voor dat je daar niet instinkt.

Edit: Géén addslashes() in de code gebruiken! Die verneuken jouw data! mysql_real_escape_string() werkt 100x beter.
Sorry, maar ik begrijp er helemaal niets meer van, dit geeft hij nu:

SQL-query:

ALTER TABLE `zoeken` CHANGE `id` `id` INT( 11 ) AUTO_INCREMENT
MySQL retourneerde:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Even voor de volledigheid ;) Dit heb ik nu bij ID staan:
veld = id
type=int
lengte=11
Collatie=
Attributen=
Null =not null
standaardwaarde = 0
extra= ik probeerde auto increment, maar dat lukte niet.

Hopelijk is het duidelijk genoeg...



Er is blijkbaar al een kolom met een auto_increment, zie de foutmelding. MySQL accepteert slechts 1 auto_increment per tabel.

Ps. Lengte 11 bestaat niet, zie de handleiding over de datatypes en de eigenschappen daarvan.
Er staat geen andere auto_increment in de tabel. Over de lengte: Waar moet ik de lengte in veranderen?
Kan jij anders zo'n database script maken hoe ik het moet doen? Dan weet ik zeker dat het goed gaat. Ik heb een database, die heet minimachine, dan heb ik daarin een tabel die zoeken heet met daarin 3 kolommen, id tekst en titel.
Voor de volledigheid voeg ik wel even een screenshot toe:
http://img150.imageshack.us/img150/8494/naamloosna4.png
Miniejjj
MENSEN WORD WAKKER

Regel 1:
if $_POST['submit'] {

Moet zijn:
if ($_POST['submit']) {

Of nog beter:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
Oke bedankt, maar hij doet het nog niet helemaal. Hij geeft nu de hele tijd oops.

<head>
<title>log toevoegen</title>
<?php
mysql_connect("localhost", "minimachine", "wieligh2631ndorp");
mysql_select_db("zoeken");
?>
</head>
<body>
<form action=signup.php method=POST>
<table>
<input type="hidden" name="submit" value="yes">
Titel: <textarea rows="1" name="titel" cols="42">Vul in</textarea><br>
Tekst: <textarea rows="1" name="tekst" cols="42">Vul in</textarea><br>
<input type="submit" vale=" Voeg toe ">
</table>
<?php
$id = mysql_insert_id()+1;
if ($_POST['submit']) {
$titel = addslashes($_POST['titel']);
$tekst = addslashes($_POST['tekst']);
$sql = "insert into zoeken(id,tekst,titel) values($id,'$tekst','$title')";
mysql_query($sql) or die("Oops...");
echo "Bericht toegevoegd.";
}
?> 
</form>

Weet iemand het?

Miniejjj

Reageren