Janus Høi <newsgroup@hjerteknuser.dk> writes:
> Dette er et rigtig dumt spørgsmål, som jeg helt har stirret nmig blind
> på.
>
> Meget forenklet, kan jeg fortælle, at jeg har nogle input i en
> database.
> Nogle har samme reference-id og skal derfor have samme løbenummer.
> (Det er til en gantt-graf, og løbenummeret har noget at gøre med
> positioneringen i grafen. Det skal derfor begynde med "0" og
> efterfølges af fortløbende numre, for ikke at blive underligt at se
> på.)
>
> Se eventuelt en gantt-graf her:
>
http://www.aditus.nu/jpgraph/features_gallery.php#GanttPlots
>
> Som det kører nu, trækker jeg godt nok det hele ud, men selvom om
> opslagene i databasen har samme reference, giver den et nyt løbenummer
> til hver entry.
>
> Database-tabellen "ferieplan" kan eksempelvis indeholde:
>
> | person_id | ferie_start | ferie_slut |
> | 3 | 15-06-2009 | 27-06-2009 |
> | 9 | 10-07-2009 | 24-07-2009 |
> | 10 | 01-07-2009 | 08-07-2009 |
> | 3 | 12-09-2009 | 26-09-2009 |
>
>
> Som man kan se, har person nummer 3 tankt sig at afholde to
> ferieperioder.
>
> Nedenstående eksempel er nok lidt svært at gennemskue, når det er
> trukket ud af sin helhed, men jeg har forsøgt at simplificere det, så
> det er mere overskueligt.
>
>
> -- Eksempel--
> $position=0; // Løbenummeret begynder med 0 (det er første plads i
> grafen)
> $query ="SELECT person_id, ferie_start, ferie_slut FROM ferieplan
> ORDER BY person_id";
> $sql = mysql_query($query);
> while ($raekker = mysql_fetch_array($sql))
> {
> extract($raekker);
>
> // Det er her man indsætter positionen i grafen ("$position")
> $activity[$person_id] = new GanttBar ($position,$person_id,
> $ferie_start, $ferie_slut);
>
> // Og så laver jeg den velkendte tilføjelse, så næste udtræk får
> næste linie
> $position++;
> }
>
> -- Eksempel slut--
>
> Ovenstående virker, men desværre får person nummer 3 jo så tildelt to
> positioner. Der skulle de to database-output gerne have haftn samme
> positionsnummer.
>
> Håber I kan følge mig.
>
> Jeg tænker, at løsningen må være noget i retning af at lave en if-
> sætning der omkranser
>
> $position++;
>
> med betydningen "Hvis næste person_id er anderledes end denne, så skal
> der lægges en enkelt til '$position', ellers skal den bare køre løkken
> igennem med samme værdi i '$position'.. "
>
> Men hvordan gør man dét?
> Og er det overhovedet det der skal gøres?
Du bliver nødt til at 'huske' hvilken person_id du sidst havde fat i. F.eks :
if ($prev_person_id != $person_id) {
$position++;
$prev_person_id = $person_id;
}
Du skal så huske at initialisere $prev_person_id til noget som
$person_id aldrig kan blive, f.eks -1.
Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>