Avatar billede alluc Nybegynder
16. juni 2008 - 10:53 Der er 9 kommentarer og
1 løsning

Duplicate Entry?!

Hej Eksperter,

Jeg har en webshop hvor jeg kan tilføje produkter, som efter følgende kan bestilles og købes.

Jeg har bare det lille problem at når jeg forsøger at oprettet et nyt produkt, sp fremkommer der følgende fejlmelding:

Duplicate entry '1' for key 1

Hvad kan det skyldes og hvordan kan det ordnes?

På forhånd tak.
Avatar billede znopie Nybegynder
16. juni 2008 - 11:02 #1
Prøv at sæt auto_increment på din id
Avatar billede alluc Nybegynder
16. juni 2008 - 13:15 #2
Jeg har auto_increment på mit id i databasen - men det gør ingen forskel?!
Findes der andre muligheder?
Avatar billede olebole Juniormester
16. juni 2008 - 14:28 #3
<ole>

Sikkert, men det kræver nok en clairvoyant - med mindre, du har tænkt dig at løfte sløret lidt for, hvad du laver  =)

/mvh
</bole>
Avatar billede alluc Nybegynder
16. juni 2008 - 14:45 #4
Hvad er det du vil vide olebole? Jeg vil hellere end gerne vise filer osv. men ved ikke hvad jeg skal vise jer.
Avatar billede yHec Novice
16. juni 2008 - 16:33 #5
Hvad med den kode hvor du sætter ind i db?
Avatar billede alluc Nybegynder
16. juni 2008 - 16:51 #6
Her er de to filer, som jeg bruger når jeg tilføjer et produkt.

OPRETPRODUKT.PHP
<?

if(!isset($_SESSION['admin'])) {

include("login/admincheck.php");

} else {

$type = $_GET['type'];
$id = $_GET['id'];

echo "<form action='index.php?side=opretproduktnu&type=$type&id=$id' method='post' enctype='multipart/form-data'>";

echo "<b>Billede:</b><br /><input size='30' type='file' name='upfil' /><br /><br />";

echo "<b>Produktnavn:</b><br /><input size='30' type='text' name='produkt'><br /><br />";

echo "<b>Materiale(r):</b><br /><input size='30' type='text' name='mat'><br /><br />";

echo "<b>Beskrivelse:  </b><br /><textarea name='beskrivelse' rows='8' cols='30'></textarea><br /><br />";

echo "<b>Pris (Skriv kun tallet uden ,00 eller DKK):  </b><br /><input size='30' type='text' name='pris'><br /><br />";

echo "<b>Farver:  </b><br /><input type='checkbox' name='groen' />GRØN<br />";
   
echo "<input type='checkbox' name='blaa' />BLÅ<br />";
   
echo "<input type='checkbox' name='gul' />GUL<br />";
   
echo "<input type='checkbox' name='sort' />SORT<br />";
   
echo "<input type='checkbox' name='hvid' />HVID<br /><br />";
   
echo "Andre farver: (Separer med komma - Eks.: Rød, Pink):<br /><input type='text' name='farve'><br /><br />";

echo "<b>Størrelser: (Separer med komma - Eks.: 2-3 år, 3-4 år)</b><br /><input type='text' name='str'>";

echo "<br/><br/><input type='submit' name='submit' value='Tilføj produkt'>";
echo "</form>";

}
?>

OPRETPRODUKTNU.PHP
<?

