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

Форум PHP

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

 

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

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

тема: не выводятся картинки
 
 автор: Лена   (28.03.2008 в 09:53)   письмо автору
 
 

Есть вот такой скрипт:
<?php
include "dbopen.php";
if (empty (
$cid))
{
     
$sql="SELECT `cid`, `name`, `source` `img_name` FROM `myfiles` order by `cid` DESC";
     
$res mysql_query($sql$link) or die("Неверный запрос: $sql");
//echo "count roes:".mysql_num_rows($res);

     
while ($row mysql_fetch_array($res))
     {
    
$name1=strtok ($row[1], ".");
    
    echo 
"<a href='?cid={$row[0]}'>$name1<br></a>";
    
    
$f fopen($row[2],"r");
    
$describe_link fread($ffilesize ($row[2]));
    
$d nl2br($describe_link);
    
    for (
$i=0;$i<40;$i++)
        {
        
$link_array=explode(" ",$d);
        echo 
$link_array[$i]." ";
        }
    @
fclose($f);
          echo 
"...<br><br>";
    
$img_name=$row[3];
    echo 
"<img src='/uploads/$img_name' align='top' hspace='10'>";              
     }
}
?>


Скрипт выводит слева - картинку, справа - ссылку и несколько слов ее описания. Все выводится, а вот картинка - нет. Хотя в базе все данные присутствуют. В чем дело?
Заранее спасибо.

   
 
 автор: cheops   (28.03.2008 в 10:19)   письмо автору
 
   для: Лена   (28.03.2008 в 09:53)
 

А в папке uploads картинка точно существует? Она не побита? Если обратиться к ней по прямому адресу в браузере - отображается?

   
 
 автор: Лена   (28.03.2008 в 10:32)   письмо автору
 
   для: cheops   (28.03.2008 в 10:19)
 

Спасибо, что ответили.
В папке uploads картинка существует. Если обратиться к ней по прямому адресу в броузере - все прекрасно выводится. Но когда вывожу вместе со ссылкой - просто квадратик.
Объясните, пожалуйста, что значит: картинка не побита?
Понимаю, что вопрос может показаться глупым, но лучше это, чем вообще не знать.

   
 
 автор: elenaki   (28.03.2008 в 11:06)   письмо автору
 
   для: Лена   (28.03.2008 в 10:32)
 

echo "<img src='/uploads/".$img_name."' align='top' hspace='10'>";             

может, в имени файла есть пробел?

   
 
 автор: Лена   (28.03.2008 в 11:10)   письмо автору
 
   для: elenaki   (28.03.2008 в 11:06)
 

Я же не один файл вывожу - массив. Ни в одном из имен пробелов нет.
Так как тогда решить проблему?

   
 
 автор: elenaki   (28.03.2008 в 11:15)   письмо автору
 
   для: Лена   (28.03.2008 в 11:10)
 

и ни один файл не выводится? а что видно в коде, если в браузере открыть по view source?

   
 
 автор: Лена   (28.03.2008 в 11:32)   письмо автору
 
   для: elenaki   (28.03.2008 в 11:15)
 

Вот что:
<img src='/uploads/' align='top' hspace='10'> Броузер, получается, не видит переменную $img_name.
Ну как ему (броузеру) открыть глаза?

Да, ни один файл не выводится.

   
 
 автор: elenaki   (28.03.2008 в 11:35)   письмо автору
 
   для: Лена   (28.03.2008 в 11:32)
 

BMECTO
 $img_name=$row[3]; 


$img_name=$row["img_name"];

   
 
 автор: ONYX   (28.03.2008 в 11:52)   письмо автору
 
   для: elenaki   (28.03.2008 в 11:35)
 

Результат функции не правильно использовали
<?php 
include "dbopen.php"
if (empty (
$cid)) 

     
$sql="SELECT `cid`, `name`, `source` `img_name` FROM `myfiles` order by `cid` DESC"
     
$res mysql_query($sql$link) or die("Неверный запрос: $sql"); 
//echo "count roes:".mysql_num_rows($res); 

     
while ($row mysql_fetch_array($res)) 
     { 
    
$name1=strtok ($row['name'], "."); 
     
    echo 
"<a href='?cid={$row['cid']}'>$name1<br></a>"
     
    
$f fopen($row['source'],"r"); 
    
$describe_link fread($ffilesize ($row['source'])); 
    
$d nl2br($describe_link); 
     
    for (
$i=0;$i<40;$i++) 
        { 
        
$link_array=explode(" ",$d); 
        echo 
$link_array[$i]." "
        } 
    @
fclose($f); 
          echo 
"...<br><br>"
    
$img_name=$row['img_name']; 
    echo 
"<img src='/uploads/$img_name' align='top' hspace='10'>";               
     } 

?> 

   
 
 автор: Лена   (28.03.2008 в 12:08)   письмо автору
 
   для: elenaki   (28.03.2008 в 11:35)
 

Я поняла, в чем дело. Только не знаю, как это исправить.
В броузер выводится вот так: первая картинка вообще не выводится, только ссылка+ее содержание, дальше выводится первая картинка+вторая ссылка+второе содержание. Дальше вторая картинка+третья ссылка+третье содержание. Получается картинка на один шаг "отстает". Во view source пишет вот такое: <img src='/uploads/C:/WebServers/home/localhost/www/index/uploads/rezume.txt' align='top' hspace='10'>, идет ссылка на текст, который возле фото.
В базе же все ссылки верны.
Может, у меня неправильный скрипт формы загрузки ссылок?
Вот он:

