Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

php/mysql/css hover menu link is een zootje!.

Pagina: 1
Acties:
  • 591 views sinds 30-01-2008

  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
Goedendag
Ik zit weer eens vast..

Ik heb eerst al me verrot gezocht op waarom ik de menunamen niet netjes uit de database in de CSS stijl op de pagina kon toveren..

nu had ik ze eindelijk netjes op de pagina maar nu krijg ik de hele tijd syntax errors als ik probeer de links hoverend te maken

dit is de code waarin het uiteindelijk in html moet verschijnen

code:
1
2
3
4
5
6
7
8
9
10
<ul>
<li><a href="index.php" class="hover">Home</a></li>
<li><a href="subj">Over FietsVinden.nl</a></li>
<li><a href="#">Waarom FietsVinden.nl?</a></li>
<li><a href="#">Nieuws</a></li>
<li><a href="#">Forum</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Beheerders pagina</a></li>
<li class="last"><a href="#">Contact</a></li>
</ul>


en dit is wat ik nu krijg

code:
1
2
3
4
5
6
7
8
9
10
11
<ul>
<li><a href="index.php?subj=1">Home</a></li>
<li><a href="index.php?subj=2">Over FietsVinden.nl</a></li>
<li><a href="index.php?subj=3">Waarom FietsVinden.nl?</a></li>
<li><a href="index.php?subj=4">Nieuws</a></li>
<li><a href="index.php?subj=5">Forum</a></li>
<li><a href="index.php?subj=6">Partners</a></li>
<li><a href="index.php?subj=7">Beheerders pagina</a></li>
<liclass="hover" ><a href="index.php?subj=8">Contact</a></li>
<li class="last"><a href="index.php?subj="></a></li>
</ul>


wat dus niet goed is want de "class=hover" moet in de in het
code:
1
<a href="index.php?subj=#>
gedeelte komen..

dit is het php script waar ik maar naar terug ben gegaan wat voor mij nu het meest begrijpelijke is..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        while ($subject = mysql_fetch_array($subject_set)) {
                    //if ($subject["position"] == 8) {  break; }
                    echo "<li";
                        if ($subject["id"] == $sel_subj) {
                    echo "class=\"hover\" ";
                        }
                    echo "><a href=\"index.php?subj=" . urlencode($subject["id"]) . 
                        "\">{$subject["menu_name"]}</a></li>";          
        }  
        
         $last_subject = get_last_subject();
         
         while ($l_subject = mysql_fetch_array($last_subject)) {
                        if ($subject["id"] == $sel_subj) {
                    echo "class=\"hover\" ";
                        }
                    echo "<li class=\"last\"><a href=\"index.php?subj=" . urlencode($subject["id"]) . 
                        "\">{$subject["menu_name"]}</a></li>";
            }


de vraag is nu.. hoe krijg ik het class="hover" gedeelte zonder syntax errors in het
code:
1
<a href="index.php?subj=#>
gedeelte?

als jullie meer info nodig hebben zoals de CSS stylesheet.. ofzo dan hoor ik het wel

THNX

EDIT: oh ja en wat er nu met het menu gebeurt is dat als ik op een menulink klik de menu link gewoon verdwijnd.. niet highlight of hovert maar verdwijnt

[ Voor 3% gewijzigd door Cidious op 15-01-2008 19:51 ]

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Neem alsjeblieft nou een PHP tutorial door, want hoe de string syntax en echo 'Hello world' werkt kan je echt in 5 minuten gelezen hebben.

{signature}


  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
Voutloos schreef op dinsdag 15 januari 2008 @ 20:07:
Neem alsjeblieft nou een PHP tutorial door, want hoe de string syntax en echo 'Hello world' werkt kan je echt in 5 minuten gelezen hebben.
euhhh.. ik snap wel waarom er "" om sommige dingen moeten staan en waarom ik die soms moet escapen.. maar dit is gewoon warboel op het moment..

ik script nog maar een week of anderhalf met php.. ik heb en video tutorial gedaan van 6 uur.. en een boek hier liggen.. maar loop gewoon vast.. als ik het eenmaal weet kom het wel goed..

