php include( ) in javascript

Status
Niet open voor verdere reacties.

dudstone

Gebruiker
Lid geworden
14 nov 2011
Berichten
84
Hallo iedereen,

ik heb een javascript functie gebruikt. Dit script zorgt ervoor dat als ik op een button kom dat hij het ene laat zien en de andere button het andere. Nu zit ik ermee dat ik hierin php wil verwerken, maar hij pakt het php script nu niet!

[JS]<script language="JavaScript1.2">

var submenu=new Array()

//Set submenu contents. Expand as needed. For each content, make sure everything exists on ONE LINE. Otherwise, there will be JS errors.

submenu[0]='<a href="#">Televisies</a> &nbsp; <a href="#">Laptops/ PCs</a> &nbsp; <a href="#">Mobiels</a> &nbsp; <a href="#">Accesoires</a> &nbsp; <a href="#">Overige</a>'

submenu[1]=' <?php include('menu.php')?> ' // dont get the php!
submenu[2]='test teste tset'

//Set delay before submenu disappears after mouse moves out of it (in milliseconds)
var delay_hide=500

/////No need to edit beyond here
var menuobj=document.getElementById? document.getElementById("subnavi") : document.all? document.all.describe : document.layers? document.dep1.document.dep2 : ""
function showit(which){
clear_delayhide()
thecontent=(which==-1)? "" : submenu[which]
if (document.getElementById||document.all)
menuobj.innerHTML=thecontent
else if (document.layers){
menuobj.document.write(thecontent)
menuobj.document.close()
}
}
function resetit(e){
if (document.all&&!menuobj.contains(e.toElement))
delayhide=setTimeout("showit(-1)",delay_hide)
else if (document.getElementById&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhide=setTimeout("showit(-1)",delay_hide)
}
function clear_delayhide(){
if (window.delayhide)
clearTimeout(delayhide)
}
function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}
</script> [/JS]

het gaar hierbij om deze regel:
[JS]submenu[1]=' <?php include('menu.php')?> ' // dont get the php![/JS]

weet iemand hier een oplossing voor?

alvast bedankt!

groet,

Dudstone
 
hoe ziet je menu.php er dan uit?
en in wat voor een soort file staat dit script?
 
het is een stuk van een webshop ( freewebshop.org ) en dit zit in dat php script:

PHP:
<?php if ($index_refer <> 1) { exit(); } ?>
<?php
           echo "<h1>".$txt['menu15']."</h1>\n"; 
           // if the category is send, then use that to find out the group
           if ($cat != 0 && $group == 0) { $group = TheGroup($cat); }
           
           $query = "SELECT * FROM `".$dbtablesprefix."group` ORDER BY `NAME` ASC";
	       $sql = mysql_query($query) or die(mysql_error());

           if (mysql_num_rows($sql) == 0) {
	          echo $txt['menu17']; // no groups found
           }
	       else {
                echo "<ul id=\"navlist\">\n";
                while ($row = mysql_fetch_row($sql)) {
	                  // lets find out how many categories there are in the group
	                  $query_cat = sprintf("SELECT * FROM `".$dbtablesprefix."category` where `GROUPID`=%s ORDER BY `DESC` ASC", quote_smart($row[0]));
                      $sql_cat = mysql_query($query_cat) or die(mysql_error());
                      $row_cat = mysql_fetch_row($sql_cat);
	                  $ahref = "";

                        // if there is only 1 category in the group, then jump to the browse list instandly
                        if (mysql_num_rows($sql_cat) == 1) {
                            $ahref = "\"index.php?page=browse&action=list&orderby=DESCRIPTION&group=".$row[0]."&cat=".$row_cat[0]."\"";
                        }
                        // if there are more categories in the group, then show the category list
                        if (mysql_num_rows($sql_cat) > 1) {
                            $ahref = "\"index.php?page=categories&group=".$row[0]."\"";
                        }
                        // now show the menu link, if ahref is not empty
                        if ($ahref != "") {
		                    if ($group != $row[0]) { 
				                echo "<li><a href=".$ahref.">" . $row[1] . "</a></li>\n"; 
				            }
		                    else {
			                    //select/highlight
				                echo "<li id=\"active\"><a id=\"current\" href=".$ahref.">" . $row[1] . "</a></li>\n"; 
		                    }
	                    }
                      
                }
                echo "</ul>\n";
           }
