11. september 2002 - 13:37
Der er
18 kommentarer og 1 løsning
variabel af variabel
Jeg har et script, hvor jeg lister arrangementer op via en MySql_db. Ud for hvert arrangement sætter jeg en checkbox, som jo skal have forskellige navne, derfor sættes variablen $i fortløbende for hver checkbox. Nu vil jeg jo BAGEFTER gerne kunne se HVILKE checkboxe der har været valgt, så jeg kan putte resultatet tilbage i en ny db. HVORDAN !!! Mit script ser indtil videre således ud (barberet lidt ned): <? if($send){ // HVORDAN "LISTER" JEG DE CHECKBOXE OP JEG HAR VALGT HER !!! Har prøvet noget med: echo $$i; og andre underlige ting, men kan ikke få skidtet til at virke } else { $db = mysql_connect("xxx", "xxx", "xxx"); mysql_select_db("xxx", $db); echo "<center><FORM METHOD=\"POST\" ACTION=\"min_fil.php\">"; $i = 1; echo "<TABLE BORDER=\"1\">"; $result = mysql_query("SELECT * FROM arrangementer order by 'dato' "); while($arrangement = mysql_fetch_array($result)) { $tid = time(); if ($tid-(60*60*14) < $arrangement[dato]){ $ugedag = date("D j. M",$arrangement[dato]); print "<TR><TD>".$ugedag; print " kl. "; print date("H.i",$arrangement[dato]); print "<BR><i><b>".$arrangement[type]."</b></i><br>"; print "$arrangement[tekst]"; print "</TD><TD><INPUT TYPE=\"CHECKBOX\" NAME=\"$i\" VALUE=\"".$arrangement[id]."\">"; $i = $i + 1; print "</TD></TR>"; }} mysql_close; ?> <TR><TD> <INPUT TYPE="HIDDEN" NAME="send" VALUE="send"> <INPUT TYPE="SUBMIT" VALUE="Tilmeld"> <input type="RESET" Value="Ryd indtastning"></TD><TD></TD></TR> </TABLE></center> <? } ?>
Annonceindlæg fra Sabio
11. september 2002 - 13:41
#1
Hvis du gav dem samme navn, ville du kunne få lagt de valgte ned i en array på følgende måde: <INPUT TYPE=\"CHECKBOX\" NAME=\"arrangement[]\" VALUE=\"".$arrangement[id]."\">"; Så vil php opfatte arrangement som en array, og ikke som en variablen. Array'en arrangement indeholder så id'erne på de valgte arrangementer.
11. september 2002 - 13:47
#2
Lyder spændende. Hvis jeg nu gør som du siger, hvad skal jeg så skrive her, hvis jeg til at starte på bare ønsker et echo af de valgte checkboxe: if($send){ echo "denne er valgt"; }
11. september 2002 - 13:50
#3
Da de valgte checkbokse ligger i en array. Kan du udskrive dem med if ($send) { print_r $arrangement; }
11. september 2002 - 13:58
#4
Holder ikke helt. Hvis jeg skriver som du foreslår får jeg: Parse error: parse error in /hotel/sthens/WWW/php/min_fil.php on line 44 når jeg har uploadet. Hvis jeg kun skriver print $arrangement; får jeg et output der siger: Array
11. september 2002 - 14:09
#5
Det burde nu virke. Prøv dette if ($send) { print_r ($arrangement); }
11. september 2002 - 14:10
#6
Har du det liggende online? Hvis ja, så smid lige en link så kigger jeg på det.
11. september 2002 - 14:22
#7
Nu får jeg ikke fejl, når jeg loader siden, men et lidt pudsigt output efter at have valgt noget.
Kan vi mon få et "pænere" output, hvor der bare står de valgte checkboxe.
http://www.sthens.dk/php/mailservice_tilmeld.php
11. september 2002 - 14:24
#8
Eller skal det se sådan ud ?? Hvis det skal - hvordan bruger jeg det så videre ??? Jeg skylle jo gerne have smidt ned i en db hvilke checkboxe der er valgt
11. september 2002 - 14:28
#9
skylle == skulle
11. september 2002 - 14:29
#10
Du skal nok få flere points, hvis du er ved at føle dig "snydt"
11. september 2002 - 14:47
#11
Du kan prøve dette: <?php $arr_count = count($arrangementer); sort($arrangementer,SORT_NUMERIC); $print .= "<b>Følgende arrangementer er valgt:</b><br />"; for ($i=0; $i < $arr_count; $i++) { if ($i+1 != $arr_count) { $print .= $arrangementer[$i] . ", "; } else { $print .= $arrangementer[$i]; } } echo $print; ?> De udskriver array'en på følgende måde, og sorterer indholdet i array'en: <b>Følgende arrangementer er valgt:</b> 1, 2, 13, 17, 19, 20
11. september 2002 - 14:53
#12
Warning: Wrong datatype in sort() call in /hotel/sthens/WWW/php/mailservice_tilmeld.php on line 45 Følgende arrangementer er valgt:
11. september 2002 - 15:15
#13
Men jeg føler også, at vi er ved at komme ud på et vildspor. Det jeg gerne vil have er noget i denne stil: mysql_query("Insert into arrangementer (nummer) values ('$arrangement')") || die(mysql_error());
11. september 2002 - 15:18
#14
Den skal vist se sådan ud: <?php $arr_count = count($arrangement); sort($arrangement,SORT_NUMERIC); $print .= "<b>Følgende arrangementer er valgt:</b><br />"; for ($i=0; $i < $arr_count; $i++) { if ($i+1 != $arr_count) { $print .= $arrangement[$i] . ", "; } else { $print .= $arrangement[$i]; } } echo $print; ?> Hvorfor vil du indsætte det i databasen?
11. september 2002 - 15:33
#15
Så virker det vist. Hvorfor ned i databasen ?? Fordi jeg skal køre et cronjob, for at kunne sende en mail til brugerne ca. én uge før de(t) valgte arrangement(er). Bare som en service. Så hvis du kan fortælle mig hvordan min INSERT skal se ud, så er du en helt, og får 30 points ekstra. Det er selvfølgelig bare et forløbigt script, da jeg mangler navn og mailadresse på brugeren, men det er jo slavearbejde.
11. september 2002 - 15:37
#16
INSERTEN må ikke være kommasepereret, da jeg skal bruge et felt pr arrangement pr bruger, for at kunne slette de afviklede arrangementer
11. september 2002 - 15:38
#17
Skal der oprettes en post i databasen for hvert valgt arrangement? Eller skal alle id'erne ligges i samme felt?
11. september 2002 - 15:41
#18
Ok. Så er du nød til at loope igennem array'en. Jeg har her sat sql-sætningen ind i samme array, som udskriver de valgte arrangementer: <?php $arr_count = count($arrangement); sort($arrangement,SORT_NUMERIC); $print .= "<b>Følgende arrangementer er valgt:</b><br />"; for ($i=0; $i < $arr_count; $i++) { if ($i+1 != $arr_count) { $print .= $arrangement[$i] . ", "; } else { $print .= $arrangement[$i]; } mysql_query("Insert into arrangementer (nummer) values (" . $arrangement[$i] . ")") or die(mysql_error()); } echo $print; ?> Og hvis du ikke ønsker det, kan du bruge: $arr_count = count($arrangement); for ($i=0; $i < $arr_count; $i++) { mysql_query("Insert into arrangementer (nummer) values (" . $arrangement[$i] . ")") or die(mysql_error()); }
11. september 2002 - 15:56
#19
Du er en HELT. Tak for din ihærdighed - det lykkedes. Du har f.... fortjent dine points. Jeg er ikke så sej til detder array-fis, men det kommer vel med alderen.
Vi tilbyder markedets bedste kurser inden for webudvikling