فكرة تصميم جداول لاستبيان متعدد المدخلات
نشاهد الكثير من المواقع تسأل زوارها عن بعض الموضوعات ؟ ولكن العرض لهذا التصويت قديم وعقيم ولا يعطي الزائر حرية في إبداء ما عنده في هذا الموضوع .
فالزائر قد يرى أن هناك بنداً تم تجاهله أو الغفلة عنه ؟ أو عنده ما يقوله في سبب اختياره ، ويرى أنه مهم !!
سنعطي أمثلة على استبيان وفقراته حتى تتضح صورته
الاستبيان عند القارئ في صفحة ويب :
يعطي فكرة وتصور عن الهدف والأهمية له 'info'
يحتوي على عدة فقرات ، كل فقرة لها بند أو عدة بنود، كل فقرة لها عنوان هو عبارة عن سؤال
فقرة ( 1 ) - مثلاً - : فيها عدة خيارات radio
وفقرة ( 2 ) : فيها select ويحدد خيار واحد ، مثلاً في أي دولة تسكن ؟
وفقرة رقم ( 2 ) لا تختلف عن الفقرة رقم ( 1 ) في طريقة التصميم ولكن تختلف في طريقة العرض .
وهاتين الفقرتين لا إشكال في تصميم قاعدة بياناتها
ولكن الإشكال في تصميم وتكييف الحل للفقرات التالية:
وفقرة ( 3 ) فيها أيضاً select multiple أي يستطيع أن يحدد عدة خيارات معاً
وفقرة ( 4 ) يدخل فيها رقماً مثلاً كم عمرك ؟
وفقرة ( 5 ) يدخل فيها نصاً ، مثلاً ما رأيك في ... ؟
فقرة ( 6 ) - مثلاً - : فيها عدة خيارات radio وسؤال عن سبب الاختيار أي أنه يدخل نصاً
جدول الاستبيان - الذي يجمع لفيف الفقرات - :
CREATE TABLE `polls` ( `id` tinyint(10) NOT NULL auto_increment, `poll` varchar(100) NOT NULL default '', -- عنوان الاستبيان `infoid` tinyint(4) NOT NULL default '0', -- رقم الفكرة `jdate` date NOT NULL default '0000-00-00', `timeout` date NOT NULL default '0000-00-00', -- وقت انتهاء الاستبيان `visible` smallint(1) NOT NULL default '0', -- هل الاستبيان ظاهر هنا يتم إخفاءه `close` smallint(1) NOT NULL default '0', -- إغلاق الاستبيان PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1;
بالنسبة لجدول مجموعة البنود
CREATE TABLE `GVotes` ( `id` tinyint(10) NOT NULL auto_increment, `pollid` tinyint(10) NOT NULL default '0', -- رقم الاستبيان `infoid` tinyint(4) NOT NULL default '0', -- رقم الفكرة `groupname` varchar(100) NOT NULL default '', -- نص السؤال(بند التصويت) `whyvoted` varchar(100) NOT NULL default '', -- سبب الاختيار `voters` tinyint(10) NOT NULL default '0', -- عدد المشاركين في الاستبيان (الأصوات) PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1;
بالنسبة لجدول خيارات التصويت
CREATE TABLE `votes` ( `id` tinyint(10) NOT NULL auto_increment, `gvid` tinyint(10) NOT NULL default '0', -- رقم المجموعة التي ينتمي إليها `vote` varchar(100) NOT NULL default '', -- نص السؤال(بند التصويت) `counter` tinyint(10) NOT NULL default '0', -- عدد المختارين لهذا البند PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1;
وهذا جدول النبذة وفيه يتم تخزين نبذة عن كل استبيان وعن كل مجموعة بنود إن إن أحب مدير الاستبيان ذلك
لأنه ليس كل استبيان أو مجموعة بنود يكون لها إيضاح
CREATE TABLE `infos` ( `id` tinyint(4) unsigned NOT NULL auto_increment, `info` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1;
أرجو من الأخوة الأعضاء المشاركة وإعطاء حلول لطريقة الاستبيان هذه