Avatar billede 4u2x Nybegynder
24. januar 2004 - 16:37 Der er 15 kommentarer og
1 løsning

Explode i menu

Er igang med at lave en menu som jeg ikke helt ved præcis hvordan jeg skal kode, har lavet et eksempel på hvordan jeg godt kunne tænke mig den.

Forside
Artikler|ASP
Artikler|PHP
Tips

Skal forvandles til

Forside
Artikler
-ASP
-PHP
Tips

Har forestillet mig noget med:

$string = $row["mysql"];
$array = explode('|', $string);
foreach ($array as $value)
{
    echo "<a href=\"$value\">$value</a><br>";
}

Giver gerne flere point !
Avatar billede sukos Juniormester
24. januar 2004 - 16:45 #1
Forstår ikke lige, $row["mysql"] er det 4 stk. i eksemplet?
altså det er kun nogle $row["mysql"] som skal deles op?
Avatar billede 4u2x Nybegynder
24. januar 2004 - 18:53 #2
$string = $row["mysql"];

<--- den indeholder kun 1 af værdier, den bliver udskrevet lige så mange gange som der er af værdier ialt, så alt bliver udskrevet.

med ?
Avatar billede tefcke Nybegynder
24. januar 2004 - 19:10 #3
Hvad indenholder $row["mysql"]? Kunne du evt. give et eksampel på hvad den kunne indenholde!
Avatar billede 4u2x Nybegynder
24. januar 2004 - 20:38 #4
jeg laver det inde i en while løkke hvor $string kun indeholder en værdi dvs "Forside" eller "Artikler|ASP"  (håber I er med)
Avatar billede tefcke Nybegynder
24. januar 2004 - 21:55 #5
<?php
$link_list = explode('|', $row['mysql']);
print('<a href="$value">'.$link_list[1].'</a><br>');
$link_list = array_pop($link_list);
foreach ($link_list as $link) {
    print('<a href="$value">- '.$link.'</a><br>');
}
?>

Her antages af der altid er noget data i $row["mysql"];, samt at det første er en top kategori, og at alt andet er under kategorier til topkategorien
Avatar billede 4u2x Nybegynder
24. januar 2004 - 22:08 #6
får fejlen:

Warning: Invalid argument supplied for foreach()
Avatar billede tefcke Nybegynder
25. januar 2004 - 05:38 #7
Jeg sad lige og undrede mig over hvor du fik linket fra? Kategoriens navn ligger åbenbart i $row['mysql'], men hvor kommer linket fra?

Ang. (Warning: Invalid argument supplied for foreach()), kommer det sig af at $link_list ikke er et array, men højest sandsynlig en string.

<?php
$link_list = explode('|', $row['mysql']);
print('<a href="http://...">'.$link_list[1].'</a><br>');
$link_list = array_shift($link_list);
foreach ($link_list as $link) {
    print('<a href="http://...">- '.$link.'</a><br>');
}
?>
Avatar billede tefcke Nybegynder
25. januar 2004 - 05:51 #8
Ok, min fejl!
Man skal nok lige teste sime ting først ;)

<?php
$link_list = explode('|', $row['mysql']);
print('<a href="http://...">'.$link_list[1].'</a><br>');
array_shift($link_list);
foreach ($link_list as $link) {
    print('<a href="http://...">- '.$link.'</a><br>');
}
?>

Den vil så altid printe topkategorien ud:
Artikler|ASP
Artikler|PHP

bliver til:

Artikler
- ASP
Artikler
- PHP

Det kan godt lade sig gøre, at undgå at topkategorien går igen, det kræver bare man holder styr på hvad man har udskrevet (du må lige råbe op hvis det er vigtigt).

Dessuden, som jag sagde før, kan jeg ikke se hvor linket til hver kategori skal komme fra. Er linket det samme som kategoriens navn?
Avatar billede tefcke Nybegynder
25. januar 2004 - 05:54 #9
Ok, det er alt for tidligt.
$link_list[1] skal selvfølig være $link_list[0].
Sådan går det når man for længe har programmeret med 1-indekserede arrays ;-)
Avatar billede 4u2x Nybegynder
26. januar 2004 - 13:38 #10
Så er jeg back, stod lige uden net her søndag.
Sådan ser det ud lige nu:

Forside
Artikler
- ASP
Artikler
- PHP
Tips


Har du/I mulighed for at fjerne den ene af Artikler (overskriften), så det ser sådan her ud?:

Forside
Artikler
- ASP
- PHP
Tips
Avatar billede tefcke Nybegynder
26. januar 2004 - 17:38 #11
Jeps, det skrev jeg jo ;)
Avatar billede tefcke Nybegynder
26. januar 2004 - 17:51 #12
<?php
// Liste med udskrevede kategorier
$category_list = array();
// Eller hvad du nu gør med din sql!!
while ( $row = mysql_fetch_array($result) ) {

    // Decode
    $link_list = explode('|', $row['mysql']);
    // Få dat i kategorien
    $category = array_shift($link_list);
    // Udskriv kategorien hvis det ikke allerede er gjort
    if ( !in_array($category, $category_list)) {
        print('<a href="http://...">'.$category.'</a><br>');
        $category_list[] = $category;
    }
    foreach ($link_list as $link) {
        print('<a href="http://...">- '.$link.'</a><br>');
    }

}
?>

Dog ender det galt hvis følgende tilfølde opstår:
Forside
Artikler|ASP
Artikler|PHP
Tips
Artikler|Andet

Vil producere:
Forside
Artikler
- ASP
- PHP
Tips
- Andet

Alt du skal sørge for er at alle kategorier altid er samlet!
F.eks.
Forside
Artikler|ASP
Artikler|PHP
Artikler|Andet
Tips
Kategori_2|ABC
Kategori_2|DEF
Kategori_3|123
Kategori_4|XYZ
Avatar billede 4u2x Nybegynder
26. januar 2004 - 18:03 #13
det virker ik en meter det du laved der :D

while($row = mysql_fetch_array($result))
{
    $subid = $row["id"];
    $kat = $row["kategori"];
    $string = $kat;
   
$link_list = explode('|', $kat);
print('<a href="varekat.php?subkat='.$subid.'">'.$link_list[0].'</a><br>');
array_shift($link_list);
foreach ($link_list as $link) {
    print('<a href="varekat.php?subkat='.$subid.'">- '.$link.'</a><br>');
}

}


sådan ser min kode ud. din kode udskrev det samme som den kode jeg lige har pasted her.
Avatar billede tefcke Nybegynder
26. januar 2004 - 20:21 #14
Jeg ved ikke hvad du har lavet, men det her virker altså:

<?php
$category_list = array();
while($row = mysql_fetch_array($result))
{
    $subid = $row["id"];
    $kat = $row["kategori"];
    $string = $kat;

    $link_list = explode('|', $kat);
    $category = array_shift($link_list);
    if ( !in_array($category, $category_list)) {
        print('<a href="varekat.php?subkat='.$subid.'">'.$category.'</a><br>');
        $category_list[] = $category;
    }
    foreach ($link_list as $link) {
        print('<a href="varekat.php?subkat='.$subid.'">- '.$link.'</a><br>');
    }

}
?>

Hvis det ikke virker, så må du lige skrive hvilken fejlmeddelse du får!
Avatar billede 4u2x Nybegynder
26. januar 2004 - 20:46 #15
Ihhh du er GUD :D  MANGE TAK!!
Avatar billede tefcke Nybegynder
26. januar 2004 - 21:10 #16
;)
Godt det endelig kom til at virke!
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