Avatar billede leif Seniormester
16. april 2005 - 22:18 Der er 34 kommentarer og
1 løsning

Sender forkerte data

Hej,

Har et underligt problem.

Hvis vi antager at de korrekte data ser ud som følger:
Konto / Beløb
1 / 10
2 / 0
3 / 20
4 / 10
5 / 0

Men den sender data som om de var:
Konto / Beløb
2 / 10
3 / 0
4 / 20
5 / 10
1 / 0


Er det til at forstå ?

Hvad har jeg gjort forkert ?

Fra
Leif
Avatar billede erikjacobsen Ekspert
16. april 2005 - 22:26 #1
Det er sikkert din kode, der er fejl i. Må vi se?
Avatar billede leif Seniormester
16. april 2005 - 22:49 #2
Avatar billede erikjacobsen Ekspert
16. april 2005 - 23:05 #3
Og hvad er det der går galt?
Avatar billede barklund Nybegynder
17. april 2005 - 00:16 #4
Det giver ikke nogen mening? Du har et script hvis primære funktioner er at sende nogle e-mails og du snakker om et output som vi ikke aner hvor kommer fra, indholder eller resulterer i.

Mere forklaring og simplere kilde ville være at foretrække. Har du prøvet at slette al uvedkommende kode og se, hvad der er tilbage - og se hvilket output det giver?
Avatar billede olebole Juniormester
17. april 2005 - 03:02 #5
<ole>

Hvad laver den nederste kodeblok? Skal den mon ikke slettes? Det er bare en gentagelse af den blok, der i forvejen står i din løkke  :)

/mvh
</bole>
Avatar billede leif Seniormester
17. april 2005 - 12:51 #6
Så har jeg opdateret scriptet lidt !

Når jeg kører scriptet og den henter dataene databasen sender den mail som om at den skal sende som følgende (Hvor får sin mail, lige nu sender den alle mail til mig):

I databasen:
Konto / beløb
leif / 10
rene / 15

Men den sender kun 1 mail nemlig til leif med beløbet 15 kr., rene får ikke en mail !

Totalmailen er korrekt.
Avatar billede barklund Nybegynder
17. april 2005 - 14:51 #7
Hvorfor summerer du ikke op i din sql i stedet for? Du henter alle rækkerne ud og håndterer så summeringen i php i stedet for - det er meget smartere at bruge en GROUP BY konto og noget SUM(belob) AS belob i din SELECT.
Avatar billede leif Seniormester
17. april 2005 - 16:41 #8
Kan du give et Ekspempel ? Sådan har jeg aldrig lavet sql sætninger og overhovedet ikke med når jeg henter fra flere tabeller !
Avatar billede leif Seniormester
17. april 2005 - 16:46 #9
Jeg har forsøgt, men det gik ikke så godt igen !

http://ljnet.dk/exp/610348/script1.phps
Avatar billede barklund Nybegynder
17. april 2005 - 17:07 #10
Det må være noget med:

$result = mysql_query("SELECT kunder.*, SUM(billing.beløb) AS beløb FROM kunder, billing WHERE billing.konto = kunder.bruger GROUP BY billing.konto");

Så summerer den alle beløb sammen for den enkelte kundes konto-id.
Avatar billede leif Seniormester
17. april 2005 - 17:10 #11
$result = mysql_query("SELECT kunder.*, billing.*, SUM(beløb) AS total FROM kunder, billing WHERE billing.konto = kunder.bruger GROUP BY billing.konto");

Vi kom næsten frem til den samme !

Genial metode !

Vil du have point ?
Avatar billede barklund Nybegynder
17. april 2005 - 17:12 #12
billing.* giver ikke meget mening at have med længere :)
Avatar billede leif Seniormester
17. april 2005 - 17:16 #13
Nope ! Shit det havde jeg ikke lige tænkt på ! Nå, der står nemlig nogen andre oplysninger i tabellen billing som jeg senere ville have haft med i mailen  ! Men der må jeg se om jeg kan finde en anden løsning !
Avatar billede barklund Nybegynder
17. april 2005 - 17:20 #14
Det kan du godt, men så billing indeholder jo informationer om hver regning - så hvis du skal have noget ud af den, så kan du - hvis det er en sum eller et gennemsnit - hente det i samme query.

