Помощ за php код

Noxy

Registered
Малко ми е сложно да Ви го обясня...

Значи имам си адресче list.php?cat=bob
$cat=$_GET['cat']; и $cat ми е равно на bob

обаче искам да стане list.php?cat=bob,zele

и да стане $cat[1]=bob $cat[2]=zele

и после $cat[] да се използва по някякъв начин долу

if($cat!=""){$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN('$cat[]')";
$result=mysql_query($query);
$catidd=mysql_result($result,0,"id");}

благодаря предварително
 
Мисля че те разбрах.
Горе адреса трябва да е cat[] = alabala
Не ги махай тези [] !
Ако искаш да имаш повече стойности за cat:
list.php?cat[]=1&cat[]=2&cat[]=3
и т.н.
Относно SQL-a.
Направи така:

Код:
$cat = $_GET['cat'];
if ( !$cat){
} else {
foreach ( $cat as $value){

$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN('$value')";
$result=mysql_query($query);
$catidd=mysql_result($result,0,"id");

}
}

Би трябвало да проработи :?:
 
Noxy каза:
Малко ми е сложно да Ви го обясня...

Значи имам си адресче list.php?cat=bob
$cat=$_GET['cat']; и $cat ми е равно на bob

обаче искам да стане list.php?cat=bob,zele

и да стане $cat[1]=bob $cat[2]=zele

и после $cat[] да се използва по някякъв начин долу

if($cat!=""){$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN('$cat[]')";
$result=mysql_query($query);
$catidd=mysql_result($result,0,"id");}

благодаря предварително




$cat=$_GET['cat'];
$masiv= explode (",",$cat );

После $masiv[0] ще е равно на bob а $masiv[1] ще е равно на zele

Пробвай.
 
Забравих да кажа само че искаш да ти се създават тези cat[] и полетата в form-a трябва да са такива. Т.е. name=cat[] .
Пример:

Код:
<form method="get" action="list.php">
<input type="checkbox" name="cat[]" value="1">
<input type="checkbox" name="cat[]" value="2"> 2
<input type="checkbox" name="cat[]" value="3"> 3
<input type="checkbox" name="cat[]" value="4"> 4
<input type="submit">
</form>
 
ето щое малко работа :)


if ( !$cat){
} else {
$masiv=explode (",",$cat );
foreach ( $masiv as $value){

$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN('$value')";
$result=mysql_query($query);
$catidd[]=mysql_result($result,0,"id");

}

}
сега същото нещо самоче за $catidd[] долу ?


$sqlline = "SELECT COUNT(category) AS count_cat FROM " . $tprefix . "news WHERE category IN ('$catidd')";
$numresults = mysql_query($sqlline) or die(mysql_error());
$numrows = mysql_result($numresults,"count_cat");
 
Noxy каза:
ето щое малко работа :)


if ( !$cat){
} else {
$masiv=explode (",",$cat );
foreach ( $masiv as $value){

$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN('$value')";
$result=mysql_query($query);
$catidd[]=mysql_result($result,0,"id");

}

}
сега същото нещо самоче за $catidd[] долу ?


$sqlline = "SELECT COUNT(category) AS count_cat FROM " . $tprefix . "news WHERE category IN ('$catidd')";
$numresults = mysql_query($sqlline) or die(mysql_error());
$numrows = mysql_result($numresults,"count_cat");


ммм тоя foreach ( $masiv as $value) за какво си го сложил там?
синтаксиса на in e следния: in (1,3,5) като това:
$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN(1,3,5)";
работи по следния начин:
селектирай ми колоната ид от таблица тпрефикс ако keyword = 1 и ако е = 3 и ако е равно на 5

това което ти правиш със foreach ( $masiv as $value) е следното:
$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN(1)";
$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN(3)";
$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN(5)";
цели три отделни заявки

уф обърках се. Това $cat не ти ли идва като масив?
ако е масив, защо не направиш така:
if ($cat){
$masiv=implode(',',$cat);
$query="SELECT `id` FROM " . $tprefix . "category WHERE keyword IN($masiv)";
$result=mysql_query($query);
while($row=mysql_result($result)) {
//и тука вече си правиш каквото там си правиш с тия данни
}
}

а за долната заявка дето бройш редовете, по добре брой ид-тата, защото autoincrement колоните са индексирани.
 
Няма нужда да ползваш и explode и foreach.
Избери си един вариант и него ползвай ;)
Просто в единия случай ще е:
?cat=zele,marulq
а в другия:
?cat[]=zele&cat[]=marulq

:wink:
 
Нещо може ли да се опрости ?


Код:
if ( $cat){
$masiv=explode (",",$cat );

$WHERE = '(';
foreach ($masiv as $value) {
 $WHERE .= "'".$value."', ";
}
$WHERE = rtrim($WHERE, ", ").")";

$sqles2 = mysql_query("SELECT * FROM " . $tprefix . "category WHERE keyword IN ".$WHERE."");
            if ($sqles2)
            {
                  while($row = mysql_fetch_array($sqles2))
                  {
                  $catidd[]=$row[id];
                 

}

}

$WHERE2 = '(';
foreach ($catidd as $value) {
 $WHERE2 .= "'".$value."', ";
}
$WHERE2 = rtrim($WHERE2, ", ").")";
	$sqlline = "SELECT COUNT(category) AS count_cat FROM " . $tprefix . "news WHERE category IN ".$WHERE2."";
 $numresults = mysql_query($sqlline) or die(mysql_error());
   $numrows = mysql_result($numresults,"count_cat"); 
} else{$numrows=0;}
 

Back
Горе