slowMedlem sedan apr. 2004148 inlägg Hej!
Har denna lilla rad för att se om en viss kategori är vald. Isåfall ska den bocka i en checkbox. Men nu har jag gjort så att man kan välja flera val i checkboxarna. Och sparat resultatet i en array....
if (!(strcmp("".$letters."","".$kategorier['id_kat'].""))) {echo "checked=\"checked\"";}
$letters innehåller ett innehåll på tex: 2,5,6,8
Så då skulle jag vilja höra om ni vet någon funktion som kollar om $letters innehåller idnr i $kategorier['id_kat']?
strcmp kollar om den är lika med...men finns det för innehåller?
Har försökt med strpos men inte lyckats ;(
Låt mig se om jag fattat detta rätt. $letters är en sträng med kommaseparerade siffror? $kategorier['id_kat'] är rätt och slätt en siffra?
I så fall skulle jag köra:
if ( in_array( $kategorier['id_kat'], explode(',',$letters) ) ) {
// matchat!
}
slowMedlem sedan apr. 2004148 inlägg Korrekt tänkt!
$letters kanske ser ut så här: 3, 5, 2,
Och $kategorier['id_kat'] så här: 5
Den markerar dock enbart en checkbox...så i detta fall skulle den markera kategorin med id 2...
Någon aning varför?
Om du visar mer kod så kanske det kan förklaras?
Har du testat att köra var_dump() på dina variabler efter varje operation?
slowMedlem sedan apr. 2004148 inlägg Självklart bjuder jag på mer kod :)
Här kommer hela sidan...
<?php
/* Hämta mail */
$db = new DB();
$db->query("SELECT * FROM ".DB_PREFIX."_newsletter WHERE id = ".$_GET['id']."");
$email = $db->next_record();
/* Kategorier */
$db1 = new DB();
$db1->query("SELECT * FROM ".DB_PREFIX."_newsletter_kategorier ORDER BY namnet ASC");
/* Formulär */
if ($_POST['save']) {
$db3 = new DB();
$user = $_POST['user'];
$bockade = serialize($_POST['check']); //takes the data from a post operation...
$db3->query("UPDATE ".DB_PREFIX."_newsletter SET brev='$bockade' WHERE id = ".$_GET['id']."");
header("Location: ?load=newsletter&p=edit&id=".$_GET['id']."&s=j");
}
//$db3->close();
if ($_GET['s'] == 'j'){
$message = "Inställningarna är sparade"; } else {
$message = ""; }
?><form action="" method="post">
<table width="100%" border="0">
<tr>
<td width="50%" valign="top"><h3>E-post</h3>
<?php echo $email['email'];?><br><?php
$brev=unserialize($email['brev']);
foreach($brev as $letters)
{
print $letters.', ';
}
?></td>
<td width="50%" valign="top"><h3>Nyhetsbrev</h3>
<?php if ($message != NULL) { ?><div id="done"><?php echo $message ?></div><?php } ?>
<?php while ($kategorier = $db1->next_record()) { ?>
<p><input name="check[]" type="checkbox" id="check[]" value="<?php echo $kategorier['id_kat'];?>" <?php
if ( in_array( $kategorier['id_kat'], explode(',',$letters) ) ) {
echo "checked=\"checked\"";
}
?>>
<?php echo $kategorier['namnet'];?></p><?php } ?>
<input type="hidden" name="user" id="user" value="<?php echo $email['id'];?>"/>
<input type="submit" name="save" id="save" value="Spara" />
<?php echo $bockade;?></label></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>
Tar jag var_dump på $letters så får jag detta:
string(1) "2"
Vilket inte känns rätt....
Kör jag på $brev får jag detta:
array(3) { [0]=> string(1) "3" [1]=> string(1) "5" [2]=> string(1) "2" }
Vilket känns mer rätt... :)
Sen gäller det bara att kunna jämföra denna array med kategorierna?
Tack för all hjälp föresten! Väldigt uppskattat...!
foreach($brev as $letters)
{
print $letters.', ';
}
$letters sätts till det sista array-värdet.