Men vil du have for eksempel alle regningerne med fulde detaljer med i mailen, så kan du lave en underforespørgsel efter disse.
Avatar billede barklund Nybegynder
17. april 2005 - 17:20 #15
Og tark for points :)
Avatar billede leif Seniormester
17. april 2005 - 17:24 #16
Det var de fulde oplysninger om den enkelte regning jeg skulle bruge ! Men der overvejer jeg lidt om jeg bare skal henvise til siden, hvor de ellers kan se Regningsstatus, ændre deres egne oplysningerne osv !
Avatar billede barklund Nybegynder
17. april 2005 - 17:27 #17
Det vil jo bare være noget med:

$regninger = mysql_query("SELECT * FROM billing WHERE konto = ".$kundeid);

Og så løbe disse rækker igennem og tilføje hver af dem til mailen.

Men så kunne du også have lavet det, som du gjorde - det er bare lidt besværligt at skulle lave sådan en dobbeltloop i et loop :)
Avatar billede leif Seniormester
17. april 2005 - 17:30 #18
Jeg har kun et lille problem nu !

Min total tager ikke ,75 med ud ?
Avatar billede barklund Nybegynder
17. april 2005 - 17:32 #19
Felterne i databasen er vel af typen float, hvis du skal have kommatal i dem?
Avatar billede leif Seniormester
17. april 2005 - 17:34 #20
Det er de også ! I tabellen står tallene korrekt ! Men ikke når jeg kører dette script !
Avatar billede barklund Nybegynder
17. april 2005 - 17:39 #21
Men det er floats og ikke strenge?
Avatar billede leif Seniormester
17. april 2005 - 17:43 #22
Ikke forstået ?

Min struktur i tabellen er som følger:

CREATE TABLE billing (
  id tinyint(4) NOT NULL auto_increment,
  konto varchar(40) NOT NULL default '',
  dato date NOT NULL default '0000-00-00',
  faktura varchar(10) NOT NULL default '',
  beløb float(10,2) NOT NULL default '0.00',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede barklund Nybegynder
17. april 2005 - 18:24 #23
Hm, det burde SUM da kunne finde ud af. Måske der er en individuel sum-funktion til floats - kigger lige.
Avatar billede barklund Nybegynder
17. april 2005 - 18:29 #24
Niks, ifølge manualen skulle det være korrekt. Laver lige en testtabel...
Avatar billede barklund Nybegynder
17. april 2005 - 18:31 #25
Virker perfekt for mig. Jeg har lavet en tabel med en enkelt float række og indsat nogle rækker med kommatal (3.5 og 4.72). Hvis jeg kalder en SUM på den række får jeg præcis 8.22 som ventet.

Hvordan ser dit seneste script ud?
Avatar billede leif Seniormester
17. april 2005 - 18:36 #26
Avatar billede barklund Nybegynder
17. april 2005 - 18:50 #27
Men du sætter da aldrig $total? Du mangler vist noget med $total = $row['beløb'] eller noget i den stil - øverst i din løkke.
Avatar billede leif Seniormester
17. april 2005 - 19:40 #28
Sorry, min fejl, du fik en ikke færdig !

Den er uploadet igen !
Avatar billede barklund Nybegynder
17. april 2005 - 20:26 #29
Du bruger da stadig ikke $row['total'] til noget som helst?
Avatar billede leif Seniormester
17. april 2005 - 20:47 #30
Men den sender mailsne som den skal og med korrekte info, det eneste er $total1 som der ikke er med Tallene efter ,
Avatar billede leif Seniormester
17. april 2005 - 20:52 #31
Hvis jeg ændrede $total1 += $total; til $total1 += $row['total']; så gjorde den som den skulle !

Det var bare underligt fordi i mailen ville den godt skrive ,75 med kun $total !
Avatar billede barklund Nybegynder
17. april 2005 - 20:55 #32
Hm, så det virke korrekt nu?
Avatar billede leif Seniormester
17. april 2005 - 20:55 #33
Ja !
Avatar billede barklund Nybegynder
17. april 2005 - 21:00 #34
Jamen så er alle jo glade :)
Avatar billede leif Seniormester
17. april 2005 - 21:03 #35
Håber jeg da vi alle er ! Jeg er i hvert til fald !
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