Obtención de contenido de otras páginas y uso de parámetros de URL

así que aquí va mi primera pregunta de codificación real en la web, ya que normalmente trato de averiguar cosas por mí mismo, pero esta vez, estoy realmente atascado.

Para ver lo que tengo hasta ahora: ver esta página web


Lo que quiero lograr:

La empresa para la que trabajo en este momento quiere que cree un "asistente", que resuelva un problema relacionado con WiFi, seleccionando su situación y ampliándola. Al final, debe implementarse en un sitio web impulsado por Joomla, así que pensé que el camino a seguir era cargar todo en una sola página.


Cómo lo estoy abordando

Primero fui a buscar una forma de cargar otras páginas en una página principal. Logré esto mediante el uso de JavaScript (Encontrado en este sitio web)

Después de darme cuenta de eso, comencé a crear mis páginas de "seguimiento", y todo salió bien hasta que llegué a una página que filtraría su contenido tomando el parámetro de URL.

Para las personas interesadas en la función de información sobre herramientas, consulte [esta página][3]


Cuál es el problema

Utilizo un bucle If Else para filtrar las posibles opciones y, si no se encuentra ninguna de estas, la página debería darme el siguiente mensaje "Het ziet er naar uit dat er iets fout is gegaan" o en inglés, "Itparece algo". salió mal". Dado que este es el mensaje que recibo, algo salió mal. Y después de revisar mi código, una y otra vez, pensé que podría deberse al parámetro de URL que no capta.

Pensé en buscar un enlace de página estático (simplemente vincule el botón a una página única), pero hice algunos cálculos y, para que funcionara, necesitaría alrededor de 70 páginas, lo que se siente como un desperdicio.


El código

Este es mi código hasta ahora:

mi pagina principal

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>EnGenius WiFi Wizard</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <script language="javascript" type="text/javascript" src="js/jquery.js"></script>
    <script language="javascript" type="text/javascript" src="js/script.js"></script>

    </head>

    <body>
    <script type="text/javascript">
    function loadContent(elementSelector, sourceUrl) {
    $(""+elementSelector+"").load(""+sourceUrl+"");
    }
    </script>
<div id="content">
  <h1>De WiFi Wizard</h1>
    <h3>Snel en gemakkelijk een draadloze oplossing</h3>

  <div id="btnholder" style="margin-top:15px;">
            <a href="javascript:loadContent('#content', 'speed.php');"><div         id="button">Mijn internet is te langzaam</div></a>
            <a href="javascript:loadContent('#content', 'router.php');"><img         src="images/tip.png" style="float:left; margin-left:3px;" alt="WiFi tip" width="15"         height="15" onmouseover="tooltip.show('Internet snelheid word ook wel aangeduid met het         woord Bandbreete', 250);"
    onmouseout="tooltip.hide();" />
            <div id="button" style="margin-left:10px;">Ik heb een router nodig,         Maar weet niet welke</div></a><img src="images/tip.png" style="float:left; margin-        left:3px;" alt="WiFi tip" width="15" height="15" onmouseover="tooltip.show('Een router is         een apparaat wat een netwerk met het internet verbind', 250);"
    onmouseout="tooltip.hide();" />
  </div> 
    <h3>Wat is Wifi eigenlijk?</h3><br />

    <h4>WiFi is een verzameling van standaarden voor draadloze netwerken.

    Wat houdt dit nou precies in?
    Heel makkelijk gezegd: Internetten zonder lastige lange kabels! 
    Je kunt bv met jouw laptop lekker op de bank zitten en genieten van internet.<br />        <br />

    Als je thuis een draadloos netwerk wilt dan heb je een product nodig waar dus de         standaard/naam ‘802.11’ op staat.<br />
    Helaas zijn we in Nederland een behoorlijk bepakt (woon)gebied. Hierdoor kun je         bijvoorbeeld storing hebben op jouw (technische) producten die je thuis gebruikt.<br /><br         />

    Ook met WiFi kunnen er situaties voorkomen waarbij je geen optimaal gebruik kunt         maken van de oplossingen die worden aangeboden.<br /><br />
    Via deze website kom je op de hoogte wat nou al die termen eigenlijk betekenen en
    welke oplossingen er zijn voor bepaalde situaties, kortom je wordt een echte WiFi         kenner!<br />
    <br />
    </h4>       
</div>

    </body>
    </html>

