Avatar billede hewa Nybegynder
07. december 2007 - 01:04 Der er 5 kommentarer og
1 løsning

foreach eller?

Hej.

Jeg har en side, hvor jeg gerne vil have forskellige bannere på hver sin siden, og banneret skal være koblet op med menuen, men det driller mig godt nok en del...

Med understående kode kan jeg rette i det nederste banner, men alle over bliver ikke på virket overhovedet. Tanken er, jeg kan trække alle menupunkterne ud og så kan jeg lægge et link ind til banneret, der skal være på den pågældende side - men at jeg kan opdatere alle på en gang.

Jeg tror, jeg har læst mig til, jeg skal bruge foreach, men jeg forstår overhovedet ikke, hvordan den skal bruges :-/ hvis det altså er den.

Forstår du ikke, hvad jeg mener, så spørg endelig!

På forhånd tak for hjælpen.

if ($_GET['mode'] == "bannerstyring"){

if(isset($_POST['opret'])) {

mysql_query("UPDATE kategori SET banner = '".$_POST['banner']."' WHERE cat_id = '".$_POST['cat_id']."' LIMIT 1") or die(mysql_error());
        echo "<meta http-equiv='Refresh' content='0;url=".$_SERVER['PHP_SELF']."?mode=bannerstyring'>";
}

echo "<form action='' method='POST'>";

$query = mysql_query("SELECT * FROM kategori");
while($row = mysql_fetch_assoc($query))
{

echo $row['menupunkt'];
echo "<input type='text' name='banner' value='".$row['banner']."' size='50'><br><br>";
echo "<input type='hidden' name='cat_id' value='".$row['cat_id']."'>";
}

echo "<input type='submit' value='Gem' name='opret'>
</form>";

}
Avatar billede fant0mas Nybegynder
07. december 2007 - 06:23 #1
<?
if ($_GET['mode'] == "bannerstyring"){

if(isset($_POST['opret'])) {
$banner = $_POST[banner];
    foreach($banner as $key => $val){
    mysql_query("UPDATE kategori SET banner = '$val' WHERE cat_id = '$key' LIMIT 1") or die(mysql_error());
    }
    echo "<meta http-equiv='Refresh' content='0;url=".$_SERVER['PHP_SELF']."?mode=bannerstyring'>";
}

echo "<form action='' method='POST'>";

$query = mysql_query("SELECT * FROM kategori");
while($row = mysql_fetch_assoc($query))
{

echo $row['menupunkt'];
echo "<input type='text' name='banner['.$row[cat_id].']' value='".$row['banner']."' size='50'><br><br>";
}

echo "<input type='submit' value='Gem' name='opret'>";
echo "</form>";

}
?>

nb. det er ikke testet. Men vi krydser fingre :D
Avatar billede fant0mas Nybegynder
07. december 2007 - 06:25 #2
Der kan man se. Byt lige denne linie:
echo "<input type='text' name='banner[".$row[cat_id]."]' value='".$row['banner']."' size='50'><br><br>";
Avatar billede hewa Nybegynder
08. december 2007 - 11:13 #3
Jeg forstår stadig ikke, hvordan foreach virker - men det du har lavet, virker perfekt!! Tusinde tak for hjælpen :) og smid enelig et svar.
Avatar billede fant0mas Nybegynder
08. december 2007 - 11:55 #4
Jamen det duer jo ikke.
I din form laver vi banner til et array: name="banner[]" og sætter værdien til: value="$row[banner]".

Hvis vi ikke gjorde mere ville dit array se sådan ud:
array("værdi", "værdi", "værdi");

Men vi skal også bruge id'et, så vi får opdateret de rigtige rækker.
Derfor sætter vi id ind som "key" i banner[] sådan: banner[id]
Så ser vores array sådan ud:

array("id" => "værdi", "id" => "værdi", "id" => "værdi");

derefter kan vi med foreach opdater dataen.
foreach($banner as $key => $val){

Med andre ord:
at vi for hver værdi i $banner sætter id til $key og værdien til $val

Håber det forklarer det.
Avatar billede hewa Nybegynder
08. december 2007 - 13:06 #5
Jo, det dur perfekt :)

Og tusinde tak for den yderligere forklaring, den er til forstå - nogenlunde, jeg er en knold til at kode, men jeg kan egentlig godt lide det :)
Avatar billede fant0mas Nybegynder
08. december 2007 - 13:11 #6
Fantastisk.
Det er også præcis det eksperten handler om. God weekend
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester