Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как при добавлении изображения на сервер считывать имя в БД?
 
 автор: solomusic   (12.06.2008 в 13:25)   письмо автору
 
 

Проблема в том что при добавлении изображения на сервер имя в БД (MySQL) у меня не получается считать. Вот то что я делала:

if(isset($_POST['save'])){
mysql_connect("localhost","root","");
mysql_select_db("realtyy");

$imgDir = "images"; 
@mkdir($imgDir, 0777);

if (@$_REQUEST['doUpload']) {
  $data = $_FILES['file1'];
  $tmp = $data['tmp_name'];
  
  if (@file_exists($tmp)) {
    $info = @getimagesize($_FILES['file1']['tmp_name']);
    
    if (preg_match('{image/(.*)}is', $info['mime'], $p)) {
      
      $name = "$imgDir/".time().".".$p[1];
      
      move_uploaded_file($tmp, $name);
    } else {
      echo "<h2>Попытка добавить файл недопустимого формата!</h2>";
    }
  } else {
    echo "<h2>Ошибка закачки #{$data['error']}!</h2>";
  }
}

далее отправка всех данных в БД:

$sql="INSERT INTO `dob` ( `id`, `kind`, `type`, `area`, `street`, `metric`, `price`, `val`, `phone`, `e-mail`, `img`, `detail` ) 
VALUES ( '', '".$_POST['kind']."', '".$_POST['t']."', '".$_POST['r']."',   '".$_POST['st']."', '".$_POST['metr']."', 
'".$_POST['cena']."', '".$_POST['val']."', '".$_POST['phone']."', '".$_POST['email']."', '".$_POST['file1']."',
 '".$_POST['det']."')";
$res = mysql_query($sql);
}

и вот данные отправки изображения:

<tr id="iM38"><td class="manTd1" id="iM39">изображения (GIF, JPEG, PNG):
<div class="fHelp">макс.размер - <b>500</b>Kb</div></td>
<td class="manTd2" id="iM40"><div style="display:inline;" id="iplus">
<input class="button" style="width:24px;" type="button" value=" + " onclick="addImgF();" title="добавить поле для файла"> </div>
<input type="file" id="fln1" name="file1" size="20" onchange="getimage(1);"><span id="iCode1"></span>
<div id="imblock"></div></td></tr>

   
 
 автор: Root   (12.06.2008 в 14:46)   письмо автору
 
   для: solomusic   (12.06.2008 в 13:25)
 

объясните что такое $_POST['file1'] :)

   
 
 автор: solomusic   (12.06.2008 в 15:03)   письмо автору
 
   для: Root   (12.06.2008 в 14:46)
 

это запрос в БД названия файла введенного в
<input type="file" id="fln1" name="file1" size="20" onchange="getimage(1);">
самый обыкновенный запрос... как и все остальные.
Только этот запрос как я понимаю нужно делать немного инначе.. но как.... пока еще не разобралась... в прочем для этого и создана тема! ;)

   
 
 автор: Root   (12.06.2008 в 15:05)   письмо автору
 
   для: solomusic   (12.06.2008 в 15:03)
 

файлы доступны через массив $_FILES.

   
 
 автор: solomusic   (12.06.2008 в 15:10)   письмо автору
 
   для: Root   (12.06.2008 в 15:05)
 

ой, точно.. но тогда еще вопрос... при таком запросе... в БД выводится Array... и еще ... мне нужно загрузить не сам фаил... а только его имя!!!

   
 
 автор: Root   (12.06.2008 в 15:15)   письмо автору
 
   для: solomusic   (12.06.2008 в 15:10)
 

$_FILES - двумерный массив
$_FILES['file1']['name'] - имя файла на клиентской машине
$_FILES['file1']['tmp_name'] - временное имя файла

   
 
 автор: solomusic   (12.06.2008 в 15:18)   письмо автору
 
   для: Root   (12.06.2008 в 15:15)
 

а да... СПАСИБО!!! а то я уже замучалась... ;))))))))))))

   
 
 автор: solomusic   (12.06.2008 в 20:06)   письмо автору
 
   для: solomusic   (12.06.2008 в 15:18)
 

еще вопрос... название выводит... но почему-то загрузка изображения на страницу не происходит. Показываю код:
<script> 
function win(detail, street, phone, img) 

  msg=window.open("","msg","height=400,width=400,left=200,top=200"); 
  msg.document.write("<html><head><title>" + street + "</title></head>"); 
  msg.document.write("<body>"); 
  msg.document.write("<Table><tr><td>" + detail + "</td></tr>"); 
  msg.document.write("<tr><td>тел: " + phone + "</td></tr>"); 
  msg.document.write("<tr><td><a rel='lightbox[roadtrip]' title='фото' href='images/" + img + "'><img src='images/" + img + "' ></a></td></tr>"); 
  msg.document.write("</table></body></html>"); 
  msg.focus(); 

</script>

