Avatar billede themanronnie Nybegynder
15. februar 2010 - 10:06 Der er 11 kommentarer og
1 løsning

Simplificering af mange while løkker??(php + mysql kald)

Hej Eksperter

Jeg er i gang med at lave en side der udskriver en status for hver post i en database ifølge nogle kriterier der er sat.

Da jeg er ret ny i php(og desuden mysql) vil jeg lige høre om der findes en nemmere måde at køre de mange kald, for jeg syntes måden jeg har sat det op på er pænt uhensigtsmæssig :-)

jeg har en tabel for et år der ser således ud:


kunde_id | jan  | feb  | mar    | apr | ....
kunde1  |betalt|betalt|ej betalt|ej betalt|.....
kunde2  |ej betalt|betalt|betalt|ej betalt|....
...
...

måden jeg gør det på er at definere et sql kald for hver måned
f.eks. $queryjan= mysql_query("SELECT * FROM Poster WHERE maaned='Januar' AND aarstal='". $_SESSION['aarstal'] ."'AND land='". $_SESSION['land'] ."' ORDER BY kunde_id")or die(mysql_error());

og bruger denne i en while løkke:

if(!isset($queryjan))
{
    print"<h2>". $_SESSION['aarstal'] . "</h2>";
    print"<h2>Ingen rækker...</h2>";
    print "</tr> </table>";
}
else
{
    print"<h2>". $_SESSION['aarstal'] . "</h2>";
    while($row = mysql_fetch_array($queryjan))
        {
       
            print "<td>". $row['kunde_id']."</td>";
            print "<td>". $row['betalt']."</td>";

       
        }


her opstår så 2 problemer, det ene er at jeg skal lave uhensigtsmæssigt mange sqlkald(virker det som om), og desuden kan jeg ikke greje hvordan jeg skal få udskrevet en oversigt over hele året i tabellen, hvor det fungerer...


håber det giver mening, og at der i øvrigt er en der kan hjælpe!
Avatar billede majbom Novice
15. februar 2010 - 10:20 #1
du kan fjerne "where maaned='januar'" og på den måde hente for hele året i et kald. hvis du så sorterer på måned kan du nemt skrive en liste ud over alle måneder...
Avatar billede themanronnie Nybegynder
15. februar 2010 - 10:47 #2
det var en ide, men hvordan sorterer jeg så på måned? det er jo som sådan bare en streng(eg. januar, februar)
Avatar billede majbom Novice
15. februar 2010 - 11:49 #3
aah ja, det havde jeg ikke tænkt på...

hmm, den skal jeg lige tænke lidt over :)
Avatar billede themanronnie Nybegynder
15. februar 2010 - 12:19 #4
jeg har ændret måneden til et tal (jan=1, feb=2) således at man kan sortere efter maaned som et tal...
Men mit problem er stadigt at jeg ikke kan få udskrevet data til:

virksomhed|jan´|feb|mar|apr...
virk1    |betalt|betalt|ej betalt|betalt
virk2    |betalt|ej betalt|betalt|betalt
virk3    ...............................
virk4    ...............................
Avatar billede majbom Novice
15. februar 2010 - 12:27 #5
du har felterne jan, feb, mar osv i samme tabel som kunde_id? og i måned-felterne står der betalt eller ej betalt?
Avatar billede themanronnie Nybegynder
15. februar 2010 - 12:31 #6
i min tabel er der kunde_id, aarstal, maaned, betalt,

så posteringerne kommer til at være
1, 2010, 2, 0

2 for februar og 0 for ej betalt.

er det det du mener :-)?
Avatar billede themanronnie Nybegynder
15. februar 2010 - 12:43 #7
Kan være det her hjælper lidt :-) overblik over hvordan tabelstrukturen er (via phpmyadmin), og et billede af hvordan tabellen skal se ud med data.
http://img237.imageshack.us/img237/1783/tabelstruktur.png
Avatar billede skelboe Nybegynder
17. februar 2010 - 08:53 #8
Er ikke sikker på jeg helt har forstået hvad du forsøger, men er det sådan noget her

// hent alle kunder

$customers = "Dit kald til at henter kunder ud med"
while( $customer = mysql_fetch_assoc($customers) ) {
    // kør igennem månederne
    for($i = 1; $i <= 12; $i++) {
        $query = "SELECT * FROM tbl WHERE maaned = $i AND aarstal = " . $_SESSION['year'] . " AND betalt = 1";
       
        if ($query) { echo 'betalt'; } else { echo 'ikke betalt'; }
    }
}

Bemærk at koden hverken er optimeret eller gennemtestet.
Avatar billede majbom Novice
04. november 2010 - 13:18 #9
lukketid?
Avatar billede themanronnie Nybegynder
04. november 2010 - 15:41 #10
Åh denne post er vist gået i glemmebogen, jeg mangler et svar så jeg kan komme af med mine pts :)
Avatar billede majbom Novice
04. november 2010 - 16:31 #11
fik du nogle brugbar svar? tror ikke jeg kom med noget der løste det?
Avatar billede themanronnie Nybegynder
28. januar 2012 - 16:17 #12
uddatteret, lukker
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