El contenido de mi segunda página

               <h1>De WiFi Wizard</h1>
            <h3>Dus u heeft een probleem met de snelheid van uw internet? Dat gaan we oplossen!</h3>
            <h3 style="font-size:10pt; color:#666666;">Wat is de afstand tussen uw computer en uw router?</h3>

            <div id="btnholder" style="margin-top:15px;">
            <a href="javascript:loadContent('#content', 'detail.php?prob=010');"><div id="button">0-10 Meter</div></a>
            <a href="javascript:loadContent('#content', 'detail.php?prob=1030');"><div id="button" style="margin-left:10px;">10-30 Meter</div></a>
            <a href="javascript:loadContent('#content', 'detail.php?prob=30');"><div id="button" style="margin-top:10px; margin-left:90px;">Meer dan 30 Meter</div></a>
            </div> 
            <br />
            <h3>Waarom is afstand zo belangrijk?</h3>
            <br />

            <h4>Een WiFi signaal reist door de lucht, en kan worden verstoord door veel verschillende dingen zoals, muren, plafonds, andere apparaten, en andere WiFi signalen.</h4>
            <h4>Daarnaast verliest een signaal na verloop van tijd zelf ook sterkte, net als met geluid dat je over een grotere afstand steeds slechter hoort. </h4>
            <h4>Stel je voor dat je het signaal sterker kan maken, door een ander apparaat te gebruiken. Dat kan, omdat wij  altijd onderdelen van hoge kwaliteit gebruiken, kunnen wij ervoor zorgen dat uw WiFi signaal een beter bereik heeft, en u dus een snellere verbinding krijgt.<br />
            <br />
            </h4>       

Mi página de parámetros de URL

            <h1>De WiFi Wizard</h1>
            <?php   

            $prob = $_GET["prob"]; 

            if ($prob == 010)
            {
            echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel mensen er gebruik maken van het netwerk</h3>";
            } 

            if ($prob == 1030){ 

            echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel muren en/of plafonds er zich tussen de computer en de router bevindenk</h3>";
            }

            if ($prob == 30){ 

            echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel mensen er gebruik maken van het netwerk</h3>";
            }

            else{
            echo "<h3 style='font-size:10pt; color:#666666;'>Het ziet er naar uit dat er iets fout is gegaan</h3>";
            }                   



            ?>

            <div id="btnholder" style="margin-top:15px;">
            <?php   

            $prob = $_GET["prob"]; 

            if ($prob == 010)
            {
            echo "<a href='javascript:loadContent('#content', 'users.php?amnt=15');'><div id='button'>1-5 gebruikers</div></a>
            <a href='javascript:loadContent('#content', 'users.php?amnt=5');'><div id='button'>Meer dan 5 gebruikers</div></a>";
            } 

            if ($prob == 1030){ 

            echo "<a href='javascript:loadContent('#content', 'pen.php?amnt=none');'><div id='button'>Geen plafonds of muren</div></a>
            <a href='javascript:loadContent('#content', 'pen.php?amnt=1');'><div id='button'>1 Muur of Plafond</div></a>
            <a href='javascript:loadContent('#content', 'pen.php?amnt=2');'><div id='button'>2 Muren of Plafonds</div></a>
            <a href='javascript:loadContent('#content', 'pen.php?amnt=more');'><div id='button'>Meer dan 2 muren of plafonds</div></a>";
            }

            if ($prob == 30){ 

            echo "<a href='javascript:loadContent('#content', 'users.php?amnt=15');'><div id='button'>1-5 gebruikers</div></a>
            <a href='javascript:loadContent('#content', 'users.php?amnt=5');'><div id='button'>Meer dan 5 gebruikers</div></a>";
            }

            else{
            echo "-";
            }                   



            ?>

            </div> 
            <br />  
            <?php   

            $prob = $_GET["prob"]; 

            if ($prob == 010)
            {
            echo "<h3>Wat Maakt het aantal gebruikers uit?</h3>
            <br />

            <h4>Het aantal gebruikers bepaalt de hoeveelheid data die er word gebruikt binnen een netwerk. Hoe meer gebruikers er op een netwerk zitten, des te meer data word er gebruikt.<br />
            <br />Als het netwerk dit niet aankan, betekent het dat u een onstabiel, en traag netwerk krijgt, waardoor u niet optimaal van uw internet kunt genieten.</h4>";
            } 

            if ($prob == 1030){ 

            echo "<h3>Wat Maakt het aantal muren of plafonds uit?</h3>
            <br />

            <h4>Waneer een WiFi signaal door muren of plafonds heen reist, neemt het in sterkte af. Dus hoe meer obstakels er tussen uw router, en uw computer staan, des te zwakker het signaal.<br />
            <br />Door middel van de juiste onderdelen, denk bijvoorbeeld aan antenna's, kun je een sterker signaal creëren dat zich verder kan verspreiden.</h4>";
            }

            if ($prob == 30){ 

            echo "<h3>Wat Maakt het aantal gebruikers uit?</h3>
            <br />

            <h4>Het aantal gebruikers bepaalt de hoeveelheid data die er word gebruikt binnen een netwerk. Hoe meer gebruikers er op een netwerk zitten, des te meer data word er gebruikt.<br />
            <br />Als het netwerk dit niet aankan, betekent het dat u een onstabiel, en traag netwerk krijgt, waardoor u niet optimaal van uw internet kunt genieten.</h4>";
            }

            else{
            echo "-";
            }                   



            ?>

Lo siento si mi código no está claro, necesito acostumbrarme a pegar todos los códigos en los sitios web, pero al menos lo intenté.


Entonces para el TL; DR gente entre nosotros. En breve:

Necesito filtrar una página php con parámetros de URL, pero parece que no puede capturar el parámetro, porque la URL no cambia directamente.

Para ver lo que tengo hasta ahora: ver esta página web

Gracias de antemano!

preguntado el 22 de mayo de 12 a las 16:05

Utilice Firefox + Firebug. Abra el depurador: abra la pestaña NET y podrá ver la solicitud/respuesta HTTP y ver qué está pasando. -

¿Qué pasa con el uso location.hash en Javascript? -

¡Gracias a todos por la rápida respuesta! eso es genial! El problema parecía ser un archivo que aún necesitaba actualizarse en mi servidor remoto. Pero gracias a todos por su tiempo! -

3 Respuestas

Debe poner comillas alrededor de los valores con los que está comparando. Por ejemplo, 010 se interpretaría como un octal.

if ($prob == '010') {
    ...
} else if ($prob == '1030') {
    ...
}

Y así sucesivamente.

editar: Además, como mencionó Noah, no se pasa ningún parámetro "prob" en la URL, solo "id". Así que asignarías $prob = $_GET['id'].

contestado el 22 de mayo de 12 a las 16:05

Como se comentó en la respuesta de Noah, gracias por las pistas y el tiempo. También apliqué su método para pasar el número, y ahora estoy seguro de que la variable siempre se procesa como debería :) - Marzo

Parece que el parámetro que se agrega a la solicitud de AJAX es diferente al parámetro que busca el código PHP.

Desde la página de inicio de su asistente, si hace clic en "Mi Internet es demasiado lento" (el primer botón traducido por el traductor de Google). Si luego hace clic en cualquiera de los tres botones, aparece la página de error que describe. La url que se solicita es /detail.php?id=010, pero su fragmento de PHP dice que el script está buscando un prob GET parámetro.

Intente ajustar el parámetro que se envía a prob o el parámetro que el script PHP está buscando para id.

contestado el 22 de mayo de 12 a las 16:05

Gracias, que estupidez no lo vi antes. No subí el archivo speed.php (que pasa la variable) al servidor todavía. Junto con las otras respuestas dadas, ¡estoy seguro de que mi guión es sólido ahora! Gracias por todo tu tiempo :) - Marzo

Además de los puntos ya destacados por Noé Freitas y Dan, te recomendaría que uses un PHP cambiar para viajar a través de todos los valores posibles, es más limpio y la opción predeterminada le permite devolver un valor de error si no se encuentra nada.

Además, verifique sus variables con isset (), no asuma su presencia, de lo contrario:

  • tardas demasiado en depurar tu script;
  • no te das cuenta si se está pasando algo;
  • puede recibir un aviso de php (Notice: Undefined variable o el Notice: Undefined index);
  • etc ..

EJEMPLO PHP BASADO EN SU CÓDIGO

<?php   

// check if variable is present to use it or pass empty
$prob = (isset($_GET["id"])) ? ($_GET["id"]) : (''); 

// switch by all possible values
switch ($prob) {

  case "010":
    echo "bla bla bla";
    break;

  case "1030":
    echo "bla bla bla";
    break;

  case "30":
    echo "bla bla bla";
    break;

  default:
    // This case matches anything that wasn't matched by the other cases
    // output error, or something...
    echo "-";
    break;

}

?>

En relación con su secuencia de comandos, no necesita usar tantas comillas dobles:

<script type="text/javascript">
function loadContent(elementSelector, sourceUrl) {
  $(elementSelector).load(sourceUrl);
}
</script>

contestado el 23 de mayo de 17 a las 13:05

Estoy de acuerdo con usted, que el cambio de php se ve mucho más ordenado, pero dado que el script funciona como lo hace, y mi experiencia con php está un poco por debajo del nivel (solo soy un interno: p), así que me mantendré en mi código actual por ahora. ¡Pero aprendí de tu publicación y me aseguraré de usar este método en el futuro! ¡Gracias! - Marzo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.