سؤال

إذن، هذا هو أول سؤال حقيقي عن البرمجة على الإطلاق على الويب لأنني عادةً أحاول العثور على الأشياء بنفسي، ولكن وقته، أنا عالق حقًا.

لمعرفة ما لدي حتى الآن: انظر صفحة الويب هذه


ما أريد تحقيقه:

تريد مني الشركة التي أعمل بها حاليًا إنشاء "معالج" يحل مشكلة متعلقة بشبكة WiFi، من خلال تحديد الموقف الخاص بك والتوسع في ذلك.في النهاية، يجب تنفيذه في موقع ويب مدعوم من Joomla، لذلك اعتقدت أن الطريقة التي يجب اتباعها هي تحميل كل شيء في صفحة واحدة.


كيف أقترب منه

ذهبت أولاً للبحث عن طريقة لتحميل الصفحات الأخرى في صفحة رئيسية واحدة.لقد حققت ذلك عن طريق استخدام JavaScript (وجدت على هذا الموقع)

بعد اكتشاف ذلك، بدأت في إنشاء صفحات "المتابعة" الخاصة بي، وسار كل شيء على ما يرام حتى وصلت إلى صفحة يمكنها تصفية محتوياتها عن طريق الحصول على معلمة URL.

بالنسبة للأشخاص المهتمين بوظيفة تلميح الأدوات، راجع [هذه الصفحة] [3]


ما هي المشكلة

أستخدم حلقة If Else، لتصفية الخيارات الممكنة، وإذا لم يتم العثور على أي منها، فيجب أن تعطيني الصفحة ما يلي "Het ziet er naar uit dat er iets fout is gegaan" أو باللغة الإنجليزية، "يبدو أن شيئًا ما صار خطا".نظرًا لأن هذه هي الرسالة التي وصلتني، فقد حدث خطأ ما في الواقع.وبعد البحث في الكود الخاص بي، مرارًا وتكرارًا، اكتشفت أنه قد يكون بسبب معلمة URL التي لم يتم التقاطها.

فكرت في البحث عن رابط صفحة ثابت (فقط قم بربط الزر بصفحة فريدة)، لكنني أجريت بعض الحسابات، ولكي ينجح ذلك، سأحتاج إلى أكثر من 70 صفحة، وهو ما يبدو وكأنه مضيعة.


الرمز

هذا هو الكود الخاص بي حتى الآن:

صفحتي الرئيسية

    <!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>

محتوى صفحتي الثانية

               <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>       

صفحة معلمة 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 "-";
            }                   



            ?>

آسف إذا كان الرمز الخاص بي غير واضح، فأنا بحاجة إلى التعود على لصق الرموز بالكامل على مواقع الويب، ولكن على الأقل حاولت.


لذلك بالنسبة ل ليرة تركية؛ د الناس بيننا.باختصار:

أحتاج إلى تصفية صفحة php باستخدام معلمات عنوان url، ولكن يبدو أنه لا يمكن الحصول على المعلمة، لأن عنوان URL لا يتغير بشكل مباشر.

لمعرفة ما لدي حتى الآن: انظر صفحة الويب هذه

شكرا لك مقدما!

هل كانت مفيدة؟

المحلول

يبدو أن المعلمة التي يتم إلحاقها بطلب AJAX مختلفة عن المعلمة التي يبحث عنها كود PHP.

من الصفحة الرئيسية للمعالج، إذا قمت بالنقر فوق "الإنترنت الخاص بي بطيء جدًا" (الزر الأول الذي تمت ترجمته بواسطة ترجمة Google.) إذا قمت بعد ذلك بالنقر فوق أي من الأزرار الثلاثة، فستظهر لي صفحة الخطأ التي تصفها.عنوان URL الذي يتم طلبه هو /detail.php?id=010, ، لكن مقتطف PHP الخاص بك يشير إلى أن البرنامج النصي يبحث عن ملف prob الحصول على المعلمة.

حاول ضبط المعلمة التي يتم إرسالها إلى prob أو المعلمة التي يبحث عنها البرنامج النصي PHP id.

نصائح أخرى

يجب عليك وضع علامات الاقتباس حول القيم التي تقارن بها.على سبيل المثال، 010 سيتم تفسيره على أنه ثماني.

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

وما إلى ذلك وهلم جرا.

يحرر:أيضًا، كما ذكر Noah، لا يتم تمرير أي معلمة "prob" في عنوان URL، فقط "id".لذلك سوف تقوم بتعيين $prob = $_GET['id'].

بالإضافة إلى النقاط التي أبرزها نوح فريتاس و دان, أنا نوصي أن يمكنك استخدام PHP التبديل السفر من خلال جميع القيم الممكنة ، نظافة الخيار الافتراضي يسمح لك بإرجاع قيمة خطأ إذا كان لا يتم العثور عليها.

تحقق أيضا من المتغيرات الخاصة بك مع isset(), لا تفترض وجودها ، على خلاف ذلك:

  • كنت تأخذ وقتا طويلا إلى تصحيح البرنامج النصي الخاص بك;
  • لا يدرك إذا كان أي شيء يتم تمرير;
  • قد تحصل على إشعار php (Notice: Undefined variable, أو Notice: Undefined index);
  • الخ..

مثال PHP استنادا إلى التعليمات البرمجية الخاصة بك

<?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;

}

?>

ذات الصلة إلى البرنامج النصي الخاص بك, أنت لا تحتاج إلى استخدام الكثير من علامات الاقتباس المزدوجة:

<script type="text/javascript">
function loadContent(elementSelector, sourceUrl) {
  $(elementSelector).load(sourceUrl);
}
</script>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top