Avatar billede hadi2003 Nybegynder
28. marts 2004 - 21:12 Der er 20 kommentarer og
1 løsning

hvorfor virker query'en ikke

jeg har en database der hedder kunder,en bestemt kunde har en kundeID. kunden ønsker at leje en film, kunden taster sit cpr nr
og den film nr han ønsker at leje, her kommer problemet, hvordan skal jeg løse det med to querys, hvor den første finder kunden(kundeID,navn,cprnr,adresse) udfra den tastede cprnr og dermed  skal den anden query finder filmen(filmID, navn)ogplacerer filmens nr i den nøgle der er berettigt til filmnr i den bestemte kundenavn  .
i må gerne rette i koden så den virker, jeg får ingen fejl meddelser men der sker intet når kunden indtaster sit cpr og den film nr han vælger at leje
min kode ser sådan ud



<?
$CPR= ($_POST['CPR']);
$filmID = ($_POST['filmID']);





$CPR = addslashes($CPR);
$filmID = addslashes($film);



$dbcon = mysql_connect("localhost", "root", "");
if(!$dbcon)
                    {
                    echo"Error:  Ingen forbindelse til databasen !";
                    exit;
                    }

mysql_select_db("videobutikken", $dbcon);


$rig=mysql_query("SELECT *  FROM kunder WHERE kunder.CPR = '$CPR'")

$result = mysql_query($query, $dbcon)
or die ("Query Failed: ". mysql_error());

