Noob met urlencode probleem
Ik heb een database koppeling lopen. Uit deze database haal ik mijn menu content. Nadat ik een Javascript had geplaatst doet mijn urlencode het niet meer.
hier gaat het ergens fout..
<code>
while($page = mysql_fetch_array($page_set)){
$output .="<li><a href='content.php?page='" . urlencode($info["id"]) .
"'>{$page["name"]}</a></li>";
</code>
Letop dit werkte perfect totdat ik een javascipt voor mijn grafische menu had toegevoegd
( function( $ ) {
$( document ).ready(function() {
$('#cssmenu > ul > li > a').click(function() {
$('#cssmenu li').removeClass('active');
$(this).closest('li').addClass('active');
var checkElement = $(this).next();
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
$(this).closest('li').removeClass('active');
checkElement.slideUp('normal');
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#cssmenu ul ul:visible').slideUp('normal');
checkElement.slideDown('normal');
}
if($(this).closest('li').find('ul').children().length == 0) {
return true;
} else {
return false;
}
});
});
} )( jQuery );
Wat doe ik hier fout, wat zie ik niet.
Gewijzigd op 04/02/2015 12:18:30 door Marcel Santing
Je HTML code klopt in ieder geval niet, want waarden van properties moeten tussen "dubbele quotes".
Klopt je HTML document (verder) wel en ook de nesting van je list(item)s? Krijg je JavaScript foutmeldingen (dit kan je functionaliteit helemaal breken)?
Ik verwacht eerder een fout ofwel in HTML ofwel in JavaScript die roet in het eten gooit.
EDIT: Er klopt geen biet van je quotes, kijk maar eens naar de output van je PHP-code.
Gewijzigd op 04/02/2015 12:32:53 door Thomas van den Heuvel
EDIT: mijn quotes deugen ook niet by the way.... ik gebruik nu "/blabla"/
Gewijzigd op 04/02/2015 12:42:05 door Marcel Santing
Daarnaast, PHP heeft zijn ding al gedaan nog voordat JavaScript iets kan doen, dus het kan niet zo zijn dat JavaScript van invloed is op urlencode(). Ik zie simpelweg niet hoe dit mogelijk is.
Anyhoo, het heeft geen zin om een analyse te maken van een mogelijke fout of deze proberen op te lossen in een situatie waarvan je weet dat deze (situatie) niet klopt.
Ergo: repareer eerst je HTML document, en kijk dan of de fout nog steeds optreedt. Heb je je document al eens door een validator gehaald? Ben je nagegaan dat je JavaScript niet ergens anders breekt? Heb je alle caching uitgezet en je pagina('s) herladen zodat je zeker weet dat je naar de laatste versie van je webpagina kijkt?
Gewijzigd op 04/02/2015 12:52:06 door Thomas van den Heuvel
ben maar eens even niet eigenwijs geweest en heb ff alle scripts uitgeschakeld en css. Back to basic als het ware.
en verrek je hebt gelijk
Eerst even mijn menu
<php>
function navigation($sel_table1, $table2) {
$output = "<div id='cssmenu'>";
$output .= "<ul>";
$output .= "<li class='active'><a href='content.php'><span>Home</span></a></li>";
$info_set = get_all_info();
while($info = mysql_fetch_array($info_set)){
$output .= "<li class='has-sub'><a href=?info'" . rawurlencode($info["id"]) .
"'><span>{$info["menu"]}</span></a>";
$output .= "<ul>";
$page_set = get_pages_for_info($info["id"]);
while($page = mysql_fetch_array($page_set)){
$output .="<li><a href='content.php?page='" . rawurlencode($page["id"]) .
"'>{$page["name"]}</a></li>"; //inline substitution
}
$output .="</ul>";
}
$output .="</ul>";
$output .="</div>";
return $output;
}
</php>
ga hem weer opnieuw schrijven.... ik zie gewoon de fout niet.
Gewijzigd op 04/02/2015 12:59:00 door Marcel Santing
Dat, wellicht in combinatie met een validator, zou je in de goede richting moeten sturen.
De ene <a href= heeft wel quootjes en een andere weer niet.
echt serieus dom....
enfin
dit had ik
$output .="<li><a href='content.php?page='" . rawurlencode($page["id"]) .
dit mest het zijn:
$output .="<li><a href='content.php?page=" . rawurlencode($page["id"]) .
dus uiteindelijk toch een quote te veel. Bedankt, je hebt me iig goed geholpen bij het troubleshooten van iets. 5 jaar geleden voor het laatst echt iets met PHP gedaan. Ik zie dat ik gebruik moet maken van mySQLi dit gaat er bij 6.0 uit.