f00b Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 Jeg har et php -script som genererer et PDF dokument vha. PDFLib. Koden jeg quoter i denne tråden skal i utgangspunktet generere et PDF som inneholder noen angitte kolonner fra en tabell, og sortere dette etter avdelingsnummer. // Denne koden velger neste avdeling etter id "1"$result = mysql_query("SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker WHERE id > 1 ORDER BY avdeling ASC LIMIT 1"); // Denne skriver data fra definerte kolonner i valgt avdeling while($row = mysql_fetch_array( $result )) { pdf_show_xy($pdf, $row['avdeling'], 70, 720); pdf_show_xy($pdf, $row['navn'], 99, 720); pdf_show_xy($pdf, $row['adresse'], 235, 720); pdf_show_xy($pdf, $row['postnummer'], 375, 720); pdf_show_xy($pdf, $row['poststed'], 405, 720); pdf_show_xy($pdf, $row['tlf'], 475, 720); } //----------------------------------------------------------------------------- // Denne koden velger neste avdeling etter id "2" $result = mysql_query("SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker WHERE id > 2 ORDER BY avdeling ASC LIMIT 1"); // Denne skriver data fra definerte kolonner i valgt avdeling while($row = mysql_fetch_array( $result )) { pdf_show_xy($pdf, $row['avdeling'], 70, 705); pdf_show_xy($pdf, $row['butikknavn'], 99, 705); pdf_show_xy($pdf, $row['adresse'], 235, 705); pdf_show_xy($pdf, $row['postnummer'], 375, 705); pdf_show_xy($pdf, $row['poststed'], 405, 705); pdf_show_xy($pdf, $row['tlf_butikk'], 475, 705); } Det som er problemet her, er at denne søker etter neste ID, og dersom jeg f.eks. oppretter og sletter en post, så vil det være en ID som ikke inneholder data. Så la oss si at vi tar avdeling 1-5 som eksempel, hvor avdeling 1 har ID1, avd 2 har ID2, avd 3 har ID4, avd 4 har ID5. Dersom jeg da bruker koden ovenfor, så vil den printe avdeling 3 to ganger, fordi den neste ID'en etter 2 er avdeling 3, og den neste etter ID 3 er også avdeling 3. Skjønner dere problemet? Dersom det er "hull" i IDene så vil det ødelegge slik at noen avdelinger vil bli printet flere ganger. Jeg tenkte på å bruke "WHERE avdeling > 2 ORDER BY avdeling ASC LIMIT 1");", men da vil jeg få det samme problemet dersom det det ikke er noen avdelinger mellom 3 og 5 f.eks. Noen som har noen tips til hvordan dette kan løses? Lenke til kommentar
blackbrrd Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 Hvorfor henter du ikke bare infoen om alle avdelingene i samme select? SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker WHERE id > 1 ORDER BY avdeling ASC Lenke til kommentar
f00b Skrevet 25. juli 2008 Forfatter Del Skrevet 25. juli 2008 Hvorfor henter du ikke bare infoen om alle avdelingene i samme select? SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker WHERE id > 1 ORDER BY avdeling ASC Fordi jeg manuelt er nødt til å sette posisjonen til hver kolonne ettersom dette skal generes som pdf. Eksempel: pdf_show_xy($pdf, $row['poststed'] = Generer teksten fra en rad i kolonnen poststed. , 405, 720); = Setter posisjonen til teksten. Lenke til kommentar
blackbrrd Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) 405 og 720 er x og y posisjoner? Du jo bare øke y, dvs 720 med 15 på starten av hver "loop" i while-en. y = 705; while($row = mysql_fetch_array( $result )) { y = y + 705; pdf_show_xy($pdf, $row['avdeling'], 70, y); Dette hører strengt tatt hjemme i php-forumet. Problemet ditt er nok mer PHP enn SQL... Endret 25. juli 2008 av blackbrrd Lenke til kommentar
f00b Skrevet 26. juli 2008 Forfatter Del Skrevet 26. juli 2008 (endret) Takk for svar, det stemmer at x og y er posisjoner ja. Når jeg bruker: SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker WHERE id > 1 ORDER BY avdeling ASC Så printer den alle avdelingene, som jo er riktig. Jeg forstår hva du mener med å bruke en loop som automatisk plasserer hver linje - men jeg får en feil når jeg bruker denne koden: y = 705; while($row = mysql_fetch_array( $result )) { y = y + 15; pdf_show_xy($pdf, $row['avdeling'], 70, y); Parse error: syntax error, unexpected '=' in C:\Wamp\www\database\oversikt.php on line 124 Det er mulig at denne burde vært under PHP, men jeg trodde det var SQL kommandoen som måtte endres for å få dette til å fungere - derfor postet jeg den her. Endret 26. juli 2008 av f00b Lenke til kommentar
Manfred Skrevet 26. juli 2008 Del Skrevet 26. juli 2008 Hva med å skrive $y i stedet for y? Dette har ikke noe med databaser å gjøre, det er php-kunnskapene dette går på... Lenke til kommentar
blackbrrd Skrevet 26. juli 2008 Del Skrevet 26. juli 2008 Be en moderator flytte tråden til php forumet hvis du ikke finner ut av php-kodingen som mangler. Glemte en ting: SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker ORDER BY avdeling ASC Ta bort > 1 greia, ellers hopper du over første avdeling... Lenke til kommentar
f00b Skrevet 27. juli 2008 Forfatter Del Skrevet 27. juli 2008 Har bedt moderator om å flytte tråden over til PHP nå // Henter info fra database $result = mysql_query("SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker ORDER BY avdeling ASC"); // Definerer Y posisjon til tekst $y = 735; // Printer tekst fra $result - Første post pdf_setfont($pdf, $font2, 8); while ($row = mysql_fetch_array($result )) { pdf_show_xy($pdf, $row['avdeling'], 70, 735); pdf_show_xy($pdf, $row['navn'], 99, 735); pdf_show_xy($pdf, $row['adresse'], 235, 735); pdf_show_xy($pdf, $row['postnummer'], 375, 735); pdf_show_xy($pdf, $row['poststed'], 405, 735); pdf_show_xy($pdf, $row['tlf'], 475, 735); } // Printer tekst fra $result - Andre post while ($row = mysql_fetch_array($result )) { pdf_show_xy($pdf, $row['avdeling'], 70, $y - 15); pdf_show_xy($pdf, $row['navn'], 99, $y - 15); pdf_show_xy($pdf, $row['adresse'], 235, $y - 15); pdf_show_xy($pdf, $row['postnummer'], 375, $y - 15); pdf_show_xy($pdf, $row['poststed'], 405, $y - 15); pdf_show_xy($pdf, $row['tlf'], 475, $y - 15); } Problemet her er at alt (all teksten i alle avdelinger) samles på èn linje, altså linjen med posisjon 735. Jeg er på en eller annen måte nødt til å få definert i while loopen at den skal søke etter neste avdeling som inneholder data, få så å gå videre tror jeg? Lenke til kommentar
b-real Skrevet 27. juli 2008 Del Skrevet 27. juli 2008 Flyttes til PHP-delen av forumet etter ønske Lenke til kommentar
Harald B Skrevet 27. juli 2008 Del Skrevet 27. juli 2008 Prøv dette: // Henter info fra database $result = mysql_query("SELECT avdeling, navn, adresse, postnummer, poststed, tlf FROM butikker ORDER BY avdeling ASC"); // Definerer Y posisjon til tekst $y = 735; // Printer tekst fra $result - Første post pdf_setfont($pdf, $font2, 8); while ($row = mysql_fetch_array($result )) { pdf_show_xy($pdf, $row['avdeling'], 70, $y); pdf_show_xy($pdf, $row['navn'], 99, $y); pdf_show_xy($pdf, $row['adresse'], 235, $y); pdf_show_xy($pdf, $row['postnummer'], 375, $y); pdf_show_xy($pdf, $row['poststed'], 405, $y); pdf_show_xy($pdf, $row['tlf'], 475, $y); $y -= 15; } Lenke til kommentar
f00b Skrevet 28. juli 2008 Forfatter Del Skrevet 28. juli 2008 Tusen hjertelig takk! Dette fungerte! Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå