webForumDet fria alternativet

multiple select hjälp

13 svar · 965 visningar · startad av maweer

maweerMedlem sedan juli 2012123 inlägg
#1

Hmmm...sveriges sämsta rubrik på den här tråden....förlåt!

Nåja...
Jag försöker att uppdatera min DB via en multiple <select>
Jag har kommit så långt som att jag har lyckats att bryta ner min sträng, för gjorde jag inte det så blev det en ända lång sträng med alla namnen
(namn1, namn2....etc)

$var = $rad['namn_i_DB']; 
print_r (explode (',',$var));

och då blir det ju så här, då jag valde att skriva ut min sträng:

Array ( [0] => namn1 [1] => namn2 [2] => namn3 [3] => namn4 [4] => namn5 )

Men, hur gör jag nu för att få in $var i en multiple <select>

voigtann1Medlem sedan juni 20019 519 inlägg
#2

loopar ut den och skapa upp din HTML struktur

maweerMedlem sedan juli 2012123 inlägg
#3

Så här?

$array = array("Jonathan","Sampson");  foreach($array as $value) {   $value; }

och sen

<select name='array_loop' value='$value' multiple=multiple>

Något som var lite rätt? :)

voigtann1Medlem sedan juni 20019 519 inlägg
#4

ja... sen behöver du ju HTML koden för din select, du har option element inne i din select:

<select name='array_loop' value='$value' multiple=multiple>
<?
$array = array("Jonathan","Sampson");  foreach($array as $value) { 
	echo '<option value="'.$value.'">'.$value.'</option>';
}
?>
</select>
maweerMedlem sedan juli 2012123 inlägg
#5

Tack :)
Nu fick jag ihop det

<select name='array_loop' value='$value' multiple=multiple size=5>
<?
$array = (explode (',',$var));  foreach($array as $value) { 
	echo '<option value="'.$value.' ">'.$value.'</option>';
}
?>

Så nu ligger alla namnen där snyggt och prydligt.

Fast, sen kom den ärkesvåra biten ju, kom jag på...
Hur får man dom "selected" respektive inte
Alltså, om namnet jonathan finns med i arrayn, så blir den "selected"

Nånting i stil med?

. ($var['jonathan','anders','sampson']== ? ' selected="selected"' : '')

.
Förmodligen inte, för jag fick inte det att funka med det :P

voigtann1Medlem sedan juni 20019 519 inlägg
#6

du få kolla om en variabel är samma som $value för varje loop du gör, inArray finns kanske i PHP ( http://php.net/manual/en/function.in-array.php )?

maweerMedlem sedan juli 2012123 inlägg
#7

Jag tror jag gör lite galet med min in_array() är jag rädd för

<select name='array_loop' value='$value' multiple=multiple size=5>
<?
$array = (explode (',',$var));  foreach($array as $value) { 
	echo '<option value="'.$value.' ">'.$value.'</option>';
}

?>
</select>
<?php
if(in_array('anders', $value)) { 
              echo "anders";
      }

?>

Jag får Warning: in_array() expects parameter 2 to be array, string given

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Läs dokumentationen så ser du att du behöver två argument, ett värde den skall söka i och arrayn den skall söka igenom.

Du ha en array med alla värden, en array med de val en användare har valt gissar jag på, du få loopar ut den första arrayn och sen kolla på dess $value i den loopen och se om den finns inne i array_2 (med in_array) om du få true där så skriver du ut selected="selected" på den option ($value)

maweerMedlem sedan juli 2012123 inlägg
#9

Mja, den här nöten var svår att knäcka :)

Jag ser att jag får ut loopen genom att jag skriver ut den echo $value;
Men, det verkar inte som om jag får in den i min in_array()

<?php
$loop = array(',',$var); foreach($array as $value) {  echo $value; }// value skrivs ut
if (in_array($_GET['value'], $loop)) {
echo $loop;
}
if (in_array("anders", $loop)) {
    echo $loop;
}

?>

alla mina echo $loop skall bort sen, men det är bara en koll och se om det skrivs ut någon $value någon stans

voigtann1Medlem sedan juni 20019 519 inlägg
#10

Jag gjorde ett exempel: http://php.voigt.se/sandbox/wf/maweer/select.php

<?
$develop = array("php", "javascript", "html");
$user1 = array("javascript", "html");
$user2 = array("php");
?>

<h1>Default user</h1>
<select multiple="multiple">
<?
foreach($develop as $value) { 
	echo '<option value="'.$value.'">'.$value.'</option>';
}
?>
</select>

<h1>user1</h1>
<select multiple="multiple">
<?
foreach($develop as $value) { 
	echo '<option value="'. value .'"'.(in_array($value, $user1) ? ' selected="selected"' : '').'>'.$value.'</option>';
}
?>
</select>

<h1>User2</h1>
<select multiple="multiple">
<?
foreach($develop as $value) { 
	echo '<option value="'. value .'"'.(in_array($value, $user2) ? ' selected="selected"' : '').'>'.$value.'</option>';
}
?>
</select>

Kändes inte som en jätte nöt att knäcka ;)

maweerMedlem sedan juli 2012123 inlägg
#11

Hahahaha :) Klockrent!!! :) Det tog inte många minuter det inte :)
Eh.....mja, jag har inget att säga till mitt försvar....hmmm...jag har en kokosnöt :P

Jag skall ta mig en titt på detta i morgon och försöka hänga med på det här när jag är klar i knoppen och inte har varit uppe sen fyra på morgonen :)
Är inte så klar i pallet just nu känner jag :)

maweerMedlem sedan juli 2012123 inlägg
#12

Okej, jag tror jag hänger med dig :)...eller?

Min $array = (explode (',',$var)); är samma som din
$user1 = array("javascript", "html");
med andra ord så måste det väl vara så här det skall stå i min in_array
(in_array($value, $array)

Tänker jag rätt? Namnen blir selectade iaf

Men, jag hänger inte med på... om jag skriver ut min $var så skriver den ut alla namnen.
Men om jag skriver ut $array så skriver den ut just Array med versal i början, borde där inte också stå alla namnen då

och skriver jag ut min $value, så skriver den bara ut ett av namnen

Jag tänker kanske lite bakvänt, men jag får verkligen inte ihop den logiken :)

Det var därför som jag trodde att $var skulle vara med i min in_array

voigtann1Medlem sedan juni 20019 519 inlägg
#13

Du fråga fel person, har ingen aning om hur PHP fungera men specen säger:

array explode ( string $delimiter , string $string [, int $limit ] )

Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string delimiter.

så du splitar $var vid tecknet , (för övrigt behöver du nog inte ha () runt explode metoden).

$value är ju värdet i loopen, så postion 1 så är det värde 1 (i mitt fall är värde 0 "javascript" och position 1 "html" i $user1 exemplet.

För övrigt så tycker jag du bör kolla upp hur du namnge saker "$var" säger inte något, eller du menar svenska ordet "var"? mitt tips är att använd engelska när du namnge variabler, kommer bli lättare att hänga med på vad du gör.

maweerMedlem sedan juli 2012123 inlägg
#14

voigtann1 skrev:

Du fråga fel person, har ingen aning om hur PHP fungera.

Hahaha det tycker jag visst att du gör :) Det är nog snarare jag som inte vet hur det funkar :)

Men, nu är det rent Möööög på ren skånska
Jag trodde ju i min lilla okunskapsphpvärld att så fort jag fick mina namn att bli "selected" så skulle dom försvinna från mitt fält (namn_i_DB) när jag "selectade" bort ett eller flera namn.
Men, så var ju inte fallet.

Jag testade med sen med

f(isset($_POST['spara'])) //knappens namn är spara

    mysql_query("DELETE FROM eva_spelningar WHERE namn_i_DB");

och då hände inget

Och om jag hade endast min DELETE FROM... så raderades hela posten
Är det min okunskap som spökar igen :)

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)