كيف تقوم بتعبئة زر راديو أو مربع المنسدلة عند التحرير من قاعدة بيانات؟

StackOverflow https://stackoverflow.com/questions/575116

سؤال

أعلم أن هذا سؤال مماثل لسؤال واحد بالفعل، لكنني كنت آمل في إجابات مختلفة على مشكلة. لدي نموذج حيث يمكنك تحميل مقالات جديدة إلى قاعدة بيانات جميع الأعمال الدقيقة الآس، رائعة، بريل. يستخدم النموذج قائمة منسدلة لنوع المقالة، لدي أخبار، القيل والقال، السفر، العروض وغيرها في صندوقي المنسدل. عند التحميل إلى DB، فسيؤدي فقط إلى إضافة العنصر المحدد، دعنا نقول، في هذه الحالة، أخبار.

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

نأمل أن تكون المنطقية. أعتقد أيضا استخدام أزرار الراديو يمكن أن يكون حلا ولكن لا يمكنني الحصول على ذلك لتعيين الزر المحدد بالقيمة في DB.

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

المحلول

يمكنك أن تفعل شيئا مثل هذا:

// array of available options
$available = array('news'=>'News', 'gosip'=>'Gosip', 'travel'=>'Travel', 'performances'=>'Performance');
// selected option value
$selected = 'news';
echo '<select name="article-type">';
foreach ($available as $val => $label) {
    echo '<option value="'.htmlspecialchars($val).'"';
    if ($val == $selected) {
        echo ' selected="selected"';
    }
    echo '>'.htmlspecialchars($label).'</option>';
}
echo '</select>';

نصائح أخرى

يبدو أنك تريد وضع أنواع المقالات في جدول أو شيء على طول هذه الخطوط.

ثم يمكنك تحميل المنسدلة من الجدول، وتقدم لتوزز مرجعا إلى معرف نوع المقالة في جدول المقالة.

على الإضافة، يجب أن تستعد جميع مقالات نوع معين بشكل أسرع قليلا كما كنت تقوم بعمل البحث عن المعرف.

يبدو لي مثل هذه مشكلة تصميم قاعدة البيانات أكثر من أي شيء آخر. التصميم الأساسي الخاص بك يبدو معيبا. أحاول استنتاج القضية من سؤالك حتى تحمل معي إذا كنت خارج المسار.

فيما يلي جزء ذي صلة من التصميم، كما ينبغي أن يكون، IMO:

الجدول: المقالات


ArticleID
ArticleContent
ArticleSubject (FK from Subjects)
..
..
.. Other columns.

الجدول: الموضوعات


SubjectID
SubjectDescription
..
..
.. Other columns.

لاحظ أنني اتصلت مواضيع الجدول الثاني لتوضيح أعمالي بشكل أفضل. وبهذه الطريقة، تتمتع كل مقالة بإشارة إلى نوع المادة (موضوع). الآن عند استرداد البيانات الخاصة ب "أنواع المقالات" القائمة المنسدلة، يمكنك ببساطة استرداد جميع الصفوف في الجدول الثاني، ثم قم بتعيين العنصر المحدد بناء على التحديد الحالي (من الجدول الأول.)

$options = array(,);
$selection = filter_input(INPUT_POST, 'what');
$blah = true; //i don't know what to name this.
foreach($options as $option) {
    echo '....';
    if(isset($blah) && $option === $selection) {
        echo 'selected="selected"';
        unset($blah);
    }
}

ربما هذا هو أسرع طريقة. أيضا إذا كنت ذاهبا للسرعة تأكد من الاستفادة من المعلمات المتعددة الصدى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top