[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подстановка данных из масива в запрос.
igorianru
добрый день, в масиве как видите числа через запятую, нужно в запрос поочерёдно подставить эти все три числа. я чтото тут нахемичил у меня не получилось. помогите превратить это в правильный вид. спасибо.

<?php
$idd=array(21,22,23);

if ( isset($_GET['letter']) and array($_GET['$idd']) ) {
$query = "SELECT * FROM `catalog` WHERE id_catalog = '".$_GET['$idd']."' ";
$sql = mysql_num_rows($query);



do{

?>
<?=
$sti['name'];?>

<?
}


while ($sti = mysql_fetch_array ($sql));}
?>




Спустя 7 минут, 45 секунд (23.04.2012 - 10:48) TranceIT написал(а):
А как взаимосвязаны ваш массив $idd и массив $_GET?

Спустя 4 минуты, 39 секунд (23.04.2012 - 10:53) igorianru написал(а):
я гдето пример нашол подставил своё и ничего не вышло. я выложик кракозябру которую намутил, если знаете как правильно то напишите

Спустя 5 минут, 26 секунд (23.04.2012 - 10:58) TranceIT написал(а):
У меня есть желание помочь, но нет желания пересказывать мануал.
Почитайте основы PHP про работу с массивами, а так же откуда берутся массивы $_GET и $_POST и с чем их едят.

Если вы хотите научиться разработке на PHP пишите код сами, а не выдирайте куски из увиденных листингов в интернете.

Спустя 13 минут, 38 секунд (23.04.2012 - 11:12) igorianru написал(а):
ещё тут же вопрос. первый вопрос распечатывает как нужно все три числа отдельно а второй распечатывает эти три чиста одной строкой. как тут быть, что сделать нужно чтобы во втором распечатывалась также как и в первом??



$idd=array(21,22,23);
print_r(array_chunk($$idd));
foreach($idd as $letter){
echo "<p><a href='".$_SERVER['PHP_SELF']."?letter=".$letter."'>".$letter."</a></p>";}


$totalidvs='21,22,23';
$idd=array($totalidvs);
print_r(array_chunk($$idd));
foreach($idd as $letter){
echo "<p><a href='".$_SERVER['PHP_SELF']."?letter=".$letter."'>".$letter."</a></p>";}

Спустя 14 минут, 34 секунды (23.04.2012 - 11:26) TranceIT написал(а):
В чем разница между
$idd = array(21,22,23);

и
$idd = '21,22,23';


???

Спустя 22 минуты, 41 секунда (23.04.2012 - 11:49) igorianru написал(а):
вот вы мне и ответте на этот вопрос.


так не работает

$idd='21,22,23';

foreach($idd as $letter){
echo "<p><a href='".$_SERVER['PHP_SELF']."?letter=".$letter."'>".$letter."</a></p>";}



так работает

$idd=array(21,22,23);

foreach($idd as $letter){
echo "<p><a href='".$_SERVER['PHP_SELF']."?letter=".$letter."'>".$letter."</a></p>";}

Спустя 5 минут, 1 секунда (23.04.2012 - 11:54) TranceIT написал(а):
igorianru
Цитата (TranceIT @ 23.04.2012 - 10:58)
У меня есть желание помочь, но нет желания пересказывать мануал.


Цитата (igorianru @ 23.04.2012 - 11:49)
вот вы мне и ответте на этот вопрос.

Спустя 4 минуты, 22 секунды (23.04.2012 - 11:58) Renden написал(а):
igorianru

$str = '21,22,23';
$idd = explode(',', $str);
foreach($idd as $letter)
echo "<p><a href='".$_SERVER['PHP_SELF']."?letter=".$letter."'>".$letter."</a></p>";

PS разница в том что в 1 варианте у вас строка, во 2-м варианте у вас массив. foreach не работает со строками, нужно преобразовать строку в массив а затем уже разбирать.

Спустя 8 минут, 5 секунд (23.04.2012 - 12:06) igorianru написал(а):
Renden спасибо тебе добрый человек!

Спустя 26 минут, 50 секунд (23.04.2012 - 12:33) igorianru написал(а):
Renden к вам вопрос точнее прозьба. помогите доработать. ну или кто знает тоже жду от вас помощи.

<?php if (isset($_GET['totalidvss'])) {$totalidvss = $_GET['totalidvss']; if ($totalidvss== '') ;}  

$str = $totalidvss;
$idd = explode(',', $str);
foreach($idd as $letter){

$query = "SELECT * FROM `catalog` WHERE id_catalog = '".$letter."' ";
$sql = mysql_num_rows($query);

do{?>

<?=
$sti['name'];?>

<?
}

while ($sti = mysql_fetch_array ($query));}
?>

Спустя 5 минут, 24 секунды (23.04.2012 - 12:39) HErATuB написал(а):
Цитата (igorianru @ 23.04.2012 - 10:33)
Renden к вам вопрос точнее прозьба. помогите доработать. ну или кто знает тоже жду от вас помощи.

<?php if (isset($_GET['totalidvss'])) {$totalidvss = $_GET['totalidvss']; if ($totalidvss== '') ;}  

$str = $totalidvss;
$idd = explode(',', $str);
foreach($idd as $letter){

$query = "SELECT * FROM `catalog` WHERE id_catalog = '".$letter."' ";
$sql = mysql_num_rows($query);

do{?>

<?=
$sti['name'];?>

<?
}

while ($sti = mysql_fetch_array ($query));}
?>

Что за ужас
Брать строку переводить в массив
Обработать массив по очередной причем сразу же обращаться к базе в цыкле массива которая переписывает переменую на последний результат
=DDD спасибо посмеялся

Спустя 2 минуты, 26 секунд (23.04.2012 - 12:41) igorianru написал(а):
да верю что ужас))) плиз, сделайте мне это дело по человечески))

