Парни, мужики, девушки - кароче весь народ. тут такое дело, у меня уже мозг кипит! Я тут мучаюсь с mssql (типом varbinary) суть такава: есть таблица в ней есть ечейка, с типом Varbinary Для начало, я туда забиваю какието данные - вот скрипт: PHP: <? require 'config.php'; $msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd"); $msdb=mssql_select_db("MuOnline",$msconnect); $query77 = "select * from MEMB_INFO WHERE memb___id = '$user'"; $result77 = mssql_query( $query77 ); $row1 = mssql_fetch_row($result77); if ($row1[35]!=1) { if ($row1[35]!=2) {echo "$user and $row1[35]";exit;}} ?><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body><? $ppp=time(); ?> <center> <font size="5">VAULT ACC</font><br> <form name="form666" method="post" action="st.php?id=indexadmin&ida=vault&OK"> Account <input name="login" type="text" id="login" maxlength="10"><br> Vault:<br> <textarea cols="30" rows="5" name="Otbor" id="Otbor"></textarea><br> <input type="submit" name="Submit" value="Готово"></form> </center> <br> --------------------------<br> <?php require 'config.php'; $msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd"); $msdb=mssql_select_db("MuOnline",$msconnect); $login = stripslashes($_POST['login']); $vault = stripslashes($_POST['Otbor']); $sql_username_check = mssql_query("SELECT memb___id FROM MEMB_INFO WHERE memb___id='$login'"); $username_check = mssql_num_rows($sql_username_check); if ($username_check <= 0){ echo "ТУТ БУДЕТ НАПИСАНО ЧТО ВСЕ ГУД!<br>"; } else { $msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd"); $msdb=mssql_select_db("MuOnline",$msconnect); $msquery = " UPDATE dbo.warehouse SET Items = CAST(0x$vault AS varbinary(1920)) WHERE AccountID = '$login'"; $msresults= mssql_query($msquery); include "config3.php"; $ip=getenv('remote_addr'); $zap="insert into `items` values('','$user','$vault','$ppp','$ip','$login')"; mysql_query($zap); echo "По идеи все гуд..."; } ?> <hr> <? include "config3.php"; $zap="select * from `items` WHERE admin = '$user' order by Date desc"; $res=mysql_query($zap); $number=mysql_num_rows($res); if ($number==0) {print "действий не происходило!";} else { ?> <table cellpadding="0" cellspacing="0" border="1"> <? while ($row=mysql_fetch_array($res)) { $date1=$row['Date']; $date=date("d.m.Y", $date1); ?> <tr> <td background="../image/bd_line_dark.jpg" ><?=$date?> </td> <td background="../image/bd_line_dark.jpg" ><?=$row['admin']?> </td> <td background="../image/bd_line_dark.jpg" ><?=$row['IP']?> </td> <td background="../image/bd_line_dark.jpg" ><?=$row['acc']?> </td> </tr> </table> <table cellpadding="0" cellspacing="0"> <tr> <td> <?=$row['item']?> </td> </tr> <? } ?></table><? } ?> </body> </html> А после мне требуеться, вывести из этой ячейки вбитую инфу, да мало того - надо еще произвести в ней поиск на поределенные значения, и вывести число совпадений. Помагите, если не трудно! Я че только не перерыл, но придумать сам немагу. :shock:
Это мой скрипт, он преднозначен чтоб забить в базу код HEX Например, я туда забиваю (1600FF008AB40E0000E0000000000000FFFFFFFFFFFFFFFFFFFF1600FF008AB40E0000E0000000000000FFFFFFFFFFFFFFFF1600FF008AB40E0000E0000000000000FFFFFFFFFFFFFFF1600FF008AB40E0000E0000000000000) и мне нужно вывести эти данные с этой базы (а так просто запросом их не выведешь, ведь они зашифрованы) и найти там следующие мы имееем код чегото "1600FF008AB40E0000E0000000000000" в нем значений 32 нужно определить следующие значения " 16****************E*************" где * это любое значение хоть 0 хоть Ф и определить количество. А теперь объесняю для чего это может быть нужно! Пускай у нас есть база онлайн игры, и есть ясчик, в нем есть вещи, у каждой вещи есть свой HEX код, и его нужно открыть и подсчитать сколько в нем определённых вещей (все вещи имеют 32 значения.)
Не надо меня учить, что такое му. Скрипт не твой, а если твой, моя бабушка на этом форуме не сидит. Учи ф-ции bin2hex() , decbin() и str_slice(). Данные в это случае, читаются по 2 байта.
Откуда такая уверенность что скрипт не мой? Я не собираюсь с тобой спорица, но Это был на мек что он старый, некудышный и касячный? Тогда придумаю более хороший скрипт, который (хотябы кушает также). и спс за это bin2hex() , decbin() и str_slice().
Я написал скрипт, он выводит и подсчитывает HEX значения, пускай не совершенин но работает. Но тут загвостка, в переменной $vault не все значения из ячейки Items. их там varbinary (1920) а выводит 512! Почему? как вывести всё??? плиз помогите! PHP: <? session_start(); if ($statuz<>1) {echo "Вы не авторизованы на сайте";exit;} session_register(statuz,vault2,creat); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Конфигурации account</title> </head> <body> <? if (!isset($log)) { require 'config.php'; $msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd"); $msdb=mssql_select_db("MuOnline",$msconnect); $query = "select Items from warehouse WHERE AccountID = '$userr_r'"; $result = mssql_query( $query ); $row=mssql_fetch_array($result); $vault= bin2hex($row['Items']); $creat=0; $vault1 = strstr($vault, "16"); $or2 = strpos ($vault1, "e",18); if ($or2 != false and $or2==18) { $creat=$creat+1; $vault2 = $vault1; echo "ПОДОЖДИТЕ ИДЕТ ПОДСЧЕТ!!!"; print ' <meta http-equiv=Refresh content="10; URL=st.php?id=userconf&log=yes"> '; } else {echo "Нету Creations в inventary"; $or1=1;} } if (isset($log)) { $vault2 = strstr($vault2, "e"); $vault2 = strstr($vault2, "16"); if ($vault2===false) {echo "ПОДСЧЕТ ЗАВЕРШОН!!!<br>у вас "; echo "$creat"; echo "в ясчике<br>";exit;} $or2 = strpos ($vault2, "e",18); if ($or2==18 and $or2 != false) {$creat=$creat+1; echo "ПОДОЖДИТЕ ИДЕТ ПОДСЧЕТ!!!"; print ' <meta http-equiv=Refresh content="3; URL=st.php?id=userconf&log=yes"> '; } else {echo "ПОДСЧЕТ ЗАВЕРШОН!!!<br>у вас "; echo "$creat"; echo "в ясчике<br>";} } ?> </body> </html> Скрипт хоть и грамосткий за то рабочий, я делал обычным циклом дак он вобще незапустился =\ вот как я делал цикал: PHP: $or1='1'; while ($or1<=0) { $vault1 = strstr($vault1, "e"); $vault1 = strstr($vault1, "16"); $or = strpos ($vault1, "e",18 ); if ($or!=false and $or==18 ) {$creat=$creat+1;} else {$or1='0';} }
в каком смысле??? он тут и выводит hex PHP: $vault= bin2hex($row['Items']); а потом просто в переменную пихаю её. или есть другой способ как достать?
возможно такое, что bin2hex - он ограничен по выводу байтов. или оброзует 1 страку - а строка ограничена по значениям. ну возможно что в varbinary храниться всё не в одной строке (хотя я даже не представляю как это может быть). Если сталкивались с такой проблемой, то возможно чтото соорудить???
Проблема заключаеться в следующем! при выводе информации с базы данных mssql: PHP: <? $vault= bin2hex($row['Items']); ?> обрабатываеться 512 byte - что недает обработать все одержимое базы. app - ему поралельно на буффер для обработки mssql поэтому не в этом заключаеться причина, может быть - но врятли непозволяет выводить сам mssql так как буффер в таблице уже прописан и тип данных тоже (type = varbinary, size = 1920) возникает вопрос возможноли по средством пхп увеличть объем буффера для обработки баз mssql или вывести всё содержимое по средствам цикла? если это возможно то как??? я много уже ползою по инету, но не кто с такой проблеммой не сталкивался. здесь я почитал - все посетители форума работают с наипростейшими скриптами! Дак может быть найдеться тот кто действительно шарит в пхп и в базах, чтоб помочь мне с этой проблемой?
PHP: <? $query ="declare @vault varbinary(1920); set @vault=(SELECT Items FROM warehouse where AccountId='".$userr_r."');print @vault;"; $result = mssql_query( $query ); $vault = substr(mssql_get_last_message(),2); ?> Пока сам недопрешь, некто талкового не подскажет - вот прошу выводит любые значения, любой сложности в hex код с varbinary!