мне на сайт(он на джумле 1.5) нужно вносить в базу данные, читая запросы с текстового файла(на локалке).
сделал приблизительно такое:
<?phpпри выполнении выдаёт "fileopen error".
$new_wind_const="old";
$new_wind=$_POST['new_wind'];
$ff=$_POST['ff'];
if ($new_wind != $new_wind_const)
{
?>
<form name="form1" method="post" action="-этот файл-">
<input type="hidden" name="new_wind" value="old">
<input type="file" name="ff">
<input type="submit" name="Submit" value="upload">
</form>
<?php }
else {
// file open and read
$fh = fopen($ff, "r") or die("fileopen error");
$fs = filesize($ff) or die("filesize error");
$file = fread($fh, $fs);
fclose($fh);
// db connect
$link = mysql_connect("localhost","bd", "bd_pass") or die("DB connect error");
mysql_select_db("bd", $link);
// чтение с переменной и выполнение запросов, разделенных ";"
$t = $file;
while($k=strpos($t,';')){
mysql_query(substr($t,0,$k+1)) or die (mysql_error());
$t = substr($t,$k+1);
}
mysql_close();
echo "<br /> all is goooood :)";
}
?>
что я сделал не так, в чём может быть проблема?
может есть у кого-нить лучшее решение?
Спустя 11 минут, 5 секунд (3.12.2010 - 15:19) Игорь_Vasinsky написал(а):
сделай
echo $ff;
у тя имя файл передаётся не верно, либо атрибуты стоят на файл
имя на кирилице?
кодировка ?
echo $ff;
у тя имя файл передаётся не верно, либо атрибуты стоят на файл
имя на кирилице?
кодировка ?
Спустя 10 минут, 24 секунды (3.12.2010 - 15:30) kester написал(а):
echo $ff выдаёт имя файла
файл SAYT.txt
внутри файла запросы на cp866 (DOS kyr.)
но проблема вроде бы не в кодировке. таблица в базе тоже в ср866.
при задании полного адреса на локалке(денвер) всё работает.
да и таким способом тоже работает на локале, но не всегда. голову ломаю, понять не могу как решить это.
файл SAYT.txt
внутри файла запросы на cp866 (DOS kyr.)
но проблема вроде бы не в кодировке. таблица в базе тоже в ср866.
при задании полного адреса на локалке(денвер) всё работает.
да и таким способом тоже работает на локале, но не всегда. голову ломаю, понять не могу как решить это.
Спустя 3 дня, 2 часа, 30 минут, 31 секунда (6.12.2010 - 18:00) kester написал(а):
народ, помогите, ато у самого мозгов не хватает, а нужно "на вчера"...
файлы надо заливать по 7-8 МБ.
файлы надо заливать по 7-8 МБ.
Спустя 1 час, 22 минуты, 16 секунд (6.12.2010 - 19:22) DySprozin написал(а):
kester
потому что нужно мануалы... курить их нужно... перед сном и вместо сна каждый день (;
<form name="form1" method="post" action="-этот файл-" enctype="multipart/form-data">
потому что нужно мануалы... курить их нужно... перед сном и вместо сна каждый день (;
<form name="form1" method="post" action="-этот файл-" enctype="multipart/form-data">
Спустя 13 часов, 37 минут, 24 секунды (7.12.2010 - 09:00) kester написал(а):
да знаю. enctype="multipart/form-data" не помог. лан, попробую пересобрать скрипт, мож чёт получится...
Спустя 4 часа, 12 минут, 6 секунд (7.12.2010 - 13:12) kester написал(а):
такс, переделал заново и по-другому:
если ставлю if (isset($_FILES["ff"]) and $pass=="qqq"), то условие не проходит, всегда ложь;
а если делаю if (isset($_FILES["ff"]) && $pass=="qqq"), то истина всегда, когда второе условие выполняется...
если не делать проверку на 2 условие(пароль), то всё нормально работает.
в чём причина и как это разрешить можно?
<?phpвроде заработало нормально, НО:
$pass = $_POST['pass'];
if (isset($_FILES["ff"]) and $pass=="qqq"){
echo "<b>name:</b> ".$_FILES['ff']['name']."<br />";
echo "<b>size:</b> ".$_FILES['ff']['size']."<br />";
echo "<b>tmpadr:</b> ".$_FILES['ff']['tmp_name']."<br /><br />";
$fop = fopen($_FILES['ff']['tmp_name'], "r") or die("Can't open file!");
$borg = fread($fop, $_FILES['ff']['size']);
fclose($fop);
$link = mysql_connect("localhost","db", "") or die("DB connect error");
mysql_select_db("db", $link);
mysql_query("SET NAMES 'cp866'");
while($k=strpos($borg,';')){
mysql_query(substr($borg,0,$k+1));// or die (mysql_error());
$borg = substr($borg,$k+1);
}
echo "<br /> all is goooood :)</ceter>";
mysql_close();
}
else { ?>
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="ff" id="ff">
<input type="password" name="pass" value="--------">
<input type="submit" name="Submit" value="use file">
</form>
<?php
}
?>
если ставлю if (isset($_FILES["ff"]) and $pass=="qqq"), то условие не проходит, всегда ложь;
а если делаю if (isset($_FILES["ff"]) && $pass=="qqq"), то истина всегда, когда второе условие выполняется...
если не делать проверку на 2 условие(пароль), то всё нормально работает.
в чём причина и как это разрешить можно?
Спустя 19 минут, 10 секунд (7.12.2010 - 13:31) Renden написал(а):
Возможно скобочки надо поставить
а вообще так работает?
if (isset($_FILES["ff"]) and ($pass=="qqq")){
а вообще так работает?
if (isset($_FILES["ff"]) {
if ($pass=="qqq") {
Спустя 26 минут, 32 секунды (7.12.2010 - 13:58) kester написал(а):
блин, ступил с раскладкой. пароль проходит норм, но вот с двойным условием первое не учитывается(или всегда тру), как будто его нет.
с двумя ифами то же самое.
почему при повторном isset($_FILES["ff"] тру, если файл не выбрано? есть варианты обхода этого?
проверка на $_FILES["ff"]["name"]!="" и $_FILES["ff"]["size"]>0 не дала результата(хз почему).
замена isset на empy не помогла.
при вводе пароля без выбора файла выдаёт:
name:
size: 0
tmpadr:
Can't open file!
а должно оставаться на форме
с двумя ифами то же самое.
почему при повторном isset($_FILES["ff"] тру, если файл не выбрано? есть варианты обхода этого?
проверка на $_FILES["ff"]["name"]!="" и $_FILES["ff"]["size"]>0 не дала результата(хз почему).
замена isset на empy не помогла.
при вводе пароля без выбора файла выдаёт:
name:
size: 0
tmpadr:
Can't open file!
а должно оставаться на форме
Спустя 1 час, 9 минут, 38 секунд (7.12.2010 - 15:07) kester написал(а):
заработало, когда сделал: if (!empty($_FILES['ff']['name']) and $pass=="qqq")
надо быстро заливать на сайт и там пробовать, пока не нашел себе ещё чего-нить на свою ж* ))
всем спс за внимание и советы)
поставил бы +, но пока маловато у меня постов для этого
надо быстро заливать на сайт и там пробовать, пока не нашел себе ещё чего-нить на свою ж* ))
всем спс за внимание и советы)
поставил бы +, но пока маловато у меня постов для этого