Avatar billede zpinner Nybegynder
07. juli 2003 - 23:05 Der er 16 kommentarer og
1 løsning

hvis titlem findes skal den ik skrive det ind igen

det jeg har ser sådan her ud:

<?

$host = "localhost";
$brugernavn = "root";
$kodeord = "";
$database = "film";
mysql_connect($host,$brugernavn,$kodeord);
mysql_select_db($database);
?>


<?


mysql_query("CREATE DATABASE IF NOT EXIST navn film");


$tabelSQL = "CREATE TABLE IF NOT EXIST filmnavn
(
navn varchar(50),
cdere int(2)

)";
mysql_query($tabelSQL);




$resultat = mysql_query("select navn, cdere from filmnavn");

// Kør så igennem for hver række
while ($raekke = mysql_fetch_array($resultat)) {
extract($raekke);
echo "Navn: $navn Cd'ere: $cdere<br />";
}








$tabel = "filmnavn";
$navn = $_POST[id1];
$cdere = $_POST[id2];
$insertSQL = "insert into $tabel (navn, cdere)
values ('$navn', $cdere)";
mysql_query($insertSQL);


?>




<form method='post' action=''>
Film Navn :<br>

<input type="Text" name='id1' size='12' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">


<br>

<input type="radio" name="id2" value="1" />1 cd
<input type="radio" name="id2" value="2" />2 cd'er<br>

<input type='submit' value='Send' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">
</form>


det viker fint nok med at jeg skriver til databasen men jeg vil ha at den ikke kan skrive de samme ting igen og igen
Avatar billede ztyxx Nybegynder
07. juli 2003 - 23:08 #1
du laver bare en simpel søgning først, og sammenligner resultatet med det du vil sætte ind, er det i databasen, skal det ikke sættes ind
Avatar billede 20 Nybegynder
07. juli 2003 - 23:09 #2
Avatar billede zpinner Nybegynder
07. juli 2003 - 23:10 #3
ja det er korekt  :)

men jeg har bare ingen anelsen om hvordan det skal skrives ;)
Avatar billede detox Nybegynder
08. juli 2003 - 00:20 #4
Du kan osse bare vælge at gøre et felt unikt sådan her:
------------------------
CREATE  TABLE  filmnavn ( cd int( 2 ),
navn varchar( 50 ),
UNIQUE  KEY navn ( navn )) TYPE = MYISAM;
------------------------
Når du så indsætter tilføjer du IGNORE sådan:
------------------------
$insertSQL = "INSERT IGNORE INTO $tabel (navn, cdere)
VALUES ('$navn', $cdere)";
mysql_query($insertSQL);
-------------------------
Så risikerer du ikke at få dubletter med samme navn.
Avatar billede zpinner Nybegynder
08. juli 2003 - 12:14 #5
det kan jeg godt nok ikke få til at virke  får et til at kører men den inorer bare ikke det navn som står der inde

mit hovede problem ligger i at hver gang siden bliver updateret så skriver den en mere på altså den jeg sidst tiføjede
Avatar billede detox Nybegynder
08. juli 2003 - 12:34 #6
Hvis et felt fx "navn" er defineret "UNIQE" i MySQL kan det ikke overskrives med den samme værdi. Nu ved jeg ikke hvor gammel den er, men jeg mener den har været med længe.
M.h.t. til at den skriver en ny i databasen hver gang du opdaterer, er det fordi du mangler en if-sætning der tjekker når formen bliver sendt.
Avatar billede detox Nybegynder
08. juli 2003 - 12:50 #7
Prøv noget i den her stil:
--------------------------
<?
$host = "localhost";
$brugernavn = "root";
$kodeord = "";
$database = "film";

$db = mysql_connect($host,$brugernavn,$kodeord);
mysql_select_db($database);

$resultat = mysql_query("select navn, cdere from filmnavn");

// Kør så igennem for hver række
while ($raekke = mysql_fetch_array($resultat)) {
extract($raekke);
echo "Navn: $navn Cd'ere: $cdere<br />";
}

if (isset($_POST['send'])) {
$tabel = "filmnavn";
$navn = $_POST['id1'];
$cdere = $_POST['id2'];
$insertSQL = "insert ignore into $tabel (navn, cdere)
values ('$navn', $cdere)";
//mysql_query($insertSQL);
echo $navn;
echo "<br>" . $cdere;
echo "<br>" . $insertSQL;
}
else {
?>

<form method='post' action='<?=$_SERVER['PHP_SELF']?>'>
Film Navn :<br>

<input type="Text" name='id1' size='12' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">
<br>

<input type="radio" name="id2" value="1" />1 cd
<input type="radio" name="id2" value="2" />2 cd'er<br>

<input type='submit' name='send' value='Send' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">
</form>
<? }?>
Avatar billede detox Nybegynder
08. juli 2003 - 12:55 #8
echo $navn;
echo "<br>" . $cdere;
echo "<br>" . $insertSQL;
-------------------------
Er selvfølgelig bare noget debug du kan rette til, så man kan se hvad der er tilføjet.
Avatar billede zpinner Nybegynder
08. juli 2003 - 13:02 #9
hmm  når jeg har sat det du skrev ind  står der bare det her

triple x
2
insert into filmnavn (navn, cdere) values ('triple x', 2)
Avatar billede detox Nybegynder
08. juli 2003 - 13:19 #10
Det var osse tanken, du kan jo selv rette det til hvad du ønsker.
Avatar billede zpinner Nybegynder
08. juli 2003 - 13:35 #11
heh  men det er jo altså meningen at man skal kunne adde en masse film det i den funktion men ved det eksemplem du har lavet der  adder den jo ikke engang til databasen  den skriver bare hvad man lige har skrevet ind.

Det er meningen i sidste ende at det skal blive sådan at man kan se de 5 sidste tilføjede film
Avatar billede detox Nybegynder
08. juli 2003 - 13:43 #12
Ok, min fejl. Jeg havde udkommenteret: //mysql_query($insertSQL);
-----------------------
<?
$host = "localhost";
$brugernavn = "root";
$kodeord = "";
$database = "film";

$db = mysql_connect($host,$brugernavn,$kodeord);
mysql_select_db($database);

$resultat = mysql_query("select navn, cdere from filmnavn");

// Kør så igennem for hver række
while ($raekke = mysql_fetch_array($resultat)) {
extract($raekke);
echo "Navn: $navn Cd'ere: $cdere<br />";
}

if (isset($_POST['send'])) {
$tabel = "filmnavn";
$navn = $_POST['id1'];
$cdere = $_POST['id2'];
$insertSQL = "insert ignore into $tabel (navn, cdere)
values ('$navn', $cdere)";
mysql_query($insertSQL);
}
?>

<form method='post' action='<?=$_SERVER['PHP_SELF']?>'>
Film Navn :<br>
<input type="Text" name='id1' size='12' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">
<br>
<input type="radio" name="id2" value="1" />1 cd
<input type="radio" name="id2" value="2" />2 cd'er<br>
<input type='submit' name='send' value='Send' style="border-style: solid; border-width: 1px; border-color: #666666; background-color: #ffffff; font: 10px verdana; ">
</form>
-------
og nu er else-sætningen fjernet så det skulle være muligt at indsætte flere film.
Avatar billede detox Nybegynder
08. juli 2003 - 13:48 #13
Men sagens kerne var jo at du vil undgå dubletter. Har du sat et felt til at være "UNIQUE"?
Avatar billede zpinner Nybegynder
08. juli 2003 - 15:43 #14
øhh  tror  jeg ikke  hehe  er ikke så meget inde i det skit her  men du mener vel at inde i table filmnavn  skal både navn og cdere værer UNIQUE  men  jeg ved bare ik lige hvordan jeg skal skrive det  jeg har phpmyadmin hvis det kan hjælpe :)
Avatar billede detox Nybegynder
08. juli 2003 - 18:40 #15
Ja, hvis du åbner din tabel i phpmyadmin, så står der "Handling" i højre side.
Derunder står der "Unik", prøv at trykke på den ud for den række der hedder "navn". Så skulle den gerne blive unik. "cdere" må/skal jo ikke være unikke.
Avatar billede zpinner Nybegynder
08. juli 2003 - 20:13 #16
nej det er klart :)  og jeg har os fået det til at virke nu ;) 

hvis du vi ha lidt points for det  må du helere svare :)
Avatar billede detox Nybegynder
08. juli 2003 - 20:33 #17
Ok, da. c",)
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
Computerworld tilbyder specialiserede kurser i database-management

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