Autor Zpráva
Erixx
Profil
Zdravim Vás.
nepomohl by mi prosím někdo vyřešit následující problém.
Mám Jacascriptový kod, který rozbaluje SKRYTÉ MENU kliknutím na ODKAZ.
Pokud dosadím název ODKAZU do JS kodu sám, vše funguje.
Já bch ale potřeboval, aby se název ODKAZU includoval z PHP scriptu.
Prosím o radu

JS kod:
<script type="text/javascript">
  <!--
  // po nactenim DOM
  $(document).ready(function() {


    var showText="ODKAZ";


    var hideText="skrýt";
    $(".test").before('<a href="#" class="testodkaz">'+showText+'</a>');
    $('.test').hide();
    $('a.testodkaz').click(function() {
      if ($(this).html()==showText) { // zobrazit
        $(this).html(hideText);
        $(this).next('.test').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.test').slideUp('slow');
      }
      return false;
    });
  });
  //-->
  </script>

  <div class="test">
SKRYTÉ MENU
</div>
  


Místo pole ODKAZ bych potřeboval includovat následující PHP soubor:



<?php
do {
require "db.php";  //výběr databaze
    $vysledek = MySQL_Query("SELECT * FROM ODKAZ ORDER BY id DESC");
      //SQL příkaz
      if (!$vysledek):
          echo "Error";
             break;
      endif;
      while ($data = MySQL_Fetch_Array($vysledek)){		
echo "


<a href='page.php?id=".$data[id]."'>".$data[ODKAZ]."</a>

"; 

             }

} while (false);
?>



nebo jen samotný soubor Include:

<?php include "ODKAZ.PHP"; ?>


Pokud dosadím tyto php soubory o JS místo pole ODKAZ, pak samotný JS nefunguje.

Díky za radu
Chamurappi
Profil
Reaguji na Erixxe:
PHP se vykonává na serveru, JavaScript u klienta. Pro funkčnost JS je tedy rozhodující pouze výsledný kód — ten vypadá jak?
Erixx
Profil
Chamurappi:



<script type="text/javascript">
  <!--
  // po nactenim DOM
  $(document).ready(function() {


    var showText="<?php include "ODKAZ.PHP"; ?>";


    var hideText="skrýt";
    $(".test").before('<a href="#" class="testodkaz">'+showText+'</a>');
    $('.test').hide();
    $('a.testodkaz').click(function() {
      if ($(this).html()==showText) { // zobrazit
        $(this).html(hideText);
        $(this).next('.test').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.test').slideUp('slow');
      }
      return false;
    });
  });
  //-->
  </script>

  <div class="test">
SKRYTÉ MENU
</div>
  



nebo


<script type="text/javascript">
  <!--
  // po nactenim DOM
  $(document).ready(function() {


    var showText="<?php
do {
require "db.php";  //výběr databaze
    $vysledek = MySQL_Query("SELECT * FROM ODKAZ ORDER BY id DESC");
      //SQL příkaz
      if (!$vysledek):
          echo "Error";
             break;
      endif;
      while ($data = MySQL_Fetch_Array($vysledek)){        
echo "


<a href='page.php?id=".$data[id]."'>".$data[ODKAZ]."</a>

"; 

             }

} while (false);
?>";


    var hideText="skrýt";
    $(".test").before('<a href="#" class="testodkaz">'+showText+'</a>');
    $('.test').hide();
    $('a.testodkaz').click(function() {
      if ($(this).html()==showText) { // zobrazit
        $(this).html(hideText);
        $(this).next('.test').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.test').slideUp('slow');
      }
      return false;
    });
  });
  //-->
  </script>

  <div class="test">
SKRYTÉ MENU
</div>





Obě varianty nejsou funkční
Chamurappi
Profil
Reaguji na Erixxe:
Já se ptám, jak vypadá výsledný kód, který se načítá v prohlížeči. PHP mě nezajímá, to prohlížeč nevidí.
Erixx
Profil
Chamurappi:

