Sec_NB Skrevet 20. november 2009 Del Skrevet 20. november 2009 (endret) Heisann, Holder på med et administrasjonssystem for utleie, og henter frem x antall tabeller fra en database: <?php while($row = mysql_fetch_array($sql)) { ?> <tr> <td><?php echo "$row[modell]"; ?></td> <td><?php echo "$row[SB_nummer]"; ?></td> <td><?php echo "$row[lokasjon]"; ?></td> <td><center><input name="post_SB" type="checkbox" id="post_SB" value="<?php echo "$row[SB_nummer], "; ?>" /></center></td> </tr> <?php } ?> Som du kanskje ser, skal det være mulig å krysse av for hver rad som blir hentet ut. Jeg skal bruke radene videre, og sette dem inn i databasen i en ny tabell. Problemet er at alt listes nedover med samme navn på input-en, noe som gjør det vanskelig når du kommer til neste steg. Hvordan kan jeg evt. sette alle som er "huket" av til å bli i én variabel, separert med komma-tegn? Nå når det postes så overskrider den siste linjen i tabellen hele variabelen, slik det kun blir en "post_SB" variabel som blir satt.. [explode problemet er løst, derfor er det fjernet fra innlegget] Håper det er tilstrekkelig informasjon til at noen kan hjelpe - har det litt travelt da timen og uken snart er over :-) Takker for svar og hjelp! - Joachim. Endret 20. november 2009 av Sec_NB Lenke til kommentar
Jonas Skrevet 20. november 2009 Del Skrevet 20. november 2009 Navngi checkboxene post_SB[] og kjør en var_dump på $_POST, så tipper jeg du finner ut av det. Lenke til kommentar
Sec_NB Skrevet 20. november 2009 Forfatter Del Skrevet 20. november 2009 Navngi checkboxene post_SB[] og kjør en var_dump på $_POST, så tipper jeg du finner ut av det. Blir det slik som dette da: <td><center><input name="post_SB[]" type="checkbox" id="post_SB" value="<?php echo "$row[SB_nummer], "; ?>" /> Og når den henter ut så blir vel det $post_SB = $_POST['post_SB[]']; $var = var_dump($post_SB); ? Har aldri brukt var_dump før ser du.. Lenke til kommentar
Jonas Skrevet 21. november 2009 Del Skrevet 21. november 2009 Meh, ikke akkurat. Tenker jeg bare viser, jeg. Følgende vil gi deg en kommaseparert liste. <td><center><input name="post_SB[]" type="checkbox" id="post_SB" value="<?php echo "$row[SB_nummer], "; ?>" /> $list = implode ( ',', $_POST['post_SB'] ); Lenke til kommentar
Sec_NB Skrevet 22. november 2009 Forfatter Del Skrevet 22. november 2009 Meh, ikke akkurat. Tenker jeg bare viser, jeg. Følgende vil gi deg en kommaseparert liste. <td><center><input name="post_SB[]" type="checkbox" id="post_SB" value="<?php echo "$row[SB_nummer], "; ?>" /> $list = implode ( ',', $_POST['post_SB'] ); Ja, det er jeg klar over.. Var omvendt jeg tenkte da Det er snakk om 17 rader som listes opp, og om du da f.eks. krysser av 15 av sjekk-boksene, så skal de bli listet opp - og da bruker jeg etterpå explode for å dele opp listen, slik jeg kan bruke ID-en til hver av radene som er krysset av videre i en ny SQL spørring. Derfor lurer jeg på hvordan jeg kan få listet opp alle variablene etter explode, uten å måtte skrive $variabel[0] $variabel[1] etc... Lenke til kommentar
Jonas Skrevet 22. november 2009 Del Skrevet 22. november 2009 Hva er det omvendte av en kommaseparert liste da? Navngi checkboxene post_SB[] og skriv var_dump ( $_POST ), så kanskje du finner ut av det selv. Lenke til kommentar
Sec_NB Skrevet 22. november 2009 Forfatter Del Skrevet 22. november 2009 Hva er det omvendte av en kommaseparert liste da? Navngi checkboxene post_SB[] og skriv var_dump ( $_POST ), så kanskje du finner ut av det selv. Hei igjen, Begynner og komme inn på noe nå! Nå krysset jeg av to av sjekkboksene og får opp: array(2) { [0]=> string(9) "SBR_001, " [1]=> string(9) "SBR_002, " } SBR_001 og SBR_002 vil jeg gjerne ha i to forskjellige variabler - med samme navn! Da disse skal gjennom følgende spørring: $sql_sett_inn = mysql_query("INSERT INTO SB_arr_leie (modell, sb_nummer, fra_dato, til_dato, utleid_av, bestilling_avhentet, bestilling_levert, merknadder, annet, behandlings_id) VALUES ($modell, $sjekk_database, $fra_dato, $til_dato, $navn, 0, 0, 0, 0, $behandlings_id)"); HVOR $sjekk_database er navnet på variabelen der "ID-en" skal ligge.... Noe forslag? Lenke til kommentar
Jonas Skrevet 22. november 2009 Del Skrevet 22. november 2009 No suchs thing as variabler med samme navn. Ved å navngi form-elementer med identiske navn, etterfulgt av brackets, så mottar du et array og det er det nærmeste du kommer. Dersom du vil gjøre noe med hver verdi, så er det enkelt å iterere over det. foreach ( $_POST['post_SB'] as $sjekk_database ) mysql_query("INSERT INTO SB_arr_leie (modell, sb_nummer, fra_dato, til_dato, utleid_av, bestilling_avhentet, bestilling_levert, merknadder, annet, behandlings_id) VALUES ($modell, $sjekk_database, $fra_dato, $til_dato, $navn, 0, 0, 0, 0, $behandlings_id)") ; Lenke til kommentar
Sec_NB Skrevet 22. november 2009 Forfatter Del Skrevet 22. november 2009 Hmm.. Tror det blir lettere om jeg limer inn hele koden her: <?php require_once('../config.php'); if(isset($_POST['leietaker'])){ $behandlings_id = rand(1089,50000); $_SESSION['behandlings_id'] = $behandlings_id; $post_SB = var_dump($_POST['post_SB']); $sjekk_database = explode(", ", $post_SB); $sql_sett_inn = mysql_query("INSERT INTO SB_arr_leie (modell, sb_nummer, fra_dato, til_dato, utleid_av, bestilling_avhentet, bestilling_levert, merknadder, annet, behandlings_id) VALUES ($modell, $sjekk_database, $fra_dato, $til_dato, $navn, 0, 0, 0, 0, $behandlings_id)"); $_SESSION['utleide_radioer'] .= $sjekk_database; $utleide_radioer = $_SESSION['utleide_radioer']; echo "Utleide radioer: $utleide_radioer - Behandlings ID = $behandlings_id"; } $sql_1 = mysql_query("SELECT * FROM SB_arr_radioer WHERE modell = 'GP388'"); while($row_2 = mysql_fetch_array($sql_1)) { //starter row_2 $sb_nr_sjekk = $row_2['SB_nummer']; $sql_sjekk_opptatt = mysql_query("SELECT * FROM SB_arr_leie WHERE sb_nummer LIKE '%$sb_nr_sjekk%'"); while($row_dato_sjekk = mysql_fetch_array($sql_sjekk_opptatt)) { //starter row_dato_sjekk $dato_sess = '20091120'; $dato_sess_til = '20091122'; if($dato_sess <= $row_dato_sjekk['fra_dato'] || $dato_sess_til >= $row_dato_sjekk['til_dato']){ //starter dato_sjekk $ikke_sb = "0"; }else{ $ikke_sb = $row_dato_sjekk['sb_nummer']; $_SESSION['ikke_sb_sess'] .= $row_dato_sjekk['sb_nummer']; } //lukker dato_sjekk $sql = mysql_query("SELECT * FROM SB_arr_radioer WHERE modell = 'GP388' ORDER BY SB_nummer LIMIT 3"); } //lukker row_dato_sjekk } //lukker row_2 $ant = mysql_num_rows($sql); ?> <br /> <p class="sitat">Forslag til radioer som skal leies ut - <?php echo "$ant"; ?> radioer er satt opp<br /><?php echo "Fra $dato til $til_dato"; ?></p> <br /> <form method="post"> <table width="348" border="1" align="center"> <tr> <td width="66">Modell</td> <td width="102">SBR_nummer</td> <td width="91">Lokasjon</td> <td width="149">Leies ut?</td> </tr> <?php while($row = mysql_fetch_array($sql)) { ?> <tr> <td><?php echo "$row[modell]"; ?></td> <td><?php echo "$row[SB_nummer]"; ?></td> <td><?php echo "$row[lokasjon]"; ?></td> <td><center><input name="post_SB[]" type="checkbox" id="post_SB" value="<?php echo "$row[SB_nummer], "; ?>" /></center></td> </tr> <?php } ?> <tr> <td><input type="submit" name="avbryt" id="avbryt" value="Avbryt" class="button" /></td> <td> </td> <td align="right"><input type="submit" name="tilbake_steg3" id="tilbake_steg3" value="Forrige" class="button" /></td> <td><input type="submit" name="leietaker" id="leietaker" value="Neste" class="button" /></td> </tr> </table> </form> Det er det jeg begynte med fra scratch.. Vil som sagt at post_SB (som da blir flere rader fra databasen) skal bli satt inn i SQL tabellen, også satt i en session... Det skal da bli satt inn som én rad pr. sjekkboks som er krysset av. Hehe, håper du kan hjelpe 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å