dus houdt alsjeblieft je commentaar een "beetje" voor.. dat zou ik wel op prijs stellen..(no harsh feelings ofzo hoor ;) maar ik dacht dat je uit de info die ik hier poste wel een "beetje" kon zien dat ik de "hello world" fase wel voorbij was ;) ) iedereen moet ergens beginnen.. en ik ben redelijk op weg.. en ik dacht dat dit forum voor problemen als dit soort dingen waren.. om je net nog een klein stukje op weg te helpen als je er even echt niet meer uit komt..

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ok, een stukje op weg, niet noodzakelijk de mooiste code style:
-echo alles dat je altijd wil weergeven (t/m een deel van de a-tag)
-cut-n-paste je conditionele echo van die class
-echo de rest van de string.

offtopic:
En gebruik voortaan [php]...[/php] tags, dan krijg je PHP syntax highlighting cadeau. \o/

{signature}


  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
Voutloos schreef op dinsdag 15 januari 2008 @ 20:25:
Ok, een stukje op weg, niet noodzakelijk de mooiste code style:
-echo alles dat je altijd wil weergeven (t/m een deel van de a-tag)
-cut-n-paste je conditionele echo van die class
-echo de rest van de string.

offtopic:
En gebruik voortaan [php]...[/php] tags, dan krijg je PHP syntax highlighting cadeau. \o/
danku danku voor beide tips ik ga het even proberen te ontcijferen en het naar script omzetten

maaruh knip en plak waar naar toe?

krijg ik volgens jouw beschrijving niet hetzelfde al wat ik al had?

En heb ik nou geen if statement meer nodig?
Ik vold de aanwijzingen even niet..

Wat ik dus voor elkaar moet krijgen is dat dit script

PHP:
1
2
3
4
5
<?php
        while ($row = mysql_fetch_array($subject_set)) { 
            echo '<li><a href="?subj='.$row['id'].'">'.$row['menu_name'].'</a></li>'; 
        }  
?>


dit gaat genereren:
code:
1
2
3
4
5
6
7
8
9
10
<ul>
<li><a href="index.php" class="hover">Home</a></li>
<li><a href="#">Over FietsVinden.nl</a></li>
<li><a href="#">Waarom FietsVinden.nl?</a></li>
<li><a href="#">Nieuws</a></li>
<li><a href="#">Forum</a></li>
<li><a href="#">Partners</a></li>
<li><a href="#">Beheerders pagina</a></li>
<li class="last"><a href="#">Contact</a></li>
</ul>


en dus rekening houdt met de class van het laatste onderwerp (class="last")
en dus de menu's laat highlighten als ik er met mijn muis overheen ga EN als het onderwerp werkelijk geselecteerd is..

[ Voor 51% gewijzigd door Cidious op 15-01-2008 21:39 ]

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • PeetR
  • Registratie: Februari 2002
  • Laatst online: 13-09 22:20
Je wilt dus "class=hoover" gebruiken als atribuut van je A-tag. Zet hem daar dan ook in in je PHP-script.

dus:

PHP:
1
a class=hoover href=index.php

etc.

zo moeilijk is het toch niet. Als ik naar je vorige topic kijk geld hier hetzelfde. Kijk naar je HTML-output en kijk daar wat je mist en ga daarna terug naar je PHP om het op de juiste plek toe te voegen

succes!

edit:!!
sorry had je edit nog niet gezien.

Ik begrijp nu dat je dus de eerste en de laatste apart wil hebben. Zelfs apart welke pagina geselecteerd is. Dan zul je de loop moeten aanpassen.
Je moet zien uit te vissen welke pagina aanstaat en wat het eerste en laatste item is. Die zul je apart moeten echo'en.

'k zie sowieso niet in waarom dit uit een db komt daar het mij vrij statische info lijkt, maar dat is maar wat je wilt als ontwerper.

[ Voor 36% gewijzigd door PeetR op 15-01-2008 22:04 ]

Your time as a student is the best time of your life


  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
PeetR schreef op dinsdag 15 januari 2008 @ 21:56:
Je wilt dus "class=hoover" gebruiken als atribuut van je A-tag. Zet hem daar dan ook in in je PHP-script.

dus:

PHP:
1
a class=hoover href=index.php

etc.

zo moeilijk is het toch niet. Als ik naar je vorige topic kijk geld hier hetzelfde. Kijk naar je HTML-output en kijk daar wat je mist en ga daarna terug naar je PHP om het op de juiste plek toe te voegen

succes!
als het nou eens zo makkelijk was..

PHP:
1
2
3
        while ($row = mysql_fetch_array($subject_set)) { 
            echo '<li><a class='hover' href=?subj=' . $row['id'].'">'.$row['menu_name'].'</a></li>';
        }


.......
dan zijn ze toch altijd geselecteerd..

njah ga maar weer aan de gang me if statements..

maar nu weet ik nog steeds niet hoe ik zo compact mogelijk het laatste onderwerp <li class='last' mee kan geven.. zonder helemaal een nieuwe query te hoeven maken.. en dubbele code te moeten gebruiken.. heb het liefste het menu in 1 compact gedeelte..

en doe ik dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
        $subject_set = get_normal_subjects();
        
        while ($row = mysql_fetch_array($subject_set)) { 
            echo '<li><a';
            if ($row['id'] == $sel_subj) {
             echo 'class=hover';
             }
             echo 'href=?subj=' . $row['id'].'">'.$row['menu_name'].'</a></li>';
        }  
?>


dan verdwijnen in 1 keer al mijn onderwerpen uit de balk.. shiet mij maar lek..

EDIT: spatie-tje vergeten.. de namen zijn er weer.. maar heus geen hover hoor..

goed.. nu worden de onderwerpern ook gehighlight als ik ze aanklikt.. dus we komen in de richting.. maar nu nog mijn laatste onderwerp een andere stijl meegeven.. en ze links laten highlighten als ik erover heen hover met mijn muis..

geen flauw idee waar ik moet beginnnen..

[ Voor 25% gewijzigd door Cidious op 15-01-2008 22:26 ]

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • PeetR
  • Registratie: Februari 2002
  • Laatst online: 13-09 22:20
Zie ook mijn edit.

je moet dus met een if-statement zien uit te zoeken welk item geselecteerd is en deze dan de class meegeven. Dit geld ook voor je last_item.