?>

Het rare is dat hij het php script wel laadt, maar mijn javascript doet het gewoon niet meer.
site: http://www.excez.com/demos/shop
 
Laatst bewerkt:
zet de include eerst eens buiten je script en in de body.
Dan zie je gelijk of het script juist wordt weergegeven.
 
Het rare is dat hij het php script wel laadt, maar mijn javascript doet het gewoon niet meer.
site: http://www.excez.com/demos/shop

als ik deze buiten werking zet doet de javascript het wel!
ook als ik het php script in de body zet word deze juist weergegen
 
doe dit eens in je javascript:
submenu[1]=' <?php echo 'test test test'; ?> ' // dont get the php!
 
Ja dit werkt wel. Als je met de muis over producten gaat is gewoon html wat ik erin heb verwerkt. De overige zijn <?php echo 'test test test'; ?> ' // dont get the php!
 
Dus het werkt wel.
Ik heb nog ff door je include gekeken want daarin moet dus de fout zitten.
en wat mij op viel is dat je de herf niet juist maakt.
jij doet dit:
echo "<li><a href=".$ahref.">" . $row[1] . "</a></li>\n";
het moet worden:
echo "<li><a href=\"$ahref\">" . $row[1] . "</a></li>\n";

een href ziet er in html zo uit:
href="http://www.website.com/map/folder/bestand.ext"
wat jij maakte is:
href= ".$ahref."

dus je moet ff in je include file al de href's nalopen.
 
maar dan leest hij de var natuurlijk niet. Bij de andere staat het zo: $ahref = "\"index.php?page=browse&action=list&orderby=DESCRIPTION&group=".$row[0]."&cat=".$row_cat[0]."\""; maar dan zit deze niet in de echo
 
maak eens een nieuwe include file bv. test.php
en zet daar volgende script in (is super basic, alleen voor test)
<?PHP
$link = 'link';
echo '<a href="#">link #</a>';
echo '<a href="'.$link.'">link link</a> &nbsp;
?>
en include dat de test.php op de plek in je javascript in plaats van de andere file.

En kijk of de links nu wel werken
 
bouw dit soort regel op zo als je ze wilt in voegen.
href="$href"

dus je string $href moet je dan zo opbouwen:
$ahref = 'index.php?page=browse&action=list&orderby=DESCRIPTION&group=".$row[0]."&cat=".$row_cat[0];
Dan hoef je geen escape slashes in de gaten te houden want dan maak je het jezelf alleen maar moeilijker.
 
PHP:
<?php 
if ($index_refer <> 1) { exit(); } 
           echo "<h1>".$txt['menu15']."</h1>\n"; 
           // if the category is send, then use that to find out the group
           if ($cat != 0 && $group == 0) { $group = TheGroup($cat); }
           
           $query = "SELECT * FROM `".$dbtablesprefix."group` ORDER BY `NAME` ASC";
           $sql = mysql_query($query) or die(mysql_error());
 
           if (mysql_num_rows($sql) == 0) {
              echo $txt['menu17']; // no groups found
           }
           else {
                echo "<ul id=\"navlist\">\n";
                while ($row = mysql_fetch_row($sql)) {
                      // lets find out how many categories there are in the group
                      $query_cat = sprintf("SELECT * FROM `".$dbtablesprefix."category` where `GROUPID`=%s ORDER BY `DESC` ASC", quote_smart($row[0]));
                      $sql_cat = mysql_query($query_cat) or die(mysql_error());
                      $row_cat = mysql_fetch_row($sql_cat);
                      $ahref = "";
 
                        // if there is only 1 category in the group, then jump to the browse list instandly
                        if (mysql_num_rows($sql_cat) == 1) {
                            $ahref = "index.php?page=browse&action=list&orderby=DESCRIPTION&group=".$row[0]."&cat=".$row_cat[0];
                        }
                        // if there are more categories in the group, then show the category list
                        if (mysql_num_rows($sql_cat) > 1) {
                            $ahref = "index.php?page=categories&group=".$row[0];
                        }
                        // now show the menu link, if ahref is not empty
                        if ($ahref != "") {
                            if ($group != $row[0]) { 
                                echo '<li><a href="{$ahref}">"' . $row[1] . "</a></li>\n"; 
                            }
                            else {
                                //select/highlight 
                                echo '<li id="active"><a id="current" href="{$ahref}">' . $row[1] . "</a></li>\n"; 
                            }
                        }
                      
                }
                echo "</ul>\n";
           }
