26. april 2004 - 22:14
Der er
24 kommentarer og 1 løsning
Dynamisk variabel navn?
Hej hej, Jeg har et script der ser således ud: <? $DBhost = "DBhost"; $DBuser = "DBuser"; $DBpass = "DBpass"; $DBName = "DBName"; $table = "testtable"; mysql_connect($DBhost,$DBuser,$DBpass) or die("Unable to connect to database"); @mysql_select_db($DBName) or die("Unable to select database $DBName"); $sqlquery = "UPDATE $table SET felt1=felt1+1 WHERE id = 1"; $results = mysql_query($sqlquery); mysql_close(); ?> Jeg kunne godt tænke mig at gøre variablen felt1 dynamisk på den måde at nummeret følger den time man er i... så hvis klokken er 15:30 skal den sige: $sqlquery = "UPDATE $table SET felt15=felt15+1 WHERE id = 1"; Kan det lade sig gøre på en snedig måde?
Annonceindlæg fra HP
26. april 2004 - 22:21
#1
$felt = 'felt' . date('G'); og så $sqlquery = "UPDATE $table SET $felt=$felt+1 WHERE id = 1";
26. april 2004 - 22:25
#2
Der var han igen :) Jeg prøver det lige...
26. april 2004 - 22:34
#3
Det virker helt perfekt!!! Men hvad hvis jeg vil hæve nummeret med een? $felt = 'felt' . date('G')+1; virker ikke :(
26. april 2004 - 22:34
#4
Og hvad står 'G' for?
26. april 2004 - 22:37
#5
G: 24-hour format of an hour without leading zeros brug H, hvis du vil have 04 istedet for 4. prøv: $felt = 'felt' . (date('G')+1);
26. april 2004 - 22:43
#7
<ole> $felt = 'felt' . (date('G')+1); /mvh </bole>
26. april 2004 - 22:44
#8
Hehe ... sorry, Dennis. Jeg så ikke din sidste linie i (26/04-2004 22:37:33) :D
26. april 2004 - 22:50
#9
:D Det virker!! Er I friske på endnu en udfordring? Det her må kunne laves 100 gange smartere med en løkke... $strokeMax=230; $biggestNumber=210; //Række 1 $query = mysql_query("SELECT * FROM $table WHERE id = 1"); $row = @mysql_fetch_array($query); $time1=$row["felt1"]; $time2=$row["felt2"]; $time3=$row["felt3"]; $time4=$row["felt4"]; $time5=$row["felt5"]; $time6=$row["felt6"]; $time7=$row["felt7"]; $time8=$row["felt8"]; $time9=$row["felt9"]; $time10=$row["felt10"]; $time11=$row["felt11"]; $time12=$row["felt12"]; $time13=$row["felt13"]; $time14=$row["felt14"]; $time15=$row["felt15"]; $time16=$row["felt16"]; $time17=$row["felt17"]; $time18=$row["felt18"]; $time19=$row["felt19"]; $time20=$row["felt20"]; $time21=$row["felt21"]; $time22=$row["felt22"]; $time23=$row["felt23"]; $time24=$row["felt24"]; $strokeLength1=$time1/$biggestNumber*$strokeMax; $strokeLength2=$time2/$biggestNumber*$strokeMax; $strokeLength3=$time3/$biggestNumber*$strokeMax; $strokeLength4=$time4/$biggestNumber*$strokeMax; $strokeLength5=$time5/$biggestNumber*$strokeMax; $strokeLength6=$time6/$biggestNumber*$strokeMax; $strokeLength7=$time7/$biggestNumber*$strokeMax; $strokeLength8=$time8/$biggestNumber*$strokeMax; $strokeLength9=$time9/$biggestNumber*$strokeMax; $strokeLength10=$time10/$biggestNumber*$strokeMax; $strokeLength11=$time11/$biggestNumber*$strokeMax; $strokeLength12=$time12/$biggestNumber*$strokeMax; $strokeLength13=$time13/$biggestNumber*$strokeMax; $strokeLength14=$time14/$biggestNumber*$strokeMax; $strokeLength15=$time15/$biggestNumber*$strokeMax; $strokeLength16=$time16/$biggestNumber*$strokeMax; $strokeLength17=$time17/$biggestNumber*$strokeMax; $strokeLength18=$time18/$biggestNumber*$strokeMax; $strokeLength19=$time19/$biggestNumber*$strokeMax; $strokeLength20=$time20/$biggestNumber*$strokeMax; $strokeLength21=$time21/$biggestNumber*$strokeMax; $strokeLength22=$time22/$biggestNumber*$strokeMax; $strokeLength23=$time23/$biggestNumber*$strokeMax; $strokeLength24=$time24/$biggestNumber*$strokeMax; ?>
26. april 2004 - 22:51
#10
Et eller andet med noget while måske?
26. april 2004 - 22:58
#11
for($i=1;$i<=24;$i++) { $time[$i] = $row['felt'.$i]; $strokeLength[$i] = $time[$i] / $biggestNumber*$strokeMax; } Så kan du nu bruge $time[1], $time[2] .. osv
26. april 2004 - 22:59
#12
smid evt $time = array(); $strokeLength = array(); foran for() det er lidt pænere.
26. april 2004 - 23:03
#13
Prøver lige... Jeg har også en variablen $biggestNumber=210; ... er der mulighed for at se hvilken af felt1, felt2, felt3 osv der har det største nummer og så give $biggestNumber værdien af dette felt?
26. april 2004 - 23:07
#14
$biggestNumber = 0; $biggestNumberIdx = 0; for($i=1;$i<=24;$i++) { $t = $row['felt'.$i]; // jeg er doven :) if( $t > $biggestNumber ) { $biggestNumber = $t; $biggestNumberIdx = $i; } } nu vil $biggestNumberIdx være 3, hvis det er felt3 der har det største nummer.
26. april 2004 - 23:08
#15
Øv den kommer op med en fejl... skal der ikke stå: <? $strokeMax=230; $biggestNumber=210; $query = mysql_query("SELECT * FROM $table WHERE id = 1"); $row = @mysql_fetch_array($query); for($i=1;$i<=24;$i++) { $time[$i] = $row['felt'.$i]; $strokeLength[$i] = $time[$i] / $biggestNumber*$strokeMax; } ?> ???
26. april 2004 - 23:13
#16
Jeg har vist misforstået dig. Vil du finde ud af, hvilket felt der har den højeste værdi (fx felt3) og hvilen værdi dette er? Hvis jeg forstår din kode korrekt, så bliver du nød til at lave to løkker. Een hvor du finder maxværdien og den anden hvor du beregner $strokeLength. Er det nogenlunde korrekt?
26. april 2004 - 23:19
#17
Det er præsist som det skal være... Jeg kan bare ikke hente variblen nu?!?!?!? Jeg har nu det her: <? $strokeMax=230; $biggestNumber = 0; $biggestNumberIdx = 0; $time = array(); $strokeLength = array(); for($i=1;$i<=24;$i++) { $t = $row['felt'.$i]; // jeg er doven :) if( $t > $biggestNumber ) { $biggestNumber = $t; $biggestNumberIdx = $i; $strokeLength[$i] = $time[$i] / $biggestNumber*$strokeMax; } } ?> og til output har jeg: <tr> <td width="90">00:00 - 00:59</td> <td width="80" align="center"><? print $time[1]?></td> <td><img src="stroke1.gif" width="<? print $strokeLength[1]?>" height="6"></td> </tr> Men den viser ikke noget
26. april 2004 - 23:26
#18
Er det her den er gal? <? print $time[1]?>
26. april 2004 - 23:29
#19
Jeg har samlet koden, og rokeret lidt om. Tilføjet lidt kommentarer. <?php $time = array(); $strokeLength = array(); $strokeMax = 230; $biggestNumber = -1; $biggestNumberIdx = 1; /*** Find biggestNumber og smid data i $time array'et ***/ for($i=1;$i<=24;$i++) { $time[$i] = $row['felt'.$i]; if( $time[$i] > $biggestNumber ) $biggestNumberIdx = $i; } $biggestNumber = $time[$biggestNumberIdx]; /*** Beregn $strokeLenght[...] ***/ for($i=1;$i<=24;$i++) $strokeLength[$i] = $time[$i] / $biggestNumber*$strokeMax; /*** Output ***/ .. ?>
26. april 2004 - 23:30
#20
hovsa, brug denne. <?php $time = array(); $strokeLength = array(); $strokeMax = 230; $biggestNumber = -1; $biggestNumberIdx = 1; /*** Find biggestNumber og smid data i $time array'et ***/ for($i=1;$i<=24;$i++) { $time[$i] = $row['felt'.$i]; if( $time[$i] > $biggestNumber ) { $biggestNumberIdx = $i; $biggestNumber = $time[$i]; } } /*** Beregn $strokeLenght[...] ***/ for($i=1;$i<=24;$i++) $strokeLength[$i] = $time[$i] / $biggestNumber*$strokeMax; /*** Output ***/ .. ?>
26. april 2004 - 23:33
#21
Skal det her ikke ind et eller andet sted? $query = mysql_query("SELECT * FROM $table WHERE id = 1"); $row = @mysql_fetch_array($query);
26. april 2004 - 23:37
#22
Jo, bare det er før "/*** Find biggestNumber o"-kommentaren, så burde det virke.
26. april 2004 - 23:38
#23
Det skulle det og nu virker det :D !!!!!!!!!
26. april 2004 - 23:38
#24
Jeg takker gang 1000 og kan du ikke lige lave et svar
26. april 2004 - 23:43
#25
Joda :-)
Computerworld tilbyder specialiserede kurser i database-management