Спустя 16 секунд (23.04.2012 - 12:41) HErATuB написал(а):
да тем более вероятность взлома 100%)

Спустя 9 минут, 42 секунды (23.04.2012 - 12:51) TranceIT написал(а):
igorianru
А вы мануал почитали?

Спустя 42 секунды (23.04.2012 - 12:52) HErATuB написал(а):
Если приходит гет вида: 21,22,23 то должно сработать

<?php
if (isset($_GET['totalidvss'])){
$text_to_check = $_GET['totalidvss'];
$text_to_check = strip_tags($text_to_check);
$text_to_check = htmlspecialchars($text_to_check);
$text_to_check = stripslashes($text_to_check);
$text_to_check = addslashes($text_to_check);
$query = "SELECT * FROM `catalog` WHERE id_catalog in (".$text_to_check.");";
$queryQ = mysql_query($query);
$sql = mysql_num_rows($queryQ);

}

?>

Спустя 8 минут, 46 секунд (23.04.2012 - 13:01) igorianru написал(а):
Скинте инфу если не сложно которая на ваш взгляд поможет меня просвятить и я смогу доделать свой скрипт

Спустя 1 минута, 45 секунд (23.04.2012 - 13:02) TranceIT написал(а):

Спустя 6 минут, 59 секунд (23.04.2012 - 13:09) HErATuB написал(а):
напиши полностью что тебе нужно и куда

Спустя 19 минут, 24 секунды (23.04.2012 - 13:29) igorianru написал(а):
приходит гет вида: 21,22,23

нужно создать запрос

$query = mysql_query("SELECT * FROM catalog WHERE id_catalog='$letter' ");
$sql = mysql_fetch_array($query);


в базу чобы поочерёдно эти числа подставлялист в id_catalog=' ' и там уже я выведу нужные мне данные.



так выводит эти три числа раздельно.
<?php if (isset($_GET['totalidvss'])) {$totalidvss = $_GET['totalidvss']; if ($totalidvss== '') ;}  

$str = $totalidvss;

$idd = explode(',', $str);
foreach($idd as $letter)