?>

ik geloof dat het zo zou moeten werken (niet getest en op het oog aangepast)
 
Hoi dudstone,
Zou het kunnen dat je menu.php een mooi ingesprongen code is?
  • Ik heb deze smenu.php en deze smenu2.php.
  • Geen verschil op scherm, wel in de broncodes (zie aldaar).
Dit zijn menu-fragmenten die met een php-include worden opgeroepen.

Het oproepende php-bestand (die pagina is toch wel .php?) ziet er zo uit:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>php in javascript (1)</title>
</head>
<body>
<p><a href="#niks" onclick="submenu(); return false">menu-item</a></p>
<div id="submenu"></div>

<script type="text/javascript"> 
// <![CDATA[

function submenu(){
   var smenu=document.getElementById('submenu');
   smenu.innerHTML='<?php include('smenu.php')?>';
}

// ]]>
</script>
</body>
</html>
  • Dat is deze js-php.php, en die doet het niet als je op de link klikt.
De tweede is identiek, behalve de include naar smenu2.php.
  • Dat is deze js-php2.php, en die doet het wel als je op de link klikt.
Oftewel om (via php) html in javascript te gebruiken, moet de html koud achter elkaar staan: er mogen geen line-breaks in zitten.

Met vriendelijke groet,
CSShunter
_______________
PS: Dit is een leuk experiment, maar in real life van een publiekssite zou ik altijd de voorkeur geven aan een css-hover menu, waar geen script voor nodig is: beter voor de toegankelijkheid en voor de Google-bot! :)
Zie ook de Webrichtlijn 14.1.
 
Laatst bewerkt:
Hm! :(
Zit ik me dus druk te maken over dezelfde vraag met 0 reacties in de javascript-afdeling van dit forum, en daar antwoord en testpagina's bij te fabrieken ...
...
blijkt dat hier intussen een hele discussie enz. met 12 reacties heeft plaatsgevonden over exact hetzelfde.
Hm! :(

Met vriendelijke groet (iets minder aan de dubbelpostende TS),
CSShunter
 
Ik zal zo snel mogelijk eerst even de een nieuwe php script opbouwen kijken of hij deze wel laad met de links erin. Doet deze het wel zal ik eens jouw php script uitproberen. Dit script is echter niet van mij en zover ben ik nog niet in php. Daarom is het voor mij nog iets te moeilijk om dit php script opnieuw op te bouwen zonder de / . Alvast bedankt!
 
Ik heb de test geprobeerd en deze werkt gewoon goed. De links kloppen en alles werkt gewoon goed. Dan probeer ik jouw verbeterde versie, maar hier zitten nog een aantal fouten in. Als ik deze laad, klopt de layout niet helemaal meer en ook de javascript doet het niet meer goed.
De test kun je nu zien op http://www.excez.com/demos/shop
 
Ik heb je posts in Javascript en PHP samengevoegd; volgende keer je vraag graag gewoon één keer stellen, ook als 'ie met meerdere programmeertalen raakvlakken heeft :)
 
Misschien

PHP:
 <?php include('menu.php')?>

veranderen in

PHP:
 <?php include 'menu.php'; ?>

(uit je allereerste script)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan