maweerMedlem sedan juli 2012123 inlägg 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>
loopar ut den och skapa upp din HTML struktur
maweerMedlem sedan juli 2012123 inlägg 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? :)
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 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
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 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
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 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
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 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 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
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
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 :)