<?
include ("dbopen.php");
    echo 
"<form enctype='multipart/form-data' action='' method='post'>
    Выбрать текст:<br>
    <input type='file' name='myfile'><br>
    Выбрать картинку: <br>
    <input name='img_name' type='file'><br>    
    <input type='submit' value='Send File' >
    </form>"
;
        

function 
upload ()
{
global 
$link;
    
$uploaddir '/WebServers/home/localhost/www/index/uploads/';
    
$uploadfile $uploaddir.basename($_FILES['myfile']['name']);
    @
$uploadfile_img $uploaddir.basename($_FILES['img_name']['name']);
    
$max_image_width380;
$max_image_height500;
$max_image_size1000000;
$valid_types = array("gif","jpg""png""jpeg");
    
    if (
move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile))
    {
        
$name=$_FILES['myfile']['name'];
        
$type=$_FILES['myfile']['type'];
        
$size=$_FILES['myfile']['size'];
        
$tmp_name=$_FILES['myfile']['tmp_name'];
        
$error=$_FILES['myfile']['error'];
    }
    else 
    {
        return 
"<h2>Файл не удалось скопировать!</h2>";
    }

if (
is_uploaded_file($_FILES['img_name']['tmp_name'])) 
{
    
$filename_img $_FILES['img_name']['tmp_name'];
    
$ext substr($_FILES['img_name']['name'], strrpos($_FILES['img_name']['name'], "."));

    if (
filesize($filename_img) >= $max_image_size
    {
        echo 
"Размер файла больше $max_image_size";
    } 
    elseif (!
in_array($ext$valid_types)) {
        echo 
"Неправильное расширение файла.";
    } 
    else 
    {
     
$size_img GetImageSize($filename_img);
         if ((
$size_img) && ($size[0] <= $max_image_width) && ($size_img[1] <= $max_image_height)) 
        {
                
            if (@
move_uploaded_file($filename_img,$uploadfile_img)) 
            {
            echo 
"Файл успешно загружен.";
            } 
            else 
            {
            echo 
"Файл не удалось загрузить.";
            }
        } 
        else 
        {
        echo 
"Неверные img-свойства.";
        }
    } 

    
// загрузить линки в базу    
    
if (!empty ($uploadfile)&&!empty ($uploadfile_img))
    {
        
$name=basename($uploadfile);
            
$size=filesize ($uploadfile);
            
$type=filetype ($uploadfile);
            
$img_name=basename($uploadfile_img);
                    
            
$sql="INSERT INTO `myfiles`(name,size,type,source,img_name) VALUES('$name','$size','$type','$uploadfile','$img_name')";
         
mysql_query ($sql$link);
    }
}

if (isset(
$_POST) && count($_POST)>0)
     
upload();
?>

   
 
 автор: elenaki   (28.03.2008 в 12:13)   письмо автору
 
   для: Лена   (28.03.2008 в 12:08)
 

SELECT `cid`, `name`, `source` `img_name` FROM `myfiles` order by `cid` DESC


кажется, пропущена запятая в запросе - между 'source' и img_name''

   
 
 автор: Лена   (28.03.2008 в 12:31)   письмо автору
 
   для: elenaki   (28.03.2008 в 12:13)
 

Теперь во view source все правильно: <img src='/uploads/2.gif' align='top' hspace='10'>
А картинок по-прежнему нет.

   
 
 автор: elenaki   (28.03.2008 в 12:36)   письмо автору
 
   для: Лена   (28.03.2008 в 12:31)
 

a TAK: <img src='uploads/2.gif' align='top' hspace='10'>? (6e3 /)

   
 
 автор: Лена   (28.03.2008 в 12:44)   письмо автору
 
   для: elenaki   (28.03.2008 в 12:36)
 

Картинки показались! Спасибо лучшим умам Афин (elenaki) и всем остальным!
Вот только ссылка текстовая, если она большая, почему-то обрезается.
И последний вопрос: если у меня в базе cid дошел, допустим, до 47, а я хочу его сбросить к 0, как это сделать?

   
 
 автор: Хулиган   (28.03.2008 в 12:53)   письмо автору
 
   для: Лена   (28.03.2008 в 12:44)
 

возможно что ссылка обрезается потому, что поле в БД недостаточной длины для хранения всего текста. Проверьте, какой тип поля у вас (varchar или text). Установите поле в тип text

   
 
 автор: elenaki   (28.03.2008 в 12:55)   письмо автору
 
   для: Лена   (28.03.2008 в 12:44)
 

ссылка текстовая, если она большая, почему-то обрезается - надо увеличить размер поля, в которое их записыватете. если VARCHAR (до 255 символов) мал, используйте TEXT

в базе cid дошел, допустим, до 47, а я хочу его сбросить к 0 - тут надо ALTER TABLE применять, кажется. не помню точно. редко обнуляю индекс.

   
 
 автор: Лена   (28.03.2008 в 13:00)   письмо автору
 
   для: elenaki   (28.03.2008 в 12:55)
 

Действительно делается через ALTER TABLE. Если через phpMyAdmin - раздел операции, Опции таблицы.
Еще раз спасибо всем. Тема закрыта.

   
Rambler's Top100
вверх

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