и php:
ini_set('display_errors',1); 
    error_reporting(E_ALL); 
          mysql_connect ("localhost", "root", ""); 
    mysql_select_db('realtyy'); 
    $sql = "SELECT * FROM `dob` WHERE `type` LIKE 'aa' ORDER BY `id`  DESC"; 
    $result = mysql_query($sql); 
        $data = array(); 
           while($res=mysql_fetch_array($result)) 
                { 
         echo "<TR bgcolor=#FLEFE5>"; 
         echo "<TD ALIGN=CENTER>".$res['id']."</TD>"; 
                 echo "<TD ALIGN=CENTER><B><i>".$res['area']."</i></B></TD>"; 
                 echo "<TD ALIGN=CENTER>".$res['street']."</TD>"; 
                 echo "<TD ALIGN=CENTER>".$res['metric']."</TD>"; 
                 echo "<TD ALIGN=CENTER><pre>".$res['price']." ".$res['val']."</pre></TD>"; 
                 echo "<TD ALIGN=CENTER>".$res['phone']."</TD>"; 
                 echo "<TD width='30%'  ALIGN='CENTER'>
                                     <a href='#' onclick='win(\"" . htmlentities($res['detail'], ENT_QUOTES, "cp1251") . "\",
 \"" . htmlentities($res['street'], ENT_QUOTES, "cp1251") . "\", 
\"" . htmlentities($res['phone'], ENT_QUOTES, "cp1251") . "\",
\"".htmlentities($res['img'], ENT_QUOTES, "cp1251")."\")'>открыть</a></TD> "; 
                 echo "<TD ALIGN=CENTER>".$res['date']."</TD>"; 
                 echo "</TR>"; 
                };

вот.. рисунок должен выводится в дополнительном окошке вместе с инфо... здесь наверняка как всегда элементарная ошибка, но пока я ее не вижу... увы...

   
 
 автор: sim5   (12.06.2008 в 20:23)   письмо автору
 
   для: solomusic   (12.06.2008 в 20:06)
 

Да тут не элементарная ошибка, а грубая. Вы не на код свой смотрите, а на результирующую страничку, которую получите. Обратите внимание на JS функцию и передачу в нее аргументов.

   
 
 автор: solomusic   (12.06.2008 в 20:29)   письмо автору
 
   для: sim5   (12.06.2008 в 20:23)
 

да я на это обращала внимание, но увы не очень хорошо знаю JS, точнее очень плохо, и не могу сообразить как его нужно выводить... так что если знаете, помогите!

   
 
 автор: sim5   (12.06.2008 в 20:46)   письмо автору
 
   для: solomusic   (12.06.2008 в 20:29)
 

Во-первых, чтобы ваш РНР код можно было читать без напряжения в глазах, обрамляйте его тегами РНР, иначе следить за кавычками, втсавками и прочее в коде трудно. И переносит его, чтобы он не растягивал страницу, иначе...
Что качается JS функции, то как это вы хотите сотворить такое:

//это неправильно
<a rel='lightbox[roadtrip]' title='фото' ...
//вставку РНР перменной в JS код нужно производить, например, так:
<a rel='<?php echo lightbox[roadtrip]; ?>' title='фото' ...

Но это еще не все. Вы хотите использовать Lightbox, а для этого нужно подключить соответствующие библиотеки, а где у вас подключение их? Если вы указываете параметр lightbox[roadtrip], то значит вы применяете эффект для нескольких фотографий - как вы думаете, что вы увидите передав одно изображение в вашу функцию, или вы ожидаете что там будет прописан массив изображений? Для одного изображения параметр rel должен быть прописан: rel="lightbox".
В общем чтобы вам конкретно увидеть все - просмотрите результирующий HTML-код вашей страницы.

PS. Подправьте свой РНР код чтобы он не растягивал страницу, и обрамите его в теги, чтобы была подсветка, ей богу глаза и так устают, еще и вглядываться в то, что вы пишите. Тяжело.

   
 
 автор: solomusic   (12.06.2008 в 20:56)   письмо автору
 
   для: sim5   (12.06.2008 в 20:46)
 

ок. подключение вот:
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

мне просто показалось это и так понятным... но ладно
и изображение может быть не одно... точнее одно как мин. макс 4-5 в одном окошке...
а по поводу html... ну JS эт понятно и так как выводит.. а php вот:
[HTML]<TR bgcolor=#FLEFE5>
<TD ALIGN=CENTER>35</TD>
<TD ALIGN=CENTER><B><i>Святошинский</i></B></TD>
<TD ALIGN=CENTER></TD>
<TD ALIGN=CENTER></TD>
<TD ALIGN=CENTER><pre> y.e.</pre></TD>
<TD ALIGN=CENTER></TD>
<TD width='30%'  ALIGN='CENTER'><a href='#' onclick='win("", "", "","112755_168954.jpg")'>открыть</a></TD>
 <TD ALIGN=CENTER>0000-00-00</TD>
</TR>[/HTML]

да и еще как на этом сайте можно написать php c выделением тегов... ?

   
 
 автор: solomusic   (12.06.2008 в 23:41)   письмо автору
 
   для: solomusic   (12.06.2008 в 20:56)
 

сейчас все работает... простите... видемо заработалась и не обратила внимание... я ведь загружаю на сервер под именем
$name
а в БД просто вывожу имя файла... вместо того что загружается в БД...

   
 
 автор: sim5   (13.06.2008 в 04:42)   письмо автору
 
   для: solomusic   (12.06.2008 в 20:56)
 

Дело в том, что указывая для Lightbox rel="lightbox[roadtrip]", вы сообщаете, что будет применен эффект к группе изображений. Если теперь, это связать с запросом к базе... Я решил, что вы таким образом передаете имена групп изображений в функцию для Lightbox, что конечно же неверно, ибо по событию onclick, вы передаете всего одно изображение для нее. Смысла в данном случае нет. Да и вообще, зачем вам это окно, которое вы создаете? Видели вы же работу Lightbox, значит знаете, что основное содержимое будет приглушено, и на этом фоне будет красивый эффект. Вместо открытия окна нового, лучше выполнять все в одном, основном окне, но немножко не так, правда вам потребуется немного изменить код в библиотеке lightbox.js.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования