پی ایچ پی سے متعلق سوال ۔

جہانزیب نے 'آئی ٹی کے سوال و جواب' کی ذیل میں اس موضوع کا آغاز کیا، ‏جنوری 31, 2009

  1. جہانزیب

    جہانزیب محفلین

    مراسلے:
    2,442
    جھنڈا:
    UnitedStates
    موڈ:
    Brooding
    میرا سوال یہ ہے کہ پی ایچ پی میں While loop کے ساتھ، if, elseif اور else تینوں کا ایک ہی دفعہ میں استعمال کیسے کیا جائے گا؟ میں اپنے بلاگ کا ہوم پیج بنانے کی پچھلے دو تین دن سے کوشش کر رہا ہوں ۔ وہاں کرنا یہ چاہتا ہوں کہ سب سے پہلے تازہ ترین تحریریں تین عدد دکھائی جائیں، اس کے بعد مختلف زمرہ جات میں سے تین عدد تحاریر بھی ہوم پیج پر موجود ہوں ۔ یہ کرنا آسان ہے ۔ مشکل یہ ہو رہی ہے کہ جیسے زمرہ سیاست میں ایک نئی تحریر لکھی جائے ،اور سیاست کا زمرہ کی تین تحریریں ہوم پیج پر موجود ہوں ۔ تو نئی تحریر ہوم پیج پر دو دفعہ آ جائے گی ۔ یا زمرہ امریکہ اور سیاست دونوں کی تحریریں ہوم پیج پر ہیں، اور ایک تحریر لکھی جائے جو کہ دونوں کا حصہ ہو، وہ بھی ہوم پیج پر دو دفعہ نظر آئے گی ۔ اس سلسلے میں ورڈپریس لوپ بھی پڑھا ہے،اور اسی کے مطابق مندرجہ ذیل کوڈ لکھا ہے، لیکن کام نہیں بن رہا ۔
    PHP:
    <?php $latest=new WP_Query ('cat=&showposts3');
    while (
    $latest->have_posts()) : $latest->the_post();
    $do_not_copy $post ->ID?>
    <?php post_title
    (); ?>
    <?php the_content
    ();  ?>
    <?php 
    endwhile : ?>

    اس loop سے تازہ ترین تین تحاریر دکھائی جا رہی ہیں، جو درست نظر آ رہی ہیں، اس کے ساتھ ہی Variable میں بتایا گیا ہے کہ پوسٹ کی آئی ڈی کو ملخوظ رکھنا ہے اور اگلا لوپ جس میں زمرہ میں تین عدد تحاریر دکھانا مقصود ہے اسکا کوڈ مندرجہ ذیل طریقہ سے لکھا گیا ہے ۔
    PHP:
    <?php query_posts('cat=3&showposts=3');
    while (
    have_posts()) : the_post();
    if  (
    $post->ID == $do_not_copy) continue; update_post_cache($posts);
    elseif (
    get_post_meta($post"thumbnail"true) ) : ?>
    <?php post_title
    (); ?>
    <?php the_content
    (); ?>
    <?php 
    endif: endwhile: ?>
    اوپر والا کوڈ لکھنے سے Parse error آ جاتا ہے ، جبکہ اگر میں elseif کو نکال دوں تو صفحہ نظر آجاتا ہے لیکن تحاریر پھر بھی دو دفعہ نظر آ رہی ہیں؟
     
  2. arifkarim

    arifkarim معطل

    مراسلے:
    29,828
    جھنڈا:
    Norway
    موڈ:
    Happy
    یہ پروگرامنگ کوڈ نبیل اور زیک بھائی کیلئے پیسٹری ہے۔ آپ ہی دیکھ کر بتائیں گے، کیا مسئلہ ہے۔
     
  3. جہانزیب

    جہانزیب محفلین

    مراسلے:
    2,442
    جھنڈا:
    UnitedStates
    موڈ:
    Brooding
    خیر اوپر والے کوڈ‌ میں‌ تحاریر دوبارہ نظر آنے کی وجہ تو مجھے معلوم ہو گئی ہے، وجہ یہ ہے کہ ورڈپریس WP_Query اور Post_query دونوں کو الگ الگ لوپ مانتا ہے ، مطلب اگر میں کوئی Variable کسی ایک میں بناوں تو وہ دوسرے loop میں کام نہیں کرے گا، سو دوسرے لوپ میں بھی زمرہ کو WP_Query سے بلانا پڑے گا ، پھر شائد تحاریر دو بار ظاہر نہیں ہوں ۔
    اب صرف Un-Expected T_else کا مسلہ رہ گیا ہے؟
     
  4. زیک

    زیک محفلین

    مراسلے:
    38,882
    جھنڈا:
    UnitedStates
    موڈ:
    Bookworm
    جہانزیب آپ شاید else استعمال کرنا چاہتے ہیں نہ کہ elseif،
     
  5. جہانزیب

    جہانزیب محفلین

    مراسلے:
    2,442
    جھنڈا:
    UnitedStates
    موڈ:
    Brooding
    شکریہ زیک ، اصل میں‌ یہاں‌ مکمل اور درست کوڈ‌ نہیں‌ لکھا تھا جلدی میں‌ ، else if کے بعد else استعمال کرنے کی کوشش کر رہا تھا ۔ لیکن آج کا پورا دن اس پر ضائع کرنے کے بعد ایک بات معلوم ہوئی ہے کہ ورڈپریس کے ذریعے ایسا ہو تو جاتا ہے، لیکن جوکھم کا کام ہے، اگر تو آپ ایک ہی زمرہ کی تحاریر اور بعد میں تازہ تحاریر رکھیں تو اوپر جیسے کوڈ سے آرام سے ہو جاتا ہے ۔ لیکن تازہ تحاریر کے علاوہ تین چار زمرہ جات کی تحاریر دکھانا مقصود ہو تو سب کا لوپ الگ سے بنانا ہے، پھر اسکا انتظام کرنا کہ کوئی تحریر دوبار نہیں آئے جوئے شیر لانے کے مترادف ہے ۔ البتہ میں نے ایک دوسرے طریقہ سے تقریباً ملتا جلتا نتیجہ حاصل کر لیا ہے، بالکل ویسا تو نہیں جیسا میں چاہتا تھا، لیکن اِس سے قریب تر ہے ۔ اِس میں مسلہ صرف یہ رہ گیا ہے کہ اگر کوئی تحریر ایک سے زائد زمرات میں موجود ہو، تو اسے صرف ایک ہی جگہ کیسے دکھایا جائے، جبکہ باقی متعلقہ زمرات میں وہ نظر نہیں آئے ۔ ایک طریقہ ذہن میں ہے لیکن اب اگلے ہفتہ اُسے دیکھوں گا ۔
     

اس صفحے کی تشہیر