mysql_insert_id & auto_increment

barney_hh

Mitglied
Hallo!

Ich habe folgendes Frage/Problem:

Ich schreibe einige Werte aus Formularen in die MYSQL Tabelle Kunden, gleichzeitig gebe ich per auto_increment eine Kundennummer (kdnr). Soweit kein Problem.
Nun möchte ich den Wert der kdnr in eine weitere Tabelle "Bestellung" übermitteln. Die Tabelle Bestellung hat zwei spalten: kdnr und bnr; beides sind Primärschlüssel und bnr soll ebenfalls per auto_increment automatisch hochgezählt werden. Nach dem ich aber die Werte kdnr erfolgreich in die Tabelle Bestellung reingebracht habe, habe ich auf eine autmatisches hochzählen der Spalte "bnr" gehoft - stattdessen wird immer nur der Wert 1 in die Zelle geschrieben. Was habe ich falsche gemacht?

Vielen Dank für Eure Tipps!
 
Meinst Du das:

# phpMyAdmin MySQL-Dump
# version 2.4.0
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost:3306
# Erstellungszeit: 17. Januar 2004 um 19:48
# Server Version: 3.23.51
# PHP-Version: 4.2.1
# Datenbank: `shop`
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `bestellung`
#

CREATE TABLE bestellung (
kdnr char(3) NOT NULL default '',
bnr smallint(3) NOT NULL auto_increment,
PRIMARY KEY (kdnr,bnr)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `kunde`
#

CREATE TABLE kunde (
kdnr smallint(3) NOT NULL auto_increment,
vorname varchar(25) NOT NULL default '',
nachname varchar(30) NOT NULL default '',
strasse varchar(50) NOT NULL default '',
hausnr smallint(4) NOT NULL default '0',
plz smallint(5) NOT NULL default '0',
ort varchar(20) NOT NULL default '',
sid varchar(40) NOT NULL default '',
PRIMARY KEY (kdnr)
) TYPE=MyISAM;
 
hehe .... Nein.

z.B. $sql = "INSERT INTO Tbl_was_weis_ich (Feld1,Feld2,Feld3) Values (......

Mfg Ultrasonic
 
Zuletzt bearbeitet:
Ach soooo... ;)

PHP:
.
.
.

// Kundendaten in die Kundendatenbank eintragen
$eingabe_kunde="INSERT into kunde (vorname, nachname, strasse, hausnr, plz, ort, sid) values('$vorname', '$nachname', '$str', '$hausnr', '$plz', '$ort', '$session')";
mysql_query($eingabe_kunde);
$kdnr0=mysql_insert_id();

// Die kdnr aus der kunde Tabelle rauslesen und in die Tabelle bestellung reinschreiben
$kn_bez="SELECT kdnr FROM kunde WHERE kdnr='$kdnr0'";
$kn_erg=mysql_query($kn_bez);
$f=mysql_result($kn_erg, 'bez');
$eingabe_bestellung="INSERT into bestellung (kdnr) values ('$kdnr0')";
mysql_query($eingabe_bestellung);
.
.
.
 
Was hallst du davon:

PHP:
$eingabe_bestellung="INSERT into bestellung (kdnr) values (Last_insert_id())";

Hast Du aber auch mal "$kdnr0" ausgelesen , um zu schauen was er rausgibt
 
Zuletzt bearbeitet:
Also $kdnr0 nimmt den auto_increment Wert der kunde Tabelle an - das ist auch gut so. Nur der auto_increment Wert der bnr Tabelle wird nicht hochgezählt, nachdem ich einen Wert in die Tabelle schreibe. Er bleibt immer bei "1".

Ist das überhaupt möglich, was ich das vorhabe?
 
Oh Mann bin ich blind

An deinem Tabellenaufbau liegt es


Nicht:
CREATE TABLE bestellung (
kdnr char(3) NOT NULL default '',
bnr smallint(3) NOT NULL auto_increment,
PRIMARY KEY (kdnr,bnr)
) TYPE=MyISAM;

Sondern:

CREATE TABLE bestellung (
bnr smallint(3) NOT NULL auto_increment,
kdnr char(3) NOT NULL default '',
PRIMARY KEY (kdnr,bnr)
) TYPE=MyISAM;

Das Auto_increment Feld "bnr " nach oben, dann klappts auch mit dem zählen :)

Greetz

Ultrasonic
 
Zuletzt bearbeitet:
Hmmm... dann kommt folgende Fehlermeldung

CREATE TABLE `bestellung` (

`bnr` VARCHAR( 3 ) NOT NULL AUTO_INCREMENT,
`kdnr` VARCHAR( 3 ) NOT NULL ,
PRIMARY KEY ( `bnr` , `kdnr` )
)

MySQL meldet:


Incorrect column specifier for column 'bnr'

Hast Du/Ihr noch eine Idee?
 
Ok... die Fehlermeldung ist behoben und folgende Tabelle ist erstellt:

CREATE TABLE bestellung (
bnr smallint(3) NOT NULL auto_increment,
kdnr char(3) NOT NULL default '',
PRIMARY KEY (kdnr,bnr)
) TYPE=MyISAM;

Aber leider wird bnr immer noch nicht automatisch hochgezählt! Es wird immer nur der Wert 1 geschrieben.. .:-(
 

Neue Beiträge

Zurück