if($result)
{

$query = "INSERT INTO kunder (kunder.filmID )
values('$filmID' )";

$result = mysql_query($query, $dbcon)
or die ("Query Failed: ". mysql_error());

if($result)
{
echo mysql_affected_rows()." du har udlejt en film '$filmID .";
}


?>
Avatar billede rasmusbg Nybegynder
29. marts 2004 - 01:50 #1
<?
$CPR= ($_POST['CPR']);
$filmID = ($_POST['filmID']);
$CPR = addslashes($CPR);
$filmID = addslashes($film);
$dbcon = mysql_connect("localhost", "root", "");
if(!$dbcon)
                    {
                    echo"Error:  Ingen forbindelse til databasen !";
                    exit;
                    }
mysql_select_db("videobutikken", $dbcon);
$rig=mysql_query("SELECT *  FROM kunder WHERE kunder.CPR = '$CPR'")
$result = mysql_query($query, $dbcon)
                    //^^^^^^^ - $query er ikke blevet initialiseret
or die ("Query Failed: ". mysql_error());
.
.
.
?>
Avatar billede hadi2003 Nybegynder
30. marts 2004 - 19:09 #2
Hej rasmus
Tak for dit svar ,men jeg vil sige at der mangler den anden querry, jeg har altså to tabeller, en der hedder kunder hvor den består af kundeid,navn,adresse, tlf, cpr og filmid,,,,,den anden tabell hedder film og består af filmid,filmnavn,genre og produktionaar. jeg vil have at når kunden indtaster sit cpr nr så bliver kunden identificeret og den filmid  han vælger bliver sat ind i den tabel der hedder kunder i filmid nøglen, så hvis man vil søge efter udlejte film så skal man søge efter de steder i kunder tabel hvor der står noget i filmid nøglen...
håber det her vil hjælpe dig og hjælpe mig med at finde de rigtige query og koder,,på forhånd mange tak til dig.
Avatar billede hadi2003 Nybegynder
30. marts 2004 - 19:15 #3
hvad med output,,,altså echo,,,,
Avatar billede hadi2003 Nybegynder
19. april 2004 - 00:31 #4
Hej igen
jeg ved ikke hvad er der galt , jeg ændrede en del i koden men det virker ikke,jeg ved ikke om du læste min detaljeret beskrivelse af hvad querry'en skal,altså der er to felter den ene skal man indtaste sit cpr nr i og den anden den film man vælger, der er en tabel hvor kundens cpr nr og navn og filmid, filmid felten er tøm, når man indtaste sit cprnr så skal querry finde den person udfra cpr nr'et og så skal den film nr man vælger placeres i den felt i selve tabellen der hedder filmID.Altså bare udfylde kundens nr med den film nr han vælger..håber på et hurtig svar.
Avatar billede hadi2003 Nybegynder
21. april 2004 - 18:36 #5
hvem kan hjælpe mig
Avatar billede dennismp Nybegynder
21. april 2004 - 18:53 #6
Jeg er lidt i tvivl om hvad du forsøger.

Brugere taster sit cpr-nr og et filmid ind. Du har en tabellerne:
filmen(filmID, navn)
kunden(kundeID,navn,cprnr,adresse)

Det er ikke noget problem at finde informationerne om filmen og kunden. Men hvad vil du så? Hvad skal opdateres? Hvad skal der vises?
Avatar billede hadi2003 Nybegynder
21. april 2004 - 19:47 #7
Altså en bruger som er oprettet i databasen i en tabel som hedder kunder hvor der er mange nøgle om kundens oplysninger, en af nøglerne hedder filmid,den er tøm, indtil den pådældende kunde logger sig ind, bliver godkendt, så vælger han en film, trykker på en knap som hedder lejfilm hvor efter i han skal indtaste sit cprnr og den film nr han vælger, jeg vil have at når han indtaster sit cpr nr så bliver han fundet, derefter bliver den film han indtaster gemt i den nøgle der hedder filmid
Avatar billede dennismp Nybegynder
21. april 2004 - 20:38 #8
Jeg må vist vre lidt langsom idag.

filmen: indeholder id'er og navne på film, korrekt?
kunden: indeholder kunde oplysninger..

Når du siger at det valgte filmid skal gemmes, er det så en ny tabel? Er det en del af opgaven?

I så fald, så laver vi lige en ny tabel der hedder udlaan.
CREATE TABLE udlaan(
  kundeid int not null,
  filmid int not null,
  primary key(kundeid,filmid)
);

PHP:

<?
$cpr= addslashes($_POST['CPR']);
$filmid = addslashes($_POST['filmID']);
$kundeid = null;

// Slå brugeren op.
$res=mysql_query("SELECT kundeID FROM kunder WHERE kunder.CPR = '$CPR'");
if( $res ) {
  $row = mysql_fetch_row($res);
  if( $row ) {
    $kundeid = $row[0];
  }
}
else {
  die("Databasefejl: " . mysql_error());
}

if( $kundeid === null ) {
  print "Kundeinformationer er ikke fundet.";
  exit;
}

// Her burde der måske være et tjek, om det er et rigtigt filmid der
// er givet til scriptet, således at man ikke kan leje ikke-eksisterende
// film.

// Opdatér udlaan

$res = mysql_query("INSERT INTO udlaan(kundeID,filmID) VALUES('$kundeID','$filmID')") or die("Databasefejl: " . mysql_error());
print "God fornøjelse";
?>
Avatar billede hadi2003 Nybegynder
21. april 2004 - 20:48 #9
det har været en stor hjælp, men der er lige en ting min ven, jeg har ikke en tabel der hedder udlån, det hele skal forgår i selve tabellen kunder hvor det film nr bliver sat på den nøgle der hedder film id(min tabel hedder kunder og indeholder, kundeid,navn,fornavn, cpr,og filmid)
du nævnte en god løsning ang om man kan tjekke om filmid er udlejt, hvad skal man skrive som kode, hvis du vil og har tid, ellers er det ikke hel vigtigt for min opgave
Avatar billede dennismp Nybegynder
21. april 2004 - 20:52 #10
så burde du kunne bruge dette

// Opdatér udlaan

$res = mysql_query("UPDATE kunder SET filmID='filmID' WHERE kundeid='$kundeID'") or die("Databasefejl: " . mysql_error());

if( $res && mysql_affected_rows($res) )
  print "God fornøjelse";
Avatar billede dennismp Nybegynder
21. april 2004 - 20:54 #11
<?
$cpr= addslashes($_POST['CPR']);
$filmid = addslashes($_POST['filmID']);
$kundeid = null;

// Slå brugeren op.
$res=mysql_query("SELECT kundeID FROM kunder WHERE kunder.CPR = '$CPR'");
if( $res ) {
  $row = mysql_fetch_row($res);
  if( $row ) {
    $kundeid = $row[0];
  }
}
else {
  die("Databasefejl: " . mysql_error());
}

if( $kundeid === null ) {
  print "Kundeinformationer er ikke fundet.";
  exit;
}

// Tjek om filmen er udleget

$res = mysql_query("SELECT 1 FROM kunder WHERE filmID = '$filmid'") or die(mysql_query());

if( mysql_fetch_row($res) ) { // Hvis den er udlånt får vi een række, og kommer derfor ind i denne if-sætning
  print "Filmen er desværre udlånt";
  exit;
}

// Her burde der måske være et tjek, om det er et rigtigt filmid der
// er givet til scriptet, således at man ikke kan leje ikke-eksisterende
// film.

// Opdatér udlaan

$res = mysql_query("UPDATE kunder SET filmID='filmID' WHERE kundeid='$kundeID'") or die("Databasefejl: " . mysql_error());

if( $res && mysql_affected_rows($res) )
  print "God fornøjelse";
else
  print "..";
?>
Avatar billede hadi2003 Nybegynder
21. april 2004 - 20:57 #12
1000 tak for hjælpen,
kan jeg får din mail så vi kan snakke på msn, jeg opdagede lig en fejl i en anden php
det drejer sig om samme tabel kunder,
der er en knap der hedder kundeoversigt hvor alle kunder i tabellen bliver fremvist

en anden knap hedder slet kunde,,,der er et felt hvor man skal skrive kundenID og så
knappen slet,,,hved er det for en kode man skal bruge til at den kunde nr man indtaster bliver slettet, hvis jeg er lidt besværligt så undskyld mig,
Avatar billede dennismp Nybegynder
21. april 2004 - 21:01 #13
Jeg bruger sjældent msn, så det vil du ikke får ret meget ud af :-)

Men for at sætte $kundeID, så kan du prøve:

mysql_query("DELETE FROM kunder WHERE kundeid='$kundeID'") or die("Databasefejl: " . mysql_error());
Avatar billede hadi2003 Nybegynder
21. april 2004 - 21:03 #14
Du har været en stor hjælp til mig, kan jeg vende til dig hvis jeg støde i en anden problem...
endnu en gang tak,,du er bare dygtig :o)
Avatar billede dennismp Nybegynder
21. april 2004 - 21:09 #15
Tak, det skal du være velkommen til.
Avatar billede hadi2003 Nybegynder
21. april 2004 - 21:16 #16
det er mig igen, jeg troede det vil virke, men når jeg indtaste en bedtemt kundes cprnr og den fil han lejer og trykker på udlej film så sker der intet og jeg får ingen fejl meddeleser...underligt ikke.
Avatar billede hadi2003 Nybegynder
21. april 2004 - 21:20 #17
jeg forstår ikke helt det med kundid= null (forklaring)
og så i her også  $kundeid = $row[0]; hvag går den
Avatar billede dennismp Nybegynder
21. april 2004 - 21:32 #18
> jeg forstår ikke helt det med kundid= null (forklaring)
$kundeid = null; er for at give en defaultværdi.. senere, efter databasekaldende har vi:
if( $kundeid === null ) {

hvis $kundeid'et stadig er null så skriver vi en fejl ud med at kunden ikke kunne findes.

$res=mysql_query("SELECT kundeID FROM kunder WHERE kunder.CPR = '$CPR'");
...
$kundeid = $row[0];

som du ser, så henter vi kundeID ud fra databasen - det bliver gemt som $row[0] (da det er den første kolonne vi trækker ud)..  Man kunne snildt gøre bruge mysql_fetch_array() istedet for mysql_fetch_row() og så skrive:

$kundeid = $row['kundeID'];
Avatar billede dennismp Nybegynder
21. april 2004 - 21:32 #19
har du ændret i koden siden det jeg postede?
Avatar billede hadi2003 Nybegynder
21. april 2004 - 21:34 #20
ja,, for det var forskel mellem stor og små bogstaver og så tilføjede jeg 2 linier øverst $CPR= ($_POST['CPR']);
$filmID = ($_POST['filmID']);
Avatar billede dennismp Nybegynder
21. april 2004 - 21:43 #21
hmm, du kan jo prøve at skrive  $kundeid når den er blive tildelt (den med $kundeid = $row[0]) og se om du får en værdi
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