if(!isset($_SESSION['admin'])) {

include("login/admincheck.php");

} else {

$produkt = $_REQUEST['produkt'];

$type = $_GET['type'];

$mat = $_REQUEST['mat'];

$pris = $_REQUEST['pris'];

$beskrivelse = $_REQUEST['beskrivelse'];

$farve = "";

If (isset($_REQUEST['groen'])) {

$farve = $farve . "grøn,";

}

If (isset($_REQUEST['blaa'])) {

$farve = $farve . "blå,";

}

If (isset($_REQUEST['gul'])) {

$farve = $farve . "gul,";
}

If (isset($_REQUEST['sort'])) {

$farve = $farve . "hvid,";

}

If (isset($_REQUEST['hvid'])) {

$farve = $farve . "hvid,";

}

$farve = $farve . $_REQUEST['farve'];

$str = $_REQUEST['str'];

$id = microtime();

$upfil = $_REQUEST['upfil'];
           

function replace_string($ind_str){

$soketter = array("æ","ø","å","Æ","Ø","Å"," ");

$byttil = array("ae","oe","aa","AE","OE","AA","_");

$tekst = str_replace($soketter,$byttil,$ind_str);

return $tekst;

}

function resize( $filename, $newfilename, $maxw, $maxh ){

$result = false;

$srcim = imagecreatefromjpeg( $filename );

$ow = imagesx( $srcim );

$oh = imagesy( $srcim );

$wscale = $maxw / $ow;

$hscale = $maxh / $oh;

$scale = ( $hscale < $wscale ? $hscale : $wscale );

$nw = round( $ow * $scale, 0 );

$nh = round( $oh * $scale, 0 );

$dstim = imagecreatetruecolor( $nw, $nh );

imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );

$result = imagejpeg( $dstim, $newfilename, 85 );

imagedestroy( $dstim );

imagedestroy( $srcim );

return $result;

}

if(isset($_POST['submit'])){

if($_FILES["upfil"]["size"] > 0) {

$konfiguration["upload_bibliotek"] = "./produkter";

$konfiguration["max_stoerrelse"] = "10000";

$fra = $_FILES["upfil"]["tmp_name"];

$til = $konfiguration["upload_bibliotek"] . "/" . replace_string($_FILES["upfil"]["name"]);

$til_t = $konfiguration["upload_bibliotek"] . "/thumb_" . replace_string($_FILES["upfil"]["name"]);

list($major, $minor, $rev) = explode(".", phpversion());

if($major < 4){

die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");

}

if($minor < 1){

$_FILES = $HTTP_POST_FILES;

$_POST = $HTTP_POST_VARS;

$_SERVER = $HTTP_SERVER_VARS;

}

$fil_stoerrelse = filesize($fra)/1024;

if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){

die("Desværre - filen er for stor. Jeg accepterer kun " .

$konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .

ceil($fil_stoerrelse, 1) . " kb");

}

if(function_exists("move_uploaded_file")) {

#resize($fra, $til, 324, 216);
resize($fra, $til, 400, 400);

resize($fra, $til_t, 170, 100);

}

else {

copy($fra, $til);

}

}

$filnavn = $til;

$filnavnthumb = $til_t;

}

$query_insert = mysql_query("INSERT INTO testprodukter (id, produkt, type, pris, beskrivelse, farve, str, mat, filnavn, filnavnthumb)

VALUES ('$id', '$produkt', '$type', '$pris', '$beskrivelse', '$farve', '$str', '$mat', '$filnavn', '$filnavnthumb'

)")

or die(mysql_error());

header("location:index.php?side=produkter&type=$type");

}

?>

På forhånd tak.
Avatar billede yHec Novice
16. juni 2008 - 17:18 #7
Du autoincrementer ikke id, du sætter den, både med en $_GET['id'] og en $id=microtime(). Prøv at fjerne den fra din sql-sætning:

$query_insert = mysql_query("INSERT INTO testprodukter (produkt, type, pris, beskrivelse, farve, str, mat, filnavn, filnavnthumb)

VALUES ('$produkt', '$type', '$pris', '$beskrivelse', '$farve', '$str', '$mat', '$filnavn', '$filnavnthumb')")
Avatar billede alluc Nybegynder
16. juni 2008 - 17:39 #8
Ok det ser ud til at virke - tak y smid et svar.
Kan du evt. hjælpe med at tilføje et funktion, således det er muligt at lave tilbud på et produkt?
Avatar billede yHec Novice
16. juni 2008 - 17:58 #9
Husk lige at slette følgende linjer:
$id = $_GET['id']; og
$id = microtime();

og skift din action til
echo "<form action='index.php?side=opretproduktnu&type=$type' method='post' enctype='multipart/form-data'>";

Det med at lave en funktion... HMMMMM... Jeg kender jo ikke dit system. Hvad skal det kunne?

/y

/y
Avatar billede alluc Nybegynder
19. juni 2008 - 00:22 #10
Hvorfor er det jeg skal fjerne og ændre følgende ting?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester