Results 1 to 9 of 9
Hybrid View
-
14th March 2010 14:40 #1
Çàïèñ îò Checkbox â mySQL òàáëèöà / PHP
Çäðàâåéòå,
Èìàì åäèí ïðîáëåì.
Îò îòäåëíà òàáëèöà ñúñ êàòåãîðèè (òàáëèöàòà ñúäúðæà äâå ïîëåòà ID, Name) èçâåæäàì â îòäåëíè checkbox ïîëåòà èìåòî íà êàòåãîðèÿòà è êàòî ñòîéíîñò VALUE IDòî íà òàçè êàòåãîðèÿ. Â áàçàòà íà äàäåíèÿ îáåêò èñêàì äà ïðèñâîÿ êîëêîòî êàòåãîðèè, äàäåí ïîòðåáèòåë ñè å èçáðàë. Ñúçäàäîõ îòäåëíà òàáëèöà ñúñ âðúçêà ìíîãî êúì ìíîãî, â êîÿòî ùå ñå ñúõðàíÿâàò ID íà îáåêò è ID íà êàòåãîðèÿ.
Âúïðîñúò ìè å - Êàê äà ðàçáåðà êîè ÷åêáîêñîâå ñà îòìåòíàòè è êàê äà ãè çàïèøà â áàçàòà âñè÷êèòå, çàùîòî â ìîìåíòà ìè âàäè ñàìî ïîñëåäíèÿ ÷åêíàò. Ñïîðåä ìåí òðÿáàâà äà ñå íàïðàâè åäèí öèêúë , ÷ðåç êîéòî äà ñå îáõîæäàò âñè÷êèòå è äà ñå ñëåäè êîé å ÷åêíàò è àêî å äà ïóñêà çàÿâêà êúì áàçàòà, íî íåçíàì êàê äà ãî ðåàëèçèðàì. Íÿêîé àêî ìîæå äà äàäå èäåÿ.
Áëàãîäÿðÿ ïðåäâàðèòåëíî.
-
14th March 2010 16:56 #2
Çà name íà ãðóïàòà îò ÷åêáîêñîâå ñëàãàø íåùî îò ñîðòà íà name="categories[]", çà value ïî÷âàø äà èçðåæäàø ID-òàòà, ò.å. äà ñå ïîëó÷è íåùî îò ñîðòà íà:
<input type="checkbox" name="categories[]" value="1" />
<input type="checkbox" name="categories[]" value="2" />
<input type="checkbox" name="categories[]" value="3" />
Ïîñëå â ÐÍÐ-òî îáõîæäàø ìàñèâà $_POST['categories'] (èëè ñúîòâåòíî $_GET['categories']) ñ åäèí foreach è çà âñè÷êè value-òà, êîèòî ñè ïîëó÷èë â ìàñèâà - ïóñêàø çàÿâêà. Îñòàíàëèòå ÷åêáîêñîâå, êîèòî íå ñà ÷åêíàòè - íÿìà äà âëåçíàò â ìàñèâà.
P.S. Àêî íå ñúì ðàçáðàë òî÷íî êàêâî èñêàø - ïóñíè html êîäà è php êîäà, êîéòî ñè íàïðàâèë äî ìîìåíòà çà äà ñòàíå ïî-ÿñíî êàêâî öåëèø.Ëþáèìî ïèòèå çàïî÷âàùî ñ áóêâàòà 'Ê'? * Êàñà áèðà *
Àêî ìîæåø äà ëåæèø íà ïîäà áåç äà òè ñå íàëàãà äà ñå äúðæèø - âñå îùå ÍÅ ñè ïèÿí!
Äàâàéòå ñëåäâàùàòà Êàñà...
-
14th March 2010 17:30 #3
Ïîëëó÷è ñå !!!
if(isset($_POST['checkbox']))
{
foreach ($_POST['checkbox'] as $value){
$checkbox= $_POST['checkbox'];
$n = count($checkbox);
$i = 0;
}
while ($i < $n)
{
$id_query = "INSERT into tbl(obj_id, category_id) VALUES ('$id_obj', '$checkbox[$i]]')";
mysql_query($id_query) or die(mysql_error());
$i++;
}
}
-
14th March 2010 18:42 #4
À êúäå ìè å áèðàòà?

Òîÿ foreach äåòî ñè ãî íàïðàâèë â ìîìåíòà å àáñîëþòíî áåçñìèñëåí.
È òîÿ while òðÿáâà äà å for öèêúë.
Ñëåä ìàëêî ùå òè ïóñíà ïðåðàáîòåí êîä.
---------- Post added at 18:42 ---------- Previous post was at 18:34 ----------
Åòî òè ãî êîäà. Ïðîìåíëèâàòà $id_obj íå çíàì îò êúäå ÿ âçèìàø, íî àêî â áàçàòà ñè ñëîæèë AUTO_INCREMENT, òî çàÿâêàòà òðÿáâà äà òè å áåç ïîäàâàíå íà ID.
À àêî ïîëåòî category_id òè å îò òèï integer - ìîæå äà ìàõíåø åäèíè÷íèòå êàâè÷êè îêîëêî $value â çàÿâêàòà.
PHP Code:<?php
if (isset($_POST['checkbox'])) {
foreach ($_POST['checkbox'] as $value){
//$value = mysql_real_escape_string($value); //òîâà ãî ïîëçâàø ïðåäè äà âêàðâàø â áàçàòà íÿêàêâè äàííè, ðàçëè÷íè îò integer
$value = intval($value);
$id_query = "INSERT into tbl(obj_id, category_id) VALUES ('$id_obj', '$value')";
mysql_query($id_query) or die(mysql_error());
}
}
?>Ëþáèìî ïèòèå çàïî÷âàùî ñ áóêâàòà 'Ê'? * Êàñà áèðà *
Àêî ìîæåø äà ëåæèø íà ïîäà áåç äà òè ñå íàëàãà äà ñå äúðæèø - âñå îùå ÍÅ ñè ïèÿí!
Äàâàéòå ñëåäâàùàòà Êàñà...
-
14th March 2010 18:48 #5
×å å áåçñìèñëåí â ñëó÷àÿ, òàêúâ å, àìà ñïîðåä ìåí ñ foreach òàêà èëè èíà÷å ùå ñè å ïî-äîáðå.
foreach ($_POST['checkbox'] as $value) {
// tuk wkarvash prosto w DB VALUES ($id_obj, $value)
}
êàòî ðàçáèðà ñå ñàíèòèðàø òâà $value ïðåäè òâà äà å ñèãóðíî ÷å å integer, ïî íÿêàêúâ íà÷èí.
vbTheKing:
"Ïðîìåíëèâàòà $id_obj íå çíàì îò êúäå ÿ âçèìàø, íî àêî â áàçàòà ñè ñëîæèë AUTO_INCREMENT, òî çàÿâêàòà òðÿáâà äà òè å áåç ïîäàâàíå íà ID."
- Òîâà ÿâíî ìó å äðóãàòà êîìïîíåíòà âúâ âðúçêàòà ìíîãî-êúì-ìíîãî, áåç íåÿ íÿìà êàê äà ìèíå àêî èñêà äà ðàáîòè òàáëèöàòà. Äàæå ñìèñúë îò auto_increment â ñëó÷àÿ íÿìà, îñâåí àêî íå èñêà äà ñè èìà åäíî ID ñ öåë ïî-öåíòðàëèçèðàíî óïðàâëåíèå íà çàïèñèòå ñ ïî-îáùè ìåòîäè àêî ñè å ðàçðàáîòèë.
Àç äîêàòî ïèøà òè ñè äîáàâèë êîäà è îáùî âçåòî ñúùèòå íåùà ñè êàçàë
-
14th March 2010 22:16 #6
Çà ìîìåíòà ðàáîòè òîâà íàé ãîðå êîåòî ñúì ïîñòíàë. Ïðîìåíëèâàòà $id_obj e IDòî îò äðóãàòà òàáëèöà. Ùå òåñòâàì è ãîðíèòå ïðèìåðè.
Áëàãîäàðÿ !!!
-
14th March 2010 22:44 #7
Òî ìîæå äà ðàáîòè, àìà ÿâíî íå ðàçáèðàø êàê ðàáîòè... Òîÿ foreach äåòî ñè íàïðàâèë òè å àáñîëþòíî èçëèøåí. Ìîæåø äà ãî ìàõíåø è äà íàïèøåø:
$checkbox= $_POST['checkbox'];
$n = count($checkbox);
$i = 0;
Ðåçóëòàòà ùå å ñúùèÿ, äàæå ñêðèïòà ùå ñå èçïúëíè ñ íÿêîëêî ìèêðîñåêóíäè ïî-áúðçî, çàùîòî íå âúðòèø èçëèøåí öèêúë.
while-à ñúùî ãî èçïîëçâàø íåïîäõîäÿùî.  ñëó÷àÿ ïî-ëîãè÷íî å èçïîëçâàíåòî íà for öèêúë, à èìåííî:
for ($i=0; $i < $n; $i++) {
}
Äà íå ãîâîðèì, ÷å íå ìèñëèø çà òîâà êàêâè äàííè âëèçàò â áàçàòà. Àêî èñêàø, äàé ìè ëèíê êúì äåìî íà òîâà, êîåòî ñè íàïðàâèë â ìîìåíòà, èçïîëçâàéêè ãîðíèÿ (òâîÿ) êîä è ùå òè äåìîíñòðèðàì êàê ñå äðîïâà áàçà äàííè.Ëþáèìî ïèòèå çàïî÷âàùî ñ áóêâàòà 'Ê'? * Êàñà áèðà *
Àêî ìîæåø äà ëåæèø íà ïîäà áåç äà òè ñå íàëàãà äà ñå äúðæèø - âñå îùå ÍÅ ñè ïèÿí!
Äàâàéòå ñëåäâàùàòà Êàñà...
-
14th March 2010 23:24 #8
-
15th March 2010 01:38 #9
DonDale, èçâèíÿâàé òîâà, êîåòî ùå êàæà, íå å íèùî ëè÷íî.
Ïîñëå çàùî íà PHP ìó å òðúãíàëà òàêàâà ñëàâà, è õîðàòà, ïèøåùè íà íåãî êàòî ÷å ëè èìàò ñëàâà ïðîñòî íà äðàñêà÷è íà íåùà êîëêîòî äà òðúãíàò òàì, çàêúðïåíè, çàøèòè, çàëåïåíè ñ ïëþíêà, àìà âúðâÿùè.
Êîäúò, êîéòî ñè äàë íàãîðå å èçâúí ðàçóìíàòà ëîãèêà äîðè íà íà÷èíàåù ïðîãðàìèñò äåòñêà âúçðàñò. Ñòåãíè ñå.
Îò äðóãà ñòðàíà íà âñåêè ìîæå äà ñå ñëó÷è òàêîâà íåùî
. Ïðîñïàë, çàêúñíÿë, íà 5 áèðè, íà 3 êîíÿêà..  ñëó÷àÿ îáà÷å åäâà ëè ñè íà 5 áèðè
.
Îíÿ foreach çà êàêâî ãî âúðòèø, áè ëè ñïîäåëèë?
Êîëêîòî äî çàìÿíàòà íà foreach ñ for êàêòî ïðåïîðú÷âà vbTheKing, èìà ñìèñúë ìîæå áè ïî-ñêîðî àêî öåäèø èçïàðåíèÿ îò ïðîèçâîäèòåëíîñò, èëè ñàéòà ùå å íà ðúáà íà íàòîâàðâàíåòî, òîãàâà çà 5-10-20-50 èòåðàöèè íà öèêúëà ìîæå è äà ñå çàáåëåæàò ìèêðîñåêóíäè åôåêòèâèçèðàíå. Íî êàòî ãëåäàì òàêèâà îïòèìèçèðàíèÿ çàñåãà âåðîÿòíî ùå òè äîéäàò ìíîãî, òè ïúðâî ñè îïðàâè êîäà äåòî ïîëçâàø, è äà, íåäåé äà äàâàø êúäå òî÷íî ïîëçâàø òîçè êîä àêî èñêàø äà ñè çàïàçèø áàçàòà ïî ìåòîä security through obscurity
.




Reply With Quote

Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè