[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывести из mysql название колонок
DarkGuy
Добрый день!
есть таблица mysql
user posted image
Хочу Вывести из mysql название колонок где есть 1(т.е я про 20,30,40 и т.д. Их число и названия рандомны) при том только из определенной строки.

Не могу составить запрос, помогите пожалуйста.



Спустя 1 час, 12 минут, 47 секунд (12.05.2012 - 11:14) Kuliev написал(а):
DarkGuy
А можно по подробней, а то я что то не понял сути вопроса. Что нужно сделать конкретней!

Спустя 2 минуты, 24 секунды (12.05.2012 - 11:16) dadli написал(а):
DarkGuy
а название поля, где ви искаете число "1" всегда будит числовоми?

Спустя 2 минуты, 9 секунд (12.05.2012 - 11:18) Kuliev написал(а):
DarkGuy
mysql_field_name — Возвращает название указанной колонки результата запроса

Спустя 2 минуты, 52 секунды (12.05.2012 - 11:21) DarkGuy написал(а):
Цитата (Kuliev @ 12.05.2012 - 07:14)
DarkGuy
А можно по подробней, а то я что то не понял сути вопроса. Что нужно сделать конкретней!

Допустим $_GET['ID'] = 2 , то из строки где id = 2 , выбираются названия колонок где их содержимое равно 1(т.е. 10 и 20) и заносятся в массив к примеру.


а название поля, где ви искаете число "1" всегда будит числовоми?
угу

Спустя 4 минуты, 19 секунд (12.05.2012 - 11:25) DarkGuy написал(а):
Цитата (Kuliev @ 12.05.2012 - 07:18)
DarkGuy
mysql_field_name — Возвращает название указанной колонки результата запроса

насколько я понял, несколько не то

Спустя 40 секунд (12.05.2012 - 11:26) DarkGuy написал(а):
Цитата (dadli @ 12.05.2012 - 07:16)
DarkGuy
а название поля, где ви искаете число "1" всегда будит числовоми?

Да

Спустя 2 минуты, 44 секунды (12.05.2012 - 11:29) NitroGenerate написал(а):
SELECT name FROM 2950_stoune WHERE `10`=1 or `12`=1 or `14`=1 or `20`=1 or `30`=1 or `40`=1

Спустя 1 минута, 40 секунд (12.05.2012 - 11:30) DarkGuy написал(а):
Цитата (NitroGenerate @ 12.05.2012 - 07:29)
SELECT name FROM 2950_stoune WHERE `10`=1 or `12`=1 or `14`=1 or `20`=1 or `30`=1 or `40`=1

проблема в том что количество колонок может изменяться, как и их названия.
Т.Е. Может добавиться колонка 140
Так что такой вариант не подходит.

Спустя 6 минут, 38 секунд (12.05.2012 - 11:37) NitroGenerate написал(а):
тогда в 2 этапа с использованием php
SHOW COLUMNS FROM 2950_stoune
Все числовые поля в массив.
Затем массив в SQL запрос который я написал выше

Спустя 4 минуты, 41 секунда (12.05.2012 - 11:42) DarkGuy написал(а):
Цитата (NitroGenerate @ 12.05.2012 - 07:37)
тогда в 2 этапа с использованием php
SHOW COLUMNS FROM 2950_stoune
Все числовые поля в массив.
Затем массив в SQL запрос который я написал выше

блин.... сдохнуть можно.

Спасибо! Сейчас попробую

Спустя 3 минуты, 2 секунды (12.05.2012 - 11:45) rooor написал(а):
удалил))

Спустя 22 минуты, 13 секунд (12.05.2012 - 12:07) dadli написал(а):
$table_name = 'your_table';
$array = array();
$_GET['id'] = 2;


$res = mysqli_query($db,"
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '
$table_name'
"
) or die(mysqli_error($db));

while ($row = mysqli_fetch_row($res)) {
array_push($array ,$row[0]);
}


$sql = '';
foreach ($array as $val) {
$sql = $sql." "."SELECT '$val' AS name FROM $table_name WHERE $val = 1 AND id = ".$_GET['id']."
UNION ALL"
;
}
$sql = substr($sql,0,-strlen(' UNION ALL'));




$res = mysqli_query($db,"SELECT name FROM ($sql) AS t") or die(mysqli_error($db));
while ($row = mysqli_fetch_row($res)) {
echo $row[0].'<br>';
}

Спустя 16 минут, 47 секунд (12.05.2012 - 12:24) DarkGuy написал(а):
Цитата (dadli @ 12.05.2012 - 08:07)
$table_name = 'your_table';
$array = array();
$_GET['id'] = 2;


$res = mysqli_query($db,"
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '
$table_name'
"
) or die(mysqli_error($db));

while ($row = mysqli_fetch_row($res)) {
array_push($array ,$row[0]);
}


$sql = '';
foreach ($array as $val) {
$sql = $sql." "."SELECT '$val' AS name FROM $table_name WHERE $val = 1 AND id = ".$_GET['id']."
UNION ALL"
;
}
$sql = substr($sql,0,-strlen(' UNION ALL'));




$res = mysqli_query($db,"SELECT name FROM ($sql) AS t") or die(mysqli_error($db));
while ($row = mysqli_fetch_row($res)) {
echo $row[0].'<br>';
}

о спасибо!!!!!!!!!!!!

жалуется на

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '$table_name'
") or die(mysqli_error($db));

Спустя 54 секунды (12.05.2012 - 12:25) DarkGuy написал(а):
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/www/z213238/htdocs/users_stoune/lib/user_stoune.lib.php on line 66

Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /home/www/z213238/htdocs/users_stoune/lib/user_stoune.lib.php on line 66

Спустя 7 минут, 48 секунд (12.05.2012 - 12:32) DarkGuy написал(а):
а я уже стал делать так=)
$query5 = "SHOW COLUMNS FROM  `".$dbpf."_stoune` ";
$sql5 = mysql_query($query5) or die(mysql_error());
while ($row5=mysql_fetch_array($sql5)) {
unset( $row5[id], $row5[ name], $row5[foto], $row5[faktura], $row5[brend]);
foreach($row5 as $key => $value) {
print "<pre>$key => $value\n </pre>";
}

}

Спустя 2 минуты, 52 секунды (12.05.2012 - 12:35) olgatcpip написал(а):
Цитата
проблема в том что количество колонок может изменяться, как и их названия.

SHOW FIELDS FROM $table

Попробуй этот запрос выполнить, должен дать названия полей. Эти поля возьмешь, удалишь из списка те, которые точно не подходят и можно сунуть оставшиеся в запрос через OR.

Спустя 57 минут, 6 секунд (12.05.2012 - 13:32) NitroGenerate написал(а):
Может быть так?
$query_col=mysql_query("SHOW COLUMNS FROM  `".$dbpf."_stoune`");
$sel_arr=array();
while($res_col=mysql_fetch_array($query_col)) {
if ($res_col['Field']>0){
$sel_arr[]='`'.$res_col['Field'].'`=1';
}
}

$sel_arr = implode(" or ", $sel_arr);
$query_table=mysql_query("SELECT id, name, foto, faktura FROM `".$dbpf."_stoune` where ".$sel_arr);
while($res=mysql_fetch_array($query_table)) {
echo "<br />id=".$res['id'].", name=".$res['name'].", foto=".$res['foto'].", faktura=".$res['faktura'];
}

Спустя 8 минут, 21 секунда (12.05.2012 - 13:41) rooor написал(а):
NitroGenerate
Ему строки не нужны
Цитата
Хочу Вывести из mysql название колонок где есть 1

Спустя 4 минуты, 36 секунд (12.05.2012 - 13:45) DarkGuy написал(а):
Чудесами


$spisok2 = array();
$spisok = array();
$query2 = "SELECT *
FROM `"
.$dbpf."_tolshina`";
$sql2 = mysql_query($query2) or die(mysql_error());
$spisok2[] = "`id`";
while ($row2=mysql_fetch_assoc($sql2))
{
$spisok2[] = "`".$row2['name']."`";
$spisok[] = "`".$row2['name']."` = '".addslashes('1')."'";
}
// print_r($spisok);
$spisok2 = count($spisok2) > 0 ? ' '.implode(' , ', $spisok2) : '';
$spisok = count($spisok) > 0 ? ' WHERE `id` = "'.addslashes($_GET['id_stoune']).'" AND '.implode(' or ', $spisok) : '';
// print_r($spisok);

$query3 = "SELECT ".$spisok2." FROM `".$dbpf."_stoune` ".$spisok."";

print_r($query3);



получил запрос

SELECT `id` , `30` , `20` , `10` , `12` , `14` , `40`
FROM `2950_stoune`
WHERE `id` = "3"
AND `30` = '1'
or `20` = '1'
or `10` = '1'
or `12` = '1'
or `14` = '1'
or `40` = '1'


теперь туплю, как получить имена колонок.


$dbpf."_tolshina - содержит все нужные числа от 10 до 40
Быстрый ответ:

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