18. juni 2006 - 13:17
Der er
18 kommentarer og 1 løsning
Gemme/læse indhold fra select box
Hejsa, hvordan kan man gemme indhold fra en select box i en mysql database? Det jeg gerne vil have er, at man markere nogle felter i en select, og de markerede felter bliver så gemt i mysql databasen. F.eks.: <select size="6 name="genre" style="font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;" multiple> <option value="rock" >Rock</option> <option value="pop" >Pop</option> <option value="dancetrance" >Dance & Trance</option> <option value="housedownbeat" >House & Downbeat</option> <option value="elektronisk" >Elektronisk</option> <option value="hiphop" >Hip Hop</option> <option value="rbsoul" >R&B & Soul</option> <option value="metal" >Metal</option> <option value="blues" >Blues</option> <option value="jazz" >Jazz</option> <option value="verdensmusik" >Verdensmusik</option> <option value="komedie" >Komedie</option> <option value="country" >Country</option> <option value="folkemusik" >Folkemusik</option> <option value="klassisk" >Klassisk</option> </select></td><br> Så hvis man har markeret Klassisk, Dance + Trance og Metal, så går den ind i mysql databasen, og skriver det her til en tabel: klassisk;dancetrance;metal Hvordan gør jeg det??? Nu kommer der nok noget der er sværere... Nu går vi så ind i databasen og ser hvikle felter man markerede, altså "klassisk;dancetrance;metal", nu skal den så markere de felter, altså Klassisk, Dance + Trance og Metal. Det var en svær en eller hvad? Mvh. Elias Sørensen
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Har lavet lidt om i din kode, så du måske selv kan se hvad der sker... <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <select size="6" name="genre[]" style="font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;" multiple> <option value="rock" >Rock</option> <option value="pop" >Pop</option> <option value="dancetrance" >Dance & Trance</option> <option value="housedownbeat" >House & Downbeat</option> <option value="elektronisk" >Elektronisk</option> <option value="hiphop" >Hip Hop</option> <option value="rbsoul" >R&B & Soul</option> <option value="metal" >Metal</option> <option value="blues" >Blues</option> <option value="jazz" >Jazz</option> <option value="verdensmusik" >Verdensmusik</option> <option value="komedie" >Komedie</option> <option value="country" >Country</option> <option value="folkemusik" >Folkemusik</option> <option value="klassisk" >Klassisk</option> </select> <input type="submit"> </form> <? print_r($_POST);?>
Det blev jeg ikke klogere af..Vil helst have den færdige kode..
Har fundet ud af det her: foreach ($_POST['genre'] as $noegle => $value) { mysql_query("INSERT INTO brugere SET genre='$value'"); Men den melder den her fejl: Warning: Invalid argument supplied for foreach() in C:\WM\www\*****\tilmeld.php on line 65
Ja, jeg ville også helst have folk lavede mine hjemmesider uden jeg skulle gøre noget. <? if (!empty($_POST)) { foreach ($_POST['genre'] as $genre) { echo $genre."<br>"; } }?>
Kan du ikke bare finde ud af hvad fejlen er i den kode jeg har?
iss $_POST['genre'] kan vel godt være tom, selvom $_POST ikke er. Nok bedre sådan her: if (count($_POST['genre']) > 0) { foreach ($_POST['genre'] as $val) { mysql_query(...); } }
hmortensen, kan den? I mit eksempel vil den så bare være en tom array, og foreach vil ikke fejle, så det er skam det eneste den er der for...
Når der bruges [] som afslutning på navnet, (genre[]), får du et array. if(isset($_POST["genre"])) { if(is_array($_POST["genre"])) { $streng = implode(",", $_POST["genre"]); echo $streng; }else{ echo"'genre' er ikke et array!"; } } Går ud fra du kun vil ha' et row opdateret/indsat i din DB ??? Derfor implode()
Helt forvirret. Kan i ikke gøre sådan at den laver den her query: mysql_query("INSERT INTO brugere SET genre='$value'"); og så udskriver den f.eks. metal;dance;hiphop ?
19. juni 2006 - 11:55
#10
Går ud fra du vel gemme mere end det du skriver her, det du skriver i databasen er jo mere eller mindre ubrugligt hvis du vil kunne gøre så det er for hver bruger, så skal du huske at gemme brugeren også, og hvis det er noget du vil kunne søge på vil du få det rimeligt svært med det, så ville det nemmeste hvis du ikke har så meget styr på det at oprette et felt for hver genere.
19. juni 2006 - 12:04
#11
Jaja..Men altså.. Jeg har en database med de her tabeller: Id, brugernavn, password, email, genre. Den skriver den i når de gemmer, erko så kommer de jo også ind i genre.
19. juni 2006 - 12:08
#12
Ja, men du siger ikke hvilken record der skal ænderes på ved at lave det du gør, du skal fortælle den hvilken record der skal ændres, ellers får du bare en ny record kun med genre uden alle de andre felter.
19. juni 2006 - 12:10
#13
Tror hellere lige at jeg må give jer hele filen: <? if($action == "" AND !$_POST[B1]){ echo " <form action=\"?side=tilmeld\" method=\"POST\"> Brugernavn: <input type=\"text\" name=\"ed_user\"><br> Kodeord: <input type=\"text\" name=\"ed_password1\"><br> Kodeord igen:<input type=\"text\" name=\"ed_password2\"><br> Email: <input type=\"text\" name=\"ed_email\"><br> Musikgenre (Hold CTRL nede for at vælge flere end en.):<br> <td width=\"33%\"> <select size=\"6\ name=\"genre\" style=\"font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;\" multiple> <option value=\"rock\" >Rock</option> <option value=\"pop\" >Pop</option> <option value=\"dancetrance\" >Dance & Trance</option> <option value=\"housedownbeat\" >House & Downbeat</option> <option value=\"elektronisk\" >Elektronisk</option> <option value=\"hiphop\" >Hip Hop</option> <option value=\"rbsoul\" >R&B & Soul</option> <option value=\"metal\" >Metal</option> <option value=\"blues\" >Blues</option> <option value=\"jazz\" >Jazz</option> <option value=\"verdensmusik\" >Verdensmusik</option> <option value=\"komedie\" >Komedie</option> <option value=\"country\" >Country</option> <option value=\"folkemusik\" >Folkemusik</option> <option value=\"klassisk\" >Klassisk</option> </select></td><br> Hvor kan i spille i danmark (Hold CTRL nede for at vælge mere end en.):<br> <td width=\"33%\"> <select size=\"16\ name=\"steder\" style=\"font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;\" multiple> <option value=\"heleland\" >Hele Landet</option> <option value=\"slf\" >Sjælland, Lolland, og Falster</option> <option value=\"storkbh\" > Storkøbenhavn</option> <option value=\"frederiksborg\" > Frederiksborg Amt</option> <option value=\"roskilde\" > Roskilde Amt</option> <option value=\"vestsjae\" > Vestsjællands Amt</option> <option value=\"storstroem\" > Storstrøms Amt</option> <option value=\"lollandfalster\" > Lolland, Falster</option> <option value=\"jylland\" >Jylland</option> <option value=\"søenderjylland\" > Sønderjyllands Amt</option> <option value=\"ribe\" > Ribe Amt</option> <option value=\"ringkoebing\" > Ringkøbing Amt</option> <option value=\"aarhus\" > Århus Amt</option> <option value=\"viborg\" > Viborg Amt</option> <option value=\"nordjylland\" > Nordjyllands Amt</option> <option value=\"fyn\" >Fyn og omliggende øer</option> </select></td><br> <input type=\"submit\" value=\"Login\" name=\"B1\"></td> </form>"; } include("mysql/mysql.php"); if($_POST[B1] AND $action == ""){ $res = mysql_query("SELECT * FROM brugere WHERE brugernavn='$_POST[ed_user]'"); $num = mysql_num_rows($res); if($_POST[ed_password1] != $_POST[ed_password2]){ echo "<a href=\"?side=tilmeld\">De to kodeord er ikke ens</a>"; }elseif(!$_POST[ed_password1] OR !$_POST[ed_password2] OR !$_POST[ed_user] OR !$_POST[ed_email]){ echo "<a href=\"?side=tilmeld\">Du mangler at udfylde et eller flere felter</a>"; }elseif($num >= 1){ echo "<a href=\"?side=tilmeld\">Brugernavnet er allerede taget.</a>"; }else{ mysql_query("INSERT INTO brugere SET email='$_POST[ed_email]', password='$_POST[ed_password1]', brugernavn='$_POST[ed_user]'"); foreach ($_POST['genre'] as $noegle => $value) { mysql_query("INSERT INTO brugere SET genre='$value'"); } echo "<center><b><a href=\"index.php\">Din profil er nu oprettet .</b><br>Tilbage</a>"; } } ?> Forstår du nu?
19. juni 2006 - 12:15
#14
Jeg kan forstå at jeg havde ret, og at du burde lære at holde PHP og HTML hver for sig. Du skal ikke lave en INSERT for hver genre, så får du det jeg skrev til dig... Lav din INSERT om til også at lave INSERT på genre (og hvis genre skal bruges til at kunne søge på senere, ville jeg anbefale at lave et felt til hver genre).
19. juni 2006 - 12:24
#15
Forstår ikke?
19. juni 2006 - 12:43
#16
<? if(empty($_POST['B1']) {?> <form action="?side=tilmeld" method="POST"> Brugernavn: <input type="text" name="ed_user"><br> Kodeord: <input type="text" name="ed_password1"><br> Kodeord igen:<input type=\"text\" name="ed_password2"><br> Email: <input type="text" name="ed_email"><br> Musikgenre (Hold CTRL nede for at vælge flere end en.):<br> <td width="33%"> <select size="6" name="genre[]" style="font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;" multiple> <option value="rock" >Rock</option> <option value="pop" >Pop</option> <option value="dancetrance" >Dance & Trance</option> <option value="housedownbeat" >House & Downbeat</option> <option value="elektronisk" >Elektronisk</option> <option value="hiphop" >Hip Hop</option> <option value="rbsoul" >R&B & Soul</option> <option value="metal" >Metal</option> <option value="blues" >Blues</option> <option value="jazz" >Jazz</option> <option value="verdensmusik" >Verdensmusik</option> <option value="komedie" >Komedie</option> <option value="country" >Country</option> <option value="folkemusik" >Folkemusik</option> <option value="klassisk" >Klassisk</option> </select></td><br> Hvor kan i spille i danmark (Hold CTRL nede for at vælge mere end en.):<br> <td width=\"33%\"> <select size="16" name="steder[]" style="font-family: Verdana; font-size: 11; width: 160; background-color:#F1F1F1;" multiple> <option value="heleland" >Hele Landet</option> <option value="slf" >Sjælland, Lolland, og Falster</option> <option value="storkbh" > Storkøbenhavn</option> <option value="frederiksborg" > Frederiksborg Amt</option> <option value="roskilde" > Roskilde Amt</option> <option value="vestsjae" > Vestsjællands Amt</option> <option value="storstroem" > Storstrøms Amt</option> <option value="lollandfalster" > Lolland, Falster</option> <option value="jylland" >Jylland</option> <option value="søenderjylland" > Sønderjyllands Amt</option> <option value="ribe" > Ribe Amt</option> <option value="ringkoebing" > Ringkøbing Amt</option> <option value="aarhus" > Århus Amt</option> <option value="viborg" > Viborg Amt</option> <option value="nordjylland" > Nordjyllands Amt</option> <option value="fyn" >Fyn og omliggende øer</option> </select></td><br> <input type="submit" value="Login" name="B1"></td> </form> <? } include("mysql/mysql.php"); if(isset($_POST['B1'])) { $res = mysql_query("SELECT * FROM brugere WHERE brugernavn='".$_POST['ed_user']."'"); $num = mysql_num_rows($res); if($_POST['ed_password1'] != $_POST['ed_password2']) {?> <a href="?side=tilmeld">De to kodeord er ikke ens</a><? } elseif(empty($_POST['ed_password1'] || empty($_POST['ed_password2']) || empty($_POST['ed_user']) || empty($_POST['ed_email'])) {?> <a href="?side=tilmeld">Du mangler at udfylde et eller flere felter</a> <? } elseif($num >= 1) {?> <a href="?side=tilmeld">Brugernavnet er allerede taget.</a> <? } else { $genre = implode(";", $_POST["genre"]); $steder = implode(";", $_POST["steder"]); mysql_query("INSERT INTO brugere SET email='".$_POST['ed_email']."', password='".$_POST['ed_password1']."', brugernavn='".$_POST['ed_user']."', genre='".$genre."', steder='".$steder."'");?> <center><b><a href="index.php">Din profil er nu oprettet .</b><br>Tilbage</a></center> <? } } ?> Farvel...
19. juni 2006 - 13:51
#17
Hvor henne tilføjer jeg flere points? Du skal have 100 for den hjælp du har givet.
19. juni 2006 - 14:56
#18
Hvordan kan jeg gøre sådan at den finder ud af hvilken radio knap der er markeret, og så gemmer alle dem der er markeret i databasen? Så får du 200 point.
27. september 2006 - 14:02
#19
Nå..Der kom ikke noget svar, så lukker ;)
Vi tilbyder markedets bedste kurser inden for webudvikling