Gå til innhold

trenger fortsatt hjelp med kontroll (løst)


Anbefalte innlegg

Skrevet (endret)

Jeg skulle laget en kontroll på om det som legges inn i databasen er registrert tidligere.

 

Jeg prøvde dette.

 

<?php
       require("../config/db.php");

       $tittel = $_POST["tittel"];
       $rank = $_POST["rank"];
       $merk = $_POST["merk"];
       $artist = $_POST["artist"];
       $sjanger = $_POST["sjanger"];
       $plate = $_POST["plate"];

// Gjør at det ikke blir registrert hvis det er tomme felt
if(empty($tittel)||empty($rank)||empty($artist)||empty($sjanger)||empty($plate)||strlen($merk)>=255)
   {
      if (empty($tittel)) Print "Du har ikke fylt inn CD-tittel.<br>";
      if (empty($rank)) Print "Du har ikke fylt inn ranken på cd'en.<br>";
      if (empty($artist)) Print "Du har ikke fylt inn artistnavn.<br>";
      if (empty($sjanger)) Print "Du har ikke fylt inn sjangernavn.<br>";
      if (empty($plate)) Print "Du har ikke fylt inn plateselskap.<br>";
      if (strlen($merk)>=255) Print "Beskrivelsen kan ikke være mer en 255 tegn.<br>";
      die ("Gå tilbake å rett opp feilene");
    }
       // sql setning for å hente tittel i tabellen hvor tittel i tabell er lik tittel som ble skrevet inn
       $sql = "SELECT cd_tittel FROM tbl_cd WHERE cd_tittel='$tittel'";
       // lagrer resultatet i var, hvis ingen resultat blir var tom / null
       $cd=odbc_exec($db,$sql);
       // hvis tittel eksisterer i tabellen og lik det som ble skrevet inn, utfør if
       if ($cd == $tittel)
       {
         // skriver ut melding
         PRINT "Denne cd tittelen er allerede registrert, gå tilbake.";
       }

else
{
 $sql = "INSERT INTO tbl_cd (cd_tittel, cd_rank, cd_merk, artist_id, sjanger_id, plate_id) VALUES ('$tittel', '$rank', '$merk', '$artist', '$sjanger', '$plate')";
 odbc_exec($db,$sql);
 odbc_close($db);
               header("Location: ../index.php");
}
?>

 

og fikk denne feilen.

 

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1., SQL state 07001 in SQLExecDirect in K:\webroot\musikk\php\reg_cd.php on line 25

 

Warning: Cannot modify header information - headers already sent by (output started at K:\webroot\musikk\php\reg_cd.php:25) in K:\webroot\musikk\php\reg_cd.php on line 38

 

Jeg vet det går an å bruke noe for å telle resultatet. men vet ikke hvordan jeg skal gjøre noen av delene,

 

Håper noen kan hjelpe meg.

 

Takker for hjelpen på forhånd.

 

 

NB: Jeg har rettet litt på koden og lagt oppdatert koden ut, feilen hva at jeg spurte fra feil tabell. Nå får jeg legge inn, men jeg får legge inn samme artisten flere ganger. Noe jeg ikke ønsker.

 

Får ingen feil melding heller.

 

Jeg er ny med PHP.

Endret av Tullen007
Videoannonse
Annonse
Skrevet (endret)

Siste feilmeldingen får du siden du får den første feilmeldingen.

 

Første feilmeldingen får du fra odbc_exec(), feilmeldingen sier at du har for få parametere

eks:

odbc_exec(parameter1, parameter2, parameter3)

vet ikke hvor mange parametere du skal ha der jeg! google it!

 

EDIT:

$db <-- ser ikke at du har satt denne noe sted i koden? er det feilen?

Her er uansette et eksempel på hvordan du bruker den:

 

$server = 'myservername';

$database = 'mydatabasename';

$username = 'myusername';

$password = 'mypassword';

 

$connection_string =

'DRIVER={SQL SERVER};SERVER=' . $server . ';DATABASE=' . $database;

 

$connection = odbc_connect($connection_string, $username, $password);

 

 

$connection er her det samme som din $db

men må tilpasses i forhold til hvilken type database du har da!

Endret av Sindre
Skrevet (endret)

Jeg har rettet litt på koden og lagt oppdatert koden på siden, feilen hva at jeg spurte fra feil tabell. Nå får jeg legge inn, men jeg får legge inn samme artisten flere ganger. Noe jeg ikke ønsker.

 

Får ingen feil melding nå

 

 

Men hva mener du med parametere, Jeg er ny med PHP.

Endret av Tullen007
Skrevet

Hvis du ikke ønsker at flere artister skal gå ann og legge til, er det enkleste og lage den raden UNIK i databasen du lager, så om det går an og velge unik på artist_id i databasen din!

Skrevet
Hvis du ikke ønsker at flere artister skal gå ann og legge til, er det enkleste og lage den raden UNIK i databasen du lager, så om det går an og velge unik på artist_id  i databasen din!

5997469[/snapback]

 

Jeg rettet koden, så nå er ikke artist nevnt annet at cd tittelen har en artist / band, rank, sjanger osv.

 

Jeg har laget en tabell som heter tbl_cd og der har jeg cd_id som primær nøkkel. i tillegg til alle de andre feltene som du ser i sql setningen med INSERT.

 

Hvis tittelen finnes i tabellen blir jo den lagret i variabelen $cd. Som blir sammenlingnet i if setningen.

og vis $cd er lik $tittel blir jo if setningen utført.

 

Men i mitt tilfelle blir ikke if setningen utført

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...