iets in de trend van:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
while ($row = mysql_fetch_array($subject_set)){

if ($row['id'] == selected_object){
echo '<li><a class=hoover etc';
}
elseif($row['id'] == last_item){
echo '<li><a class=last_item etc';
}
else
{
echo '<li><a href etc' ;
}


let op dat selected_object hier geen functie of var is. Hier moet je zelf even zien uit te vogelen hoe je voor elkaar krijgt dat je weet op welke pagina je bent. Misschien iets met een http_GET ?

[ Voor 6% gewijzigd door PeetR op 15-01-2008 22:33 . Reden: iets duidelijker t.a.v. last_item ]

Your time as a student is the best time of your life


  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
$sel_subj is een Super Global verkregen door de functie $_GET

en hmm dus ik moet met else statements gaan werken en mijn laatste onderwerp een andere class meegeven? ga ik proberen BEDANKT!

EDIT:
ik weet dat het statische info is.. maar ik wil de database zo opbouwen dat ik hem ook voor andere sites kan gaan gebruiken.. en dus alleen simpel de database hoef aan te passen voor de menu's enz enz...
misschien dat ik er wel helemaal naast zit.. met mijn streven.. dat weet ik niet.. ben nog te onervaren met dit hele gebeuren.. HTML wist ik tenminste waar ik heen wou.. nu zijn er zoveel nieuwe dingen.. je moet rekening houden met je sylesheet.. je moet rekening houden met je database.. je moet rekening houden met de HTML-output.. EN dat de scripts kloppen.. is een hoop in 1 keer als je alleen maar een redelijke html voorkennis hebt en een beetje CSS en helemaal GEEN MySQL en PHP ervaring hebt..


EDIT:
Ok laatste onderwerp ook netjes gekregen, dit is mijn script nou:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    <?php
        $subject_set = get_normal_subjects();
        
        while ($row = mysql_fetch_array($subject_set)) { 
            if ($row['id'] < 8) {
            echo '<li><a ';
                if ($row['id'] == $sel_subj) {
                 echo " class=\"hover\" ";
                 }
                 echo 'href=?subj=' . $row['id'].'>'.$row['menu_name'].'</a></li>';
            }
            elseif ($row['id'] = 8)  {
                echo '<li class=\'last\'><a ';
                if ($row['id'] == $sel_subj) {
                 echo " class='hover' ";
                 }
                 echo 'href=?subj=' . $row['id'].'>'.$row['menu_name'].'</a></li>';
                }
        }   
    ?>


nu moet ik alleen nog voor elkaar zien te krijgen hoe ik de afbeeldingen laat highlichten als ik met mijn muis er op sta...

dit is mijn source view op dit moment:
code:
1
2
3
4
5
6
7
8
9
10
<ul>
<li><a  class="hover" href=?subj=1>Home</a></li>
<li><a href=?subj=2>Over ####.nl</a></li>
<li><a href=?subj=3>Waarom ####.nl?</a></li>
<li><a href=?subj=4>Nieuws</a></li>
<li><a href=?subj=5>Forum</a></li>
<li><a href=?subj=6>Partners</a></li>
<li><a href=?subj=7>Contact</a></li>
<li class='last'><a href=?subj=8>Beheerders pagina</a></li>
</ul>


ik zou zeggen.. LOOKING GOOD.. maar ik heb nog steeds geen highlight als ik met mijn muis er op sta.. komt dat misschien omdat class="hover" NA href=?subj=1 moet komen omdat dat in mijn origineel wel het geval is..

ik ga het proberen

THNX voor jullie support iig!

[ Voor 108% gewijzigd door Cidious op 15-01-2008 22:59 ]

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Daarnaast kunt je natuurlijk de attributen ook in enkele quotes zetten. Toen ik jaren geleden in ASP en PHP nog zelf HTML schreef maakt ik meestal gebruik van dubbele quotes voor begin en einde van de string en enkele quotes voor attributen. Daarnaast maakt ik veel gebruikt van sprintf, zodat je niet telkens de string hoef te onderbreken om variabelen erin te zetten.

PHP:
1
echo( sprintf( "\t<li><a class='%s' href='%s'>%s</a>\n", "hover", "index.php?subj=4", "Nieuws" ) );



Los daarvan hover is geen style, maar een selector (:hover, :first-word, :active, etc). Een logische class name zou 'menu' kunnen zijn, maar beter is het om helemaal geen class te gebruiken, maar gewoon de style op de A te zetten zodat je website een consistente look & feel krijgt.

If it isn't broken, fix it until it is..


  • Cidious
  • Registratie: Mei 2005
  • Laatst online: 06-11 13:33

Cidious

The Bloody Gent

Topicstarter
uhuh bin there done that hehehe FINALLY.. het heeft me een hele dag gekost om uit te pluizen hoe ik dat menu netjes op zijn plaats kreeg.. proberen proberen proberen.. ben nu wel heel stuk wijzer.. ook met andere scripts.. dus ach.. misschien waren al die uren dan toch neit voor niks.. ik bedoel.. ben de helft wijzer nu denk ik hahah

Maar iig ALLEMAAL nog bedankt voor het helpen!

(oh jah.. ik kan zo niet na reproduceren wat ik allemaal gedaan heb.. als jullie nog geinteresseerd zijn in de final scripts met de juiste code omdat iemand met met het zelfde probleem zitten dan hoor ik het wel. EN jah het was uiteindelijk wel iets stoms.. linkje naar de images klopte niet met mijn folder indeling.. :S njah het heeft me wel de tijd gegeven om de code helemaal te verfijnen en netjes te maken.. heb nu een net en overzichtelijk stukje code.. breed inzetbaar..)

R7 9800X3D + ASUS ROG STRIX X870E-E + RTX 4090 FE + 48GB TG Xtreem 8200 CL38


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

  1. Dit heeft niks met clientside scripting te maken, wat toch wel een vereiste is in Webdesign, Markup & Clientside Scripting.
  2. De fout die je maakt is zó basaal dat je topic ook in het forum waar het wel hoort, Programming, gesloten zou worden, domweg omdat je hier prima zelf uit moet kunnen komen. Hoe je een variabel stukje string in een statische string krijgt wordt letterlijk in élke PHP-tutorial uitgelegd, daar heb je GoT niet voor nodig. Ik zou het fijn vinden als je de volgende keer eerst zelf even voldoende inzet toont voordat je een topic opent.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.