men får følgende fejl: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\transportskadeformular\post.php on line 16
og linje 16 er i min while løkke.. jeg er helt på bar bund her
Giver din query rent faktisk et resultat? Jeg laegger maerke til at den kode du viser mangler et komma, "info.foreslag filer.value" i stedet for "info.foreslag, filer.value". Proev i din query at tilfoeje "or die(mysql_error())" for at faa mysql til selv at fortaelle hvis der er noget galt med queryen.
Jeg foreslaar at proeve denne query:
$resultat = mysql_query("SELECT info.kundenavn, info.telefonnummer, info.emailadresse, info.ordrenummer, info.fragtkvit, info.omfang, info.emballage, info.foreslag, filer.value, filer.ordrenr FROM filer, info WHERE filer.ordrenr = info.'$id'")or die(mysql_error());
..hvad jeg ville have tilfoejet er at mysql_query returnerer enten et resultat eller, hvis der ikke er noget resultat, false. Fejlmeldingen tyder paa at vaerdien af $result er false.
jeg får følgende meddelelse: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''13'' at line 1
Din oprindelige fejlmelding i loekken skyldtes ikke fejl ved loekken men at din mysql forespoergsel ikke gav nogen vaerdi.
Nu giver forespoergslen vaerdi, saa den oprindelige fejlmelding forsvandt. Nu skal du have forespoergslen til at give den rigtige vaerdi.
Din forespoergsel joiner to tabeller, filer og info. Hvilket felt har de to tabeller faelles? Jeg vil gaette paa ordrenr. Saa hvor du siger "..FROM filer, info WHERE filer.ordrenr = info.$id.." skulld du have sagt "..FROM filer, info WHERE filer.ordrenr = info.ordrenr.."
Og saa vil du begraense udtraekket til en enkelt raekke baseret paa $_GET['id'] som du gemmer i $id. Hvilken vaerdi i hvilken tabel svarer til $id? Hvis tabellen info har en id og denne id med INT som datatype (og hvis du faar en integer ud af $_GET['id']) saa bliver queryen denne:
$result = mysql_query("SELECT info.kundenavn, ......... FROM filer, info WHERE filer.ordrenr = info.ordrene AND info.id = '$id'")or die(mysql_error());
Lad os hellere proeve at bruge et par indlaeg til at snakke sagens gang igennem. (Det her skulle jo gerne vaere hjaelp til selvhjaelp.)
Foerst et spoergsmaal: Hvad reprenterer en raekke i tabellen info? Representerer det en enkelt transportskade? Du giver hver transportskade en id, og hver transportskade er for en kunde (med telefonnummer og email), og skaden er paa en fragt med en fragtkvittering, skaden havde et givet omfang, godset var i en emballage, og der foreligger et forslag til skadesgodtgoerlse? Det lyder ligetil (hvis det er korrekt.) Hvad staar der saa i info.ordrenummer?
Naeste spoergsmaal: Hvad representerer en raekke i tabellen filer? Er det saaledes at behandlingen af en skade genererer et antal filer og de filer bevarer du i tabellen filer? Hvis tabellen filer indeholder filer for skaderne, hvordan ved du saa hvilke filer der hoerer til hvilke skader? Svare filer.ordrenummer til info.id? Eller hvad?
Tredje spoergsmaal: Du laver en skadeformular som resulterer i et nummer der kommer til at staa i $_GET['id']. Hvad svarer $_GET['id'] til? Til en enkelt skade, nemlig den skade der i tabellen info har id lig med $_GET['id']?
Fjerde spoergsmaal: Hvilke oplysninger vil du saa have trukket ud af databasen? Vil du have oplysningerne om skaden (kunde, fragtkvit, omfang, o.s.v.) samt alle filer der hoere til skaden? Eller hvad?
1: det der står i ordrenummer i info er det ordrenummer som kunden selv kan vælge at skrive ind (det nummer som eventuelt står på faktura), for at undgå at kunden taster fejl eller lignende så bruger vi id til at bestemme da den er fast og aldrig ens.
2: der bliver hver fil der bliver uploaded sat ind med filnavn. Og ud fra den id som er blevet sat i info bliver der så sat det id i ordrenr således at flere billeder kan følge en kunde. Så id i info svare til ordrenr i filer.
3: jeg benytter $_GET['id']; til at bestemme ud fra en view.php som jeg ikke har vist. koden for denne fil ses neden for.
det jeg har gjort er et database udtræk hvor min medarbejder kan vælge det ønskede ordrenummer som så tager den id med fra info som ordrenummeret et tilknyttet og sender det videres til post.php som er den fil vi har siddet og diskuteret.
Vi kommer naermere. Lad mig fortaelle i mine egne ord hvad jeg nu forstaar fra dine indlaeg, saa kan du rette mig hvis jeg tager fejl.
Altsaa:
1. Hver raekke i tabellen info svarer til en skade, og skaden er unikt identificeret ved info.id.
2. Til en skade kan der hoere mange filer. Data over filerne bevares i tabellen filer, og filerne er linkede til skader derved at filer.ordernummer = info.id.
3. Du vaelger i view.php en enkelt skade og sender skadens id til post.php hvor den ankommer som $_GET['id'] hvilket du gemmer i $id. Du vil saa se de filer som hoerer til skaden.
Hvis det altsammen er korrekt, saa skal du i post.php vaelge de raekker i tabellen filer der svarer til skaden med info.id = $id og skrive de rigtige data ud.
Saa hvordan kombinerer du tabellen filer med tabellen info? Fordi du siger at info.id svarer til filer.ordernr faar du alle vaerdierne saaledes:
SELECT * FROM info i JOIN filer f ON i.id = f.ordernr
Man kunne ogsaa havde sagt SELECT * FROM filer, info WHERE filer.ordernr = info.id. Men jeg finder JOIN metoden langt nemmere at forstaa. Yderligere giver jeg tabellerne korte navne for at undgaa at skulle gentage tabelnavnene.
Du vil ikke have alle vaerdierne, kun de der hoerer til skaden med id = $id, altsaa:
SELECT * FROM info i JOIN filer f ON i.id = f.ordernr WHERE i.id = $id
Hvis jeg indsaetter det i din kode fra dit oprindelige indlaeg faar jeg dette:
.... $result = mysql_query("SELECT i.kundenavn, i.telefonnummer, i.emailadresse, i.ordernummer, i.fragtkvit, info.omfang, i.emballage, i.foreslag, f.value, f.ordrenr FROM info i JOIN filer f ON i.il = f.ordernr WHERE i.id = $id")or die(mysql_error()); while .....
Det er muligt at din version af mysql ikke vil acceptere "WHERE i.id = $id" men foretraekker "WHERE i.id = '$id'" I saa fald retter du det.
Saa (1) fortael mig om jeg har forstaaet problemet rigtigt og, hvis saa, (2) om min foreslaaede kode er til hjaelp.
øhh det var meget meget forvirrende?? nogle gange bruger du i. andre gange info. og f. og filer. kan du ikke tage og skrive det korrekt uden forkortelser hist og pist? giver overhovedet ingen mening for mig desværre??
Du gad altsaa ikke engang svare paa om jeg havde forstaaet problemet rigtigt! Og jeg har skrevet det korrekt, men du goer ikke den indsats at saette dig ind i det.
Det oprindelige spoergsmaal drejede sig om fejlmelding i din loekke. Det svarede jeg paa: fejlmeldingen i loekken kom fordi din sql query var ukorrekt og ikke gav noget resultat.
Da du fik resultater ud af din query og det oprindelige problem derved blev loest var resultaterne ikke de tilsigtede. Dette yderligere problem skulle du egenlig have oprettet et nyt spoergsmaal for, men jeg proevede (og mener selv at jeg gjorde en stor indsats) at hjaelpe dig til rette.
Jeg staar af her. Du afgoer om du vil lukke spoergsmaalet paa baggrund af besvarelse af dit oprindelige spoergsmaal og saa oprette et nyt spoergsmaal for de videre problemer. I saa fald boer du nok forklare problemet lidt tydeligere (og lade vaere med at komme med bemaerkninger som "kan du ikke lige tage og skrive det korrekt..".
ok du begyndte på en lang smøre som jeg ikke fattede ret meget af.. jeg er rimelig meget noob og kan ikke forklare hvorfor tingene virker som det gør... det eneste jeg kan gøre er at poste den kode som virkede. Jeg forstå lang fra ret meget af hvad der sker, hvilket er det jeg så småt prøver på. Men da denne opgave var ret vigtig at få løst rimelig hurtigt så var det ikke helt nemt at skulle besvare.
Din måde at håndtere problemet på gjorde at jeg selv forstod nogle ting bedre, men i dit 3. svar/spørgsmål stod jeg helt af, for jeg forstod intet af koden. Derfor svarede jeg som jeg gjorde. Ikke for at være uhøflig, men fordi jeg slet ikke forstod hvad i. osv betød, jeg så ikke nogen deklaration af variablerne til i eller f og så fattede jeg intet..
Og jo da jeg fik mit problem løst i starten fik jeg de data ud som jeg skulle bruge. Og du valgte at køre videre i hvad jeg forstod som en måde for at forklare over for andre i detaljer hvad jeg havde gang i. Og det hjalp mig til at forstå en masse, men jeg er meget interesseret i at vide havde det var du havde gang i her til sidst?? for det fortod jeg desværre intet af.
Jeg er ked af du opfattede det som om at jeg stadig havde problemer, vi havde lige skudt forbi hinanden... jeg fandt en løsning i det som Micheal_stim postede. hvilket jeg også mener jeg skrev før du indledte =)
Men igen mange tak for den hjælp du har givet det har hjulpet mig til at forstå meget af det her. Og for det syntes jeg også du skal have de point =D
Synes godt om
Ny brugerNybegynder
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.