echo='$letter';

Спустя 11 минут, 19 секунд (23.04.2012 - 13:40) Renden написал(а):
igorianru

if(isset($_GET['totalidvss']))
{
$id = array();
$idd = explode(',', $_GET['totalidvss']);
foreach($idd as $letter)
$id[] = (int)$letter;
$query = mysql_query("SELECT * FROM `catalog` WHERE id_catalog IN (".implode(',', $id).")");
while($row = mysql_fetch_assoc($query))
{
//Вывод думаю сами напишете
}
}

Спустя 8 минут, 27 секунд (23.04.2012 - 13:48) HErATuB написал(а):

if (isset($_GET['totalidvss'])){

Если гет существует то делаем следующие

$text_to_check = $_GET['totalidvss'];
$text_to_check = strip_tags($text_to_check);
$text_to_check = htmlspecialchars($text_to_check);
$text_to_check = stripslashes($text_to_check);
$text_to_check = addslashes($text_to_check);

защита от sql инекций и от тегов
    
$query = "SELECT * FROM `catalog` WHERE id_catalog in (".$text_to_check.");";
$queryQ = mysql_query($query);

Создаем 1 запрос с данными которыми тебе нужно. Не нужно делать несколько запросов чтобы вытягивать по одной строки так как это замедляет работу.
Ну вот и вывод:

while($row = mysql_fetch_array($queryQ)){
echo("<pre>");
print_r($row);
echo("<pre>");
}

Весь код:

if (isset($_GET['totalidvss'])){
$text_to_check = $_GET['totalidvss'];
$text_to_check = strip_tags($text_to_check);
$text_to_check = htmlspecialchars($text_to_check);
$text_to_check = stripslashes($text_to_check);
$text_to_check = addslashes($text_to_check);
$query = "SELECT * FROM `catalog` WHERE id_catalog in (".$text_to_check.");";
$queryQ = mysql_query($query);
while($row = mysql_fetch_array($queryQ)){
echo("<pre>");
print_r($row);
echo("<pre>");
}

}


Спустя 34 минуты, 52 секунды (23.04.2012 - 14:23) igorianru написал(а):
HErATuB ваш метод пишет ошибку в этой строке
$queryQ = mysql_query($query);

Renden ошибок не пишет в выводе пишу
echo $row["name"]; 
и ничего не происходит, ничего не вывилось гдето ту т наверное неправильно
id_catalog IN (".implode($id).")
в запросе пишу для проверки запроса самого id_catalog='20' то имя вытаскивается из базы
для интереса до строки
$id[] = (int)$letter; 
написал
echo $letter;
на экоан вывились числатоесть всё нормально там после стороки подставил
echo $letter; 
числа не вывелись

Спустя 16 минут, 1 секунда (23.04.2012 - 14:39) Renden написал(а):
igorianru
У меня ошибка синтаксическая я написал:
while($row = mysql_fecth_assoc($query))
А надо было:
while($row = mysql_fetch_assoc($query))

Выше поправил.

HErATuB
    $text_to_check = $_GET['totalidvss']; 
$text_to_check = strip_tags($text_to_check);
$text_to_check = htmlspecialchars($text_to_check);
$text_to_check = stripslashes($text_to_check);
$text_to_check = addslashes($text_to_check);

Это абсолютно не нужно, и лишнее, для того чтоб избежать SQL инъекции достаточно (int) для чисел, и mysql_real_escape_string() для всего остального.

Спустя 1 минута, 46 секунд (23.04.2012 - 14:41) igorianru написал(а):
Renden я ошибку у себя сразу исправил всё равно так как написал выше

Спустя 7 минут, 2 секунды (23.04.2012 - 14:48) Renden написал(а):
igorianru
Поправил выше, опять синтаксическая) Сорри писал на скорую руку просто)

Спустя 11 минут, 27 секунд (23.04.2012 - 15:00) igorianru написал(а):
AAAAA шикарно ! спасибо! Renden
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.