Výsledný kod v prohlížeči je toto:




<script language="javascript" type="text/javascript" src="jquery/jquery-zobrazskryj.js"></script>
  
  <script type="text/javascript">
  <!--
  // po nactenim DOM
  $(document).ready(function() {
    
    var showText="




Odkazy ";
    var hideText="skrýt";
  
    
    $(".a").before('<a href="#" class="aodkaz">'+showText+'</a>');
  
    
    $('.a').hide();
  
    
    $('a.aodkaz').click(function() {
      if ($(this).html()==showText) {
        $(this).html(hideText);
        $(this).next('.a').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.a').slideUp('slow');
      }
      return false; 
    });
  });
  //-->
  </script>



  <div class="a">

SKRYTÝ ODKAZ
</DIV>





Erixx
Profil
Problém je te, že includovaný PHP kod vloží do JS sice název odkazu, ale udělá před i za velké mezery a JS už to nenačte.

 var showText="




Odkazy ";
Chamurappi
Profil
Reaguji na Erixxe:
Mezery nevadí, odřádkování vadí. Zbav se jich.
Erixx
Profil
Chamurappi:

Přesně tak, je to díky hornímu odřádkování, které dělá includovaný php kod a kterého se nemůžu zbavit , at zeštíhluji php kod jakkoliv.
Poradte, proč tento php kod způsobuje takové odřádkování v JS.


<?
require "db.php";
    $vysledek = MySQL_Query("SELECT * FROM odkzy ORDER BY id DESC");
      while ($data = MySQL_Fetch_Array($vysledek)){        
echo "".$data[nazev].""; 
} while (false);
?>
Chamurappi
Profil
Reaguji na Erixxe:
Zřejmě posíláš na výstup odřádkování. Nic víc v tom PHP souboru nemáš? Žádné odřádkování na začátku?
Erixx
Profil
Chamurappi:

Ne nemám.
Tohle je celý kod

<script language="javascript" type="text/javascript" src="jquery/jquery-zobrazskryj.js"></script>
  <script type="text/javascript">
  <!--

  $(document).ready(function() {
    // nastaveni textu pro odkazy
    var showText="<?
require "db.php";
    $vysledek = MySQL_Query("SELECT * FROM odkazy ORDER BY id DESC");
      while ($data = MySQL_Fetch_Array($vysledek)){        
echo "".$data[nazev].""; 
} while (false);
?>";

    var hideText="skrýt";
  
   
    $(".test").before('<a href="#" class="testodkaz">'+showText+'</a>');
  
    $('.test').hide();
  
    $('a.testodkaz').click(function() {
      if ($(this).html()==showText) { 
        $(this).html(hideText);
        $(this).next('.test').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.test').slideUp('slow');
      }
      return false;
    });
  });
  //-->
  </script>
  <div class="test">
skrytý dkaz
</div>


a zdrojový kod, i když nemám nic nahráno v databázi vypisuje ve zdrojáku tohle i s nepochopitelným odřádkováním
<script language="javascript" type="text/javascript" src="jquery/jquery-zobrazskryj.js"></script>
  <script type="text/javascript">
  <!--

  $(document).ready(function() {
    // nastaveni textu pro odkazy
    var showText="
";

    var hideText="skrýt";
  
   
    $(".test").before('<a href="#" class="testodkaz">'+showText+'</a>');
  
    $('.test').hide();
  
    $('a.testodkaz').click(function() {
      if ($(this).html()==showText) { 
        $(this).html(hideText);
        $(this).next('.test').slideDown('slow');
      } else { // skryt
        $(this).html(showText);
        $(this).next('.test').slideUp('slow');
      }
      return false;
    });
  });
  //-->
  </script>
  <div class="test">
skrytý dkaz
</div>



Chamurappi
Profil
Reaguji na Erixxe:
V db.php náhodou nemáš odřádkování?
Erixx
Profil
Chamurappi:


Super postřeh, bylo to v db.php,

to mě vůbec nenapadlo - už to šlape.

Díky moc!

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0