WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Försöker koppla ihop data i olika tabeller... (https://www.wn.se/forum/showthread.php?t=7008)

eg0master 2005-03-31 21:51

jag repeterar:
Exakt hur ser din PHP sträng ut som du försöker inserta? I ett tidigare inlägg påpekade ju robert ett problem.
gör typ:
$qs = sprintf("INSERT bla bla bla");
echo "

" . $qs . "</p>";
mysql_query($qs);

Om mysql_query returnerar false? vad får du i så fall för fel?

Steiner83 2005-04-01 01:15

Ah ursäkta.

Så här ser koden ut.

<?

$uni = addslashes($uni);
$program = addslashes($program);
$term = addslashes($term);
$course = addslashes($course);
$title = addslashes($title);
$author1 = addslashes($author1);
$author2 = addslashes($author2);
$author3 = addslashes($author3);
$author4 = addslashes($author4);
$edition = addslashes($edition);
$year = addslashes($year);
$publisher = addslashes($publisher);
$isbn = addslashes($isbn);
$status = addslashes($status);


$db=mysql_connect("localhost", "uppsalamedicin_", "vitpiller");
mysql_select_db("uppsalamedicin_", $db);


if (!$db)
{
echo "Error Kunde inte kontakta databasen försök igen senare.";
exit;
}




mysql_query("INSERT INTO tblbooks (year, publisher, isbn, status) VALUES ('$year', '$publisher', '$isbn', '$status')");



$result = mysql_query($query);
if ($result)
echo mysql_affected_rows()." bok lagrad i databasen.";

?>

Steiner83 2005-04-01 02:33

Jag får alltså inte fram något felmeddelande alls. Det enda jag får fram är den HTML kod som är skriven innan scriptet. Något händer dock med scriptet eftersom data "registreras" i database...

eg0master 2005-04-01 10:20

Jag förstår allvarligt inte vad du säger...

vad menar du med Något händer dock med scriptet eftersom data "registreras" i database...?

Vad ger mysql_affected_rows()?

Om du kör strängen som skapas manuellt, i phpadmin - funkar det då?

Steiner83 2005-04-01 12:58

Kör jag php scriptet så lagras inte den data jag satt in i formuläret, men en ny rad i tabellen skapas, dvs en ny bok registreras men ingen information om boken finns tillgänglig.

mysql_affected_rows() ger ingenting. Det enda som sker efter att jag tryckt på knappen "skicka", dvs anropat mitt php script (insert_book.php) är att den html kod som finns i början kommer fram. Inga mysql_affectd_rows(), ingen error som if (!$db)
som visar att databasen inte kontaktas (vilken den ändå måste göra då en ny bokID registreras).

För att göra det väldigt enkelt har jag valt att göra ett formulär med en enda rad. www.uppsalamedicin.se/bokbas/nybok5.html

Steiner83 2005-04-01 13:08

Sätter jag in detta i PHPADMIN

INSERT INTO tblbooks VALUES
("uu", "lak", 1, "cbb", "jag och döden", "sven hedin", "arne", "sven", "kalle", "2004", "1", "12345674121", "stromabolaget", "reck");

får jag detta svar:

#1136 - Column count doesn't match value count at row 1

Det är 14 columner utöver ( bokID INT NULL AUTO_INCREMENT PRIMARY KEY), vilket motsvarar antalet fält ovan ("uu", "lak", 1 etc)

Steiner83 2005-04-01 13:12

Så här ser det ut i PHP admin när jag väljer att exportera data från tblbooks. Då har jag gått in på www.uppsalamedicin.se/bokbas/nybok5.html och valt att skicka mitt formulär 2 ggr (två rader uppstår alltså tabellen, men som visas nedan finns ingen data alls).

Själv är jag lite osäker på varför kursID tex har default '0', vad är "UNIQUE KEY" som står för uniID detta stämmer väl inte överens med hur jag har skapat tabellen ovan?

Struktur för tabell `tblbooks`
#

CREATE TABLE `tblbooks` (
`bokID` int(11) NOT NULL auto_increment,
`uniID` varchar(4) default NULL,
`programID` varchar(5) NOT NULL default '',
`termID` varchar(7) NOT NULL default '',
`kursID` int(11) NOT NULL default '0',
`title` varchar(200) NOT NULL default '',
`author1` varchar(50) default NULL,
`author2` varchar(50) default NULL,
`author3` varchar(50) default NULL,
`author4` varchar(50) default NULL,
`year` varchar(4) default NULL,
`edition` char(3) default NULL,
`isbn` varchar(13) default NULL,
`publisher` varchar(60) default NULL,
`STATUS` varchar(5) default NULL,
PRIMARY KEY (`bokID`),
UNIQUE KEY `uniID` (`uniID`),
KEY `bokID` (`bokID`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

#
# Data i tabell `tblbooks`
#

INSERT INTO `tblbooks` VALUES (1, NULL, '', '', 0, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '');
INSERT INTO `tblbooks` VALUES (2, NULL, '', '', 0, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '');

eg0master 2005-04-01 14:51

Byt ut:
Kod:

if ($result)
 echo mysql_affected_rows()." bok lagrad i databasen.";

mot

Kod:

if ($result)
 echo mysql_affected_rows()." bok lagrad i databasen.";
else
 echo mysql_error();

Anledningen till att du får felet: #1136 - Column count doesn't match value count at row 1
Är att du ju inte specificerat alla kolumner du vill inserta (som du gjort med dina 4 kolumner i PHP koden). Om du inte gör INSERT table(columns) VALUES(values) utan bara INSERT table VALUES(values) måste du ha med alla kolumner vilket ju är lämpligt med tanke på din auto increment.

På den här raden:
mysql_query("INSERT INTO tblbooks (year, publisher, isbn, status) VALUES ('$year', '$publisher', '$isbn', '$status')");
Inseratr du ju t.ex. inget i kolumnen programID m.fl. som har NOT NULL och då misslyckas ju inserten eftersom du inte tillhandahpålller värden för kolumner som är NOT NULL och dessutom saknar default.

Steiner83 2005-04-01 18:37

eg0master,
tusen tack för hjälpen. Jag gör ändringarna och meddelar vad som skett!

Steiner83 2005-04-01 18:48

Jag gjorde ändringen och det svar jag får är:

Query was empty.

Jag har innan dess tagit bort tabellen och lagt till en ny fast den ser ut såhär:


Kod:

create table tblbooks
    ( bokID INT NULL AUTO_INCREMENT PRIMARY KEY,
 kursID INT NULL,
 title VARCHAR(200) NULL,
 author1 VARCHAR(50) NULL,
 author2 VARCHAR(50) NULL,
 author3 VARCHAR(50) NULL,
 author4 VARCHAR(50) NULL,
 year CHAR(4) NULL,
 edition CHAR(3) NULL,
 isbn CHAR(13) NULL,
 status VARCHAR(5) NULL
);



Alla tider är GMT +2. Klockan är nu 21:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson