Door
Dennis B
op 03-05-2014 00:09
gewijzigd op 03-05-2014 00:10
5.141 views
Hallo,
Bij het uitvoeren van onderstaande code komen bij de echo van $frontpage en $ID 2x een 'f' als waarde terug. Geen idee waarom. Kan iemand mij helpen? Alvast bedankt!
Wat je wilt is de juiste database-tabel id's meenemen in de POST variabelen. Dat kun je oplossen door het name attribuut een naam te geven als frontpage_12. Met een simpele truck halen we die 12 dan weer uit de naam. Plaats onderstaande snippets op de juiste plek in je code. (Je weet wel waar)
<?php
if (isset($_POST['test'])){
// even zien wat er in $_POST zit:
echo '<pre>';
print_r($_POST);
echo '</pre>';
// loop door ALLE $_POST elementen
foreach($_POST as $index => $value)
{
// indien de index van het element begint met 'frontpage_'
if(substr($index, 0 , 10) == 'frontpage_')
{
// extract het id van de database-tabel:
$arr = explode('_', $index);
$id = (int) $arr[1];
$result = mysql_query("UPDATE content SET frontpage = '" . $value . "' WHERE ID=" . $id, $connection);
Ger omdat dat in de $_POST array twee losse onderliggende array's oplevert. En dan hoor ik je al denken 'Nou en?' maar mijn antwoord daarop is dat je dan geen foreach meer kunt gebruiken maar natuurlijk wel een for lus. Echter is dat niet voor iedereen vanzelfsprekend. Daarnaast zul je voor de rest van je leven moeten onthouden dat die twee array's dan wel altijd synchroon moeten lopen.
Bedankt, heb het even getest en het werkt! Ik heb nog niet naar de code zelf gekeken wat het verschil is. Dit zal ik morgen doen zodat ik hier weer van kan leren. Maar nogmaals enorm bedankt!
Voor de kolom ´block´ wil ik exact dezelfde functie, maar dit werkt niet zodra ik f(substr($index, 0 , 10) == 'frontpage_') in f(substr($index, 0 , 10) == 'block_') verander. Uiteraard ook de onderstaande regel heb ik aangepast:
Ik ben er zelf achter gekomen, wanneer ik frontpage laat staan werkt het, maak ik er bv frontpagg van werkt het ook maar zodra ik er een letter afhaal dus, frontpag werkt het niet meer. Dus ik vraag me af of met die cijfers 0, 10 de lengte van de regel mee wordt gegeven. Klopt dit?
Ger omdat dat in de $_POST array twee losse onderliggende array's oplevert. En dan hoor ik je al denken 'Nou en?' maar mijn antwoord daarop is dat je dan geen foreach meer kunt gebruiken maar natuurlijk wel een for lus. Echter is dat niet voor iedereen vanzelfsprekend. Daarnaast zul je voor de rest van je leven moeten onthouden dat die twee array's dan wel altijd synchroon moeten lopen.
Ik hoef niets te onthouden want ik weet dat ze synchroon lopen.
De uitzondering daarop zijn checkboxen.
Voor de kolom ´block´ wil ik exact dezelfde functie, maar dit werkt niet zodra ik f(substr($index, 0 , 10) == 'frontpage_') in f(substr($index, 0 , 10) == 'block_') verander. Uiteraard ook de onderstaande regel heb ik aangepast:
Ik ben er zelf achter gekomen, wanneer ik frontpage laat staan werkt het, maak ik er bv frontpagg van werkt het ook maar zodra ik er een letter afhaal dus, frontpag werkt het niet meer. Dus ik vraag me af of met die cijfers 0, 10 de lengte van de regel mee wordt gegeven. Klopt dit?
Maar wat moet ik nu veranderen zodat het woord 'block' ook werkt?
Als je nu gewoon eens de manual erbij pakt en kijkt hoe de functie [php]substr[/php] werkt, zou dat een idee zijn? Een functie gebruiken zonder dat je zelfs maar weet waarvoor elke parameter dient is altijd een slecht idee....