Avatar billede kane Juniormester
25. juni 2005 - 18:24 Der er 25 kommentarer og
1 løsning

php/sql og access database

Yup det lyder som en dum ide, men jeg prøver nu alligevel.

jeg har disse linier.
$dbConn = odbc_connect("invoice","","")
or die("Error opening database .... use the browsers BACK button");

$query = "SELECT * FROM faktura where fakturanr=$fakturanr";
$dbResult = odbc_exec($dbConn,$query) or die("Error, Product Listing
failed .... use the browsers BACK button");
$row = odbc_num_rows($dbResult);

Mit problem er where fakturanr=$fakturanr ikke virker, jeg har skrevet i min browser url/invoice.php?fakturanr=1, der får jeg så denne fejl

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "fakturanr="., SQL state 37000 in SQLExecDirect in C:\Documents and Settings\Dennis\Skrivebord\Webfiler\testinvoice\invoice.php on line 50

linie 49 $query = "SELECT * FROM faktura wherefakturanr=$fakturanr";

linie 50 $dbResult = odbc_exec($dbConn,$query) or die("Error, Product Listing
Avatar billede hmortensen Nybegynder
25. juni 2005 - 18:33 #1
Tyder på register_globals er off, som den bør være, og du derfor skal hente værdien med $_GET
$query = "SELECT * FROM faktura where fakturanr=".$_GET['fakturanr'];
Avatar billede Slettet bruger
25. juni 2005 - 18:34 #2
Prøv med denne linie i starten af dit script:

$fakturanr = $_GET['fakturanr'];
Avatar billede kane Juniormester
25. juni 2005 - 20:20 #3
efter din hmort ser den nu sådan ud

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "fakturanr="., SQL state 37000 in SQLExecDirect in C:\Documents and Settings\Dennis\Skrivebord\Webfiler\testinvoice\invoice.php on line 50
"tyder på register_globals er off"?? det er på en XP pro (lokat) jeg prøver at få den til at virke.
Avatar billede hmortensen Nybegynder
25. juni 2005 - 20:33 #4
register_globals er en php indstilling, som superglobalisere form data, server variabler, cookies og sessions.

Prøv med '' om:
$query = "SELECT * FROM faktura where fakturanr='".$_GET['fakturanr']."'";
Avatar billede kane Juniormester
25. juni 2005 - 21:26 #5
Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket., SQL state 22005 in SQLExecDirect in C:\Documents and Settings\Dennis\Skrivebord\Webfiler\testinvoice\invoice.php on line 50

men linie 50 er nu
$dbResult = odbc_exec($dbConn,$query) or die("Error, Product Listing

ville det hjælpe at sætte regi til on?
Avatar billede Slettet bruger
25. juni 2005 - 21:28 #6
Nej, det vil være en dårlig ide, da det medfører en masse sikkerhedsproblemer.
Avatar billede hmortensen Nybegynder
25. juni 2005 - 21:31 #7
Prøv med statisk data:
$query = "SELECT * FROM faktura WHERE fakturanr = 1";
Avatar billede kane Juniormester
25. juni 2005 - 21:38 #8
det hjalp, men hva så?
Avatar billede hmortensen Nybegynder
25. juni 2005 - 21:41 #9
Så skal den her også virke:
$query = "SELECT * FROM faktura WHERE fakturanr = ".$_GET['fakturanr'];

Tjek stave måden på variablen og i kaldet.
Avatar billede kane Juniormester
25. juni 2005 - 21:47 #10
ah for fanden.
jeg havde kun skrevet faktura=1 i browser

sorry :)

Den virker nu
Avatar billede kane Juniormester
28. juni 2005 - 16:32 #11
flere point for mere hjælp
Avatar billede kane Juniormester
28. juni 2005 - 16:36 #12
prøver at sætte ting ind i databasen.

jeg får denne fejl

Der er en syntaksfejl i INSERT INTO-sætningen., SQL state 37000 in SQLExecDirect in C:\Documents and Settings\Dennis\Skrivebord\Webfiler\testinvoice\gem_faktura.php on line 53
linie 53 er :$dbResult = odbc_exec etc etc

/ connect to the database
    $dbConn = odbc_connect("invoice","","")
    or die("Error opening database .... use the browsers BACK button");

//her kommer alle felter fra POST


$firma =  $_POST["firma"];
$navn =  $_POST["navn"];
$adresse =  $_POST["adresse"];
$post_by = $_POST["post_by"];

//og her skulle være mange flere

//smide ting i DB

$sqlQuery = "insert into faktura (firma, navn, adresse, post_by, antal_1, antal_2, antal_3, antal_4, antal_5, antal_6, antal_7, antal_8, navn_1, navn_2, navn_3, navn_4, navn_5, navn_6, navn_7, navn_8, pris_1, pris_2, pris_3, pris_4, pris_5, pris_6, pris_7, pris_8, dato, rabat, rabat_navn) values ('$firma', '$navn' ,'$adresse', '$post_by', $antal_1, $antal_2, $antal_3, $antal_4, $antal_5, $antal_6, $antal_7, $antal_8, '$navn_1', '$navn_2', '$navn_3', '$navn_4', '$navn_5', '$navn_6', '$navn_7', '$navn_8', $pris_1, $pris_2, $pris_3, $pris_4, $pris_5, $pris_6, $pris_7, $pris_8, $dato, $rabat, '$rabat_navn')";
$dbResult = odbc_exec($dbConn,$sqlQuery) or die("Error, Product Insert failed .... use the browsers BACK button");
   

odbc_close($dbConn);

//slut
Avatar billede hmortensen Nybegynder
28. juni 2005 - 22:13 #13
Prøv at udskrive din sql sætning.
Avatar billede kane Juniormester
28. juni 2005 - 22:35 #14
jeg slettede alle sammen og startede med en afgangen, nu virker den.
Men nu har jeg fået nogle andre ting som driller.
Hvis nogle felter er tomme, så brokker den sig, og 100% vil alle felter ikke være fyldt hver gang man skal gemme en faktura.
Hvad gør man så?
Avatar billede hmortensen Nybegynder
28. juni 2005 - 22:38 #15
Du kan enten sætte feltet til at have en default værdi, eller tillade NULL værdi (kender ikke til access sql), eller lave en if for hver felt, og på den måde indsætte 0 eller hvad du ønsker.

Fx. sådan her:
$var = (empty($_POST['var')) "0" : $_POST['var'];
Avatar billede kane Juniormester
28. juni 2005 - 22:49 #16
hvordan tillader man NULL værdien
Avatar billede hmortensen Nybegynder
28. juni 2005 - 22:58 #17
Kender som sagt ikke noget til access, så ved ikke hvordan det gøres deri.
Avatar billede kane Juniormester
28. juni 2005 - 23:01 #18
ok
men den linie her

$var = (empty($_POST['var')) "0" : $_POST['var'];

jeg går ud fra at du mener var = firma, navn etc etc ikk?

men den mangler en ]

$var = (empty($_POST['var'))

og den virker ikke hvis jeg smider en på lige efter var'] ))
Avatar billede kane Juniormester
28. juni 2005 - 23:09 #19
$var = (empty($_POST['var')) ? "0" : $_POST['var'];
Avatar billede kane Juniormester
28. juni 2005 - 23:09 #20
sådan der
Avatar billede hmortensen Nybegynder
28. juni 2005 - 23:59 #21
Gik lidt stærkt. Det er blot en if sætning, skrevet på kort måde. Og ja, var skal udskiftes med dine variabel navne.
$var = (empty($_POST['var'])) ? "0" : $_POST['var'];
Avatar billede kane Juniormester
29. juni 2005 - 00:05 #22
np, så nu er jeg snart færdig, den sidste ting som ikke er som med mysql.
Jeg henter det sidste nummer (faktura) og når jeg så gemmer en ny faktura, skal den jo lægge en til.

øverst har jeg:

$query = "SELECT fakturanr FROM faktura ORDER BY fakturanr DESC";
$dbResult = odbc_exec($dbConn,$query) or die("Error, Product Listing failed .... use the browsers BACK button");

$new = odbc_result ($dbResult, "fakturanr");

lige over min query til at sætte ind har jeg

$new + 1;


i min insert into har jeg
man må åbenbart ikke kun skirve $new under values da der så ikke er samme antal. og den må ikke hedde new.

Den gemmr fint, men det er samme nummer hver gang,  hvordan får man den til at plusse 1 til hver gang?

$sqlQuery = ("insert into faktura (firma, navn, adresse, post_town, dato, fakturanr) values ('$firma', '$navn', '$adresse', '$post_town', '$dato', '$new')");
Avatar billede kane Juniormester
29. juni 2005 - 00:07 #23
der kom lidt vrøvl med der.

Man må åbenbart ikke kun skirve $new under values da der så ikke er samme antal. og den må ikke hedde new i starten, så jeg kalder den fakturanr
Avatar billede hmortensen Nybegynder
29. juni 2005 - 00:12 #24
$new = $new + 1;
eller
$new++;
Avatar billede kane Juniormester
29. juni 2005 - 00:19 #25
cool.
takker

smid et svar
Avatar billede hmortensen Nybegynder
29. juni 2005 - 00:21 #26
Det var så lidt
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