Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlenie zdjęcia z bazy danych
Forum PHP.pl > Forum > Przedszkole
nighttrain
Witam

Chciałbym do mojego formularza dodac mozliwość dodawania zdjęcia do bazy.
Dodaje zdjęcie tak:
Kod
<b>Dodaj zdjęcie:</b><br />
<input type="file" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="zdjecie"><br />

Niestety w mojej tabeli, która wyświetla wyniki nie pokazuje sie zdjęcie, lecz nazwa tego zdjięcia;
Kod
echo "<td>".$r['zdjecie']."</td>";
nospor
Moze najpierw zapoznaj się z istotą uploadu to może zrozumiesz na czym polega Twoj błąd.
http://pl.php.net/manual/pl/features.file-...post-method.php
dg2001
bo musisz zrobić:
  1. echo '<td><img src="'.$r['zdjecie'].'" /></td>';

gdyż w bazie masz nazwę pliku a nie całe zdjęcie winksmiley.jpg
nighttrain
jak tak zrobiłem jak napisałeś to kolumna mi sie zwęziła i nic i tak nie widać
dg2001
Cytat(nighttrain @ 2.08.2010, 12:15:14 ) *
jak tak zrobiłem jak napisałeś to kolumna mi sie zwęziła i nic i tak nie widać

A może jakiś kod blinksmiley.gif i mam nadzieję że ścieżkę gdzie się znajduje plik dobrze podałeś smile.gif i jak zapisujesz w bazie? nazwę pliku ?
nighttrain
Narazie dodałem do bazy jedno zdjęcie do rekordu o nazwie: image.jpeg

A więc jak wcześniej napisałem dodaje w ten sposób:
Kod
<b>Dodaj zdjęcie:</b><br />
<input type="file" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="zdjecie"><br />

Pobieram go:
Kod
$zdjecie = $_POST['zdjecie'];

i potem wbijam do bazy wraz z innymi wartościami z formularza:
Kod
$ins = @mysql_query("INSERT INTO komputery SET id='$id',.............................., zdjecie='$zdjecie'" );


Wyświetlam wyniki w oddzielnym skrypcie w tabeli:
Kod
...........
$wynik = mysql_query("SELECT * FROM komputery")
or die('Blad zapytania');

//WYSWIETLENIE WYNIKOW  JESLI TABELA POSIADA CHOC JEDEN REKORD > 0

if(mysql_num_rows($wynik) > 0) {

/* jezeli wynik jest pozytywny > 0, to wyswietlamy dane */

    echo "<table cellpadding=\"7\" border=1>";
    echo "<tr><td colspan=11 bgcolor=\"#a7a7a7\"><b>Tabela komputery firmowe</b></td></tr>";
    while($r = mysql_fetch_assoc($wynik)) {
           echo "<tr>";
        echo "<td>".$r['id']."</td>";
        echo "<td>".$r['nazwa_komputera']."</td>";
        echo "<td>".$r['nazwa_dzialu']."</td>";
        echo "<td>".$r['imie_nazwisko_usera']."</td>";
        echo "<td>".$r['adres_ip']."</td>";
        echo "<td>".$r['system_operacyjny']."</td>";
        echo "<td>".$r['mac_adress']."</td>";
        echo "<td>".$r['ilosc_ram']."</td>";
        echo "<td>".$r['procesor']."</td>";
        echo "<td>".$r['model_komputera']."</td>";
        [b]echo '<td><img src="'.$r['zdjecie'].'" /></td>';[/b]

    echo "<td>
    <a href=\"wyswietlenietabeli.php?a=del&amp;id={$r['id']}\">DEL</a>
    <a href=\"wyswietlenietabeli.php?a=edit&amp;id={$r['id']}\">EDIT</a>
    </td>";
    echo "</tr>";
    }
    echo "</table>";
}
nospor
Przeczytaj mój poprzedni post i zastosuj się do niego - MASZ BRAKI W podstawach uploadu plików. Dopóki nie zrozumiesz na czym to polega, dopóty będziesz pisał takie "glupoty" jak teraz (bez urazy)
dg2001
tak jak napisał nospor ty dodajesz nazwę zdjęcia do bazy, ale nie wgrywasz go na serwer blink.gif wiec jak ci się ma wyświetlić to zdjęcie skoro go nie ma tam gdzie go ma szukać
nighttrain
No dobrze rozumiem, że mogę wysłać zdjęcie za pomocą tej składni:
Kod
<form enctype="multipart/form-data" action="__URL__" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>

Jednak ja już mam formularz, czy mam po prostu dodać do już istnijącego formularza:
Kod
enctype="multipart/form-data"

oraz w action mojego formularza mam odniesienie do skryptu PHP, natomiast tutaj:
Kod
action="__URL__"

Nie za bardzo rozumiem, jak powinienem to zbudować.
nospor
Cytat
Jednak ja już mam formularz, czy mam po prostu dodać do już istnijącego formularza:
Kod
enctype="multipart/form-data"
tak

Cytat
oraz w action mojego formularza mam odniesienie do skryptu PHP, natomiast tutaj:
Kod
action="__URL__"
Action to action. Jak u siebie masz inne to mozesz sobie miec.

Ale to tutaj to tylko malutki wstep zmian. Musisz jeszcze odebrać plik. Na tamtej stronie tez masz podane jak
nighttrain
Nie dodaje mi rekordów do bazy danych, może pokaże mój cały skrypt:
Kod
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php include "top.php"; // wkleja koniec stronki ?>
<?php

$msql = mysql_connect('10.2.1.220', 'root', 'qazwsx');
mysql_select_db('komputery');
$query = mysql_result(mysql_query("SELECT MAX(id) FROM komputery"), 0);
//$query = @mysql_query("SELECT MAX(id) FROM komputery");
//$query = @mysql_query("SELECT (MAX)id AS id FROM komputery");
//$query = @mysql_query("SELECT id from komputery order by id desc limit 1");
//$lastID =  LAST_INSERT_ID(); - to mozna wydac, ale jak wczesniej bylo zapytanie INSERT
//echo 'Ostatni istniejący rekord to '. $query .'';
//'<h3>'echo 'Ostatni istniejący rekord to '. $query .'''</h3>';
echo '<form enctype="multipart/form-data" action="doddotabkomp.php" method="post">
<h2>Prosze dodac nowy komputer:</h2><br />
<b>ID:</b><br />
<input type="text" size="5" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="id"> <h3>(Ostatni dodany rekord:'. $query .')</h3><br />
<b>Nazwa komputera:</b><br />
<input type="text" size="15" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_komputera"><br />
<b>Nazwa dzialu:</b><br />
<input type="text" size="20" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_dzialu"><br />
<b>Imie i nazwisko usera:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="imie_nazwisko_usera"><br />
<b>Adres IP:</b><br />
<input type="text" size="16" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="adres_ip"><br />
<b>System operacyjny:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="system_operacyjny"><br />
<b>Mac adres:</b><br />
<input type="text" size="19" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="mac_adress"><br />
<b>ilosc RAM:</b><br />
<input type="text" size="12" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="ilosc_ram"><br />
<b>Procesor:</b><br />
<input type="text" size="28" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="procesor"><br />
<b>Model komputera:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="model_komputera"><br />
<b>Dodaj zdjęcie:</b><br />
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="zdjecie" type="file" /><br/>

<input type="image" src="graphics/button_wyslij.jpg" alt="Wyslij" value="dodaj">
</form>';
//<input type="submit" value="dodaj" /><br />   NORMALNY PRZYCISK ZAMIAST TEGO WYZEJ
//onclick="return !window.confirm('usunac?')"
//onsubmit="return !window.confirm(wykonac?')"

$id = $_POST['id'];
$nazwa_komputera = $_POST['nazwa_komputera'];
$nazwa_dzialu = $_POST['nazwa_dzialu'];
$imie_nazwisko_usera = $_POST['imie_nazwisko_usera'];
$adres_ip =  $_POST['adres_ip'];
$system_operacyjny = $_POST['system_operacyjny'];
$mac_adress = $_POST['mac_adress'];
$ilosc_ram = $_POST['ilosc_ram'];
$procesor = $_POST['procesor'];
$model_komputera = $_POST['model_komputera'];
$zdjecie = $_POST['zdjecie'];

if($id and $nazwa_komputera and $nazwa_dzialu and $imie_nazwisko_usera and $adres_ip and $system_operacyjny and $mac_adress and $ilosc_ram and $procesor and $model_komputera and $zdjecie) {

$msql = mysql_connect('10.2.1.220', 'root', 'qazwsx');
mysql_select_db('komputery');

// laczymy sie z baza danych
//  $connection = @mysql_connect('10.2.1.220', 'root', 'qazwsx')
//  or die('Brak polaczenia z serwerem MySQL');
//  $db = @mysql_select_db('komputery', $connection)
//  or die('Nie moge polaczyc sie z baza danych');

//DODAJEMY REKORD DO BAZY

$ins = @mysql_query("INSERT INTO komputery SET id='$id', nazwa_komputera='$nazwa_komputera', nazwa_dzialu='$nazwa_dzialu',imie_nazwisko_usera='$imie_nazwisko_usera', adres_ip='$adres_ip', system_operacyjny='$system_operacyjny', mac_adress='$mac_adress', ilosc_ram='$ilosc_ram', procesor='$procesor', model_komputera='$model_komputera, zdjecie='$zdjecie'" );
if($ins) {
    echo ('<b>Rekord zostal dodany poprawnie</b>');
    echo '<script type="text/javascript" src="skrypty_java/reloaddodano.js"></script>';
}

    else echo '<script type="text/javascript" src="skrypty_java/reloadblad.js"></script>';

//else echo "Blad nie udalo sie dodac nowego rekordu";

//mysql_close($connection);
}
?>
<?php include "bottom.php";
nospor
1) Prosilem bys uzywal wlasciwego bbcode! Do mieszanca html + php uzywa się bbcode PHP
2) $_POST['zdjecie']; nie istnieje. A więc i Twój warunek przed dodaniem rekordu nie jest spelniony - PISALEM bys doczytac jak odbierać plik. Jak tego nie zrobisz to dalej nie ruszysz.
3) Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
np. jak wyswietlac wszystkie błędy a zobaczysz ile ich masz.
nighttrain
No nie wiem, już gdzie jest napisane o tym odbieraniu.

Czy chodzi o to, aby zamiast $_POST dać: $_FILES['userfile']['name'] ?
nospor
http://pl.php.net/manual/pl/features.file-...post-method.php
Ten link ci podalem na samym początku i w tym linku masz napisane jak masz odebrać. Masz podane nawet przykładowe kody.
Patrzyłeś na to wogóle? Sporzyj jeszcze raz. Tym razem dokładniej. Zwróć uwagę na tablicę $_FILES.

edit:
Cytat
Czy chodzi o to, aby zamiast $_POST dać: $_FILES['userfile']['name'] ?
no bingo. Tylko ze to jest sama nazwa pliku. Musisz jeszcze gdzieś wrzucić sam plik - tam to też jest podane
nighttrain
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile

Czy chodzi o to? I tak nie wiem co powinienem wpisać zamiast userfile (czy nazwę jaka reprezentuje kolumne zdjec?), tmp_name (nie wiem bo dane sa przechowywane w bazie a nie katalogu), ?

Zresztą w moim przykładzie wyżej oprócz tego, że muszę zamienić $zdjecie = $_POST=['zdjecie']; (POST -> FILES) to według mnie powinno już i tak dodać nowy rekord z nazwą zdjęcia do bazy, jednak mój skrypt tego nie robi.

nospor
bo u ciebie nie "userfile" a "zdjecie"
No mysl trochę nad tym co masz.
nighttrain
Ale chodzi mi o ten kod: (do bazy powinien chociaż dodać rekord i nazwe zdjecia) jednak skrypt nic nie robi) userfile mam ok akurat tu:
CODE

#
error_reporting(E_ALL);
#
ini_set('display_errors','1')

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php include "top.php"; // wkleja koniec stronki ?>
<?php

$msql = mysql_connect('10.2.1.220', 'root', 'qazwsx');
mysql_select_db('komputery');
$query = mysql_result(mysql_query("SELECT MAX(id) FROM komputery"), 0);

echo '<form enctype="multipart/form-data" action="doddotabkomp.php" method="post">
<h2>Prosze dodac nowy komputer:</h2><br />
<b>ID:</b><br />
<input type="text" size="5" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="id"> <h3>(Ostatni dodany rekord:'. $query .')</h3><br />
<b>Nazwa komputera:</b><br />
<input type="text" size="15" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_komputera"><br />
<b>Nazwa dzialu:</b><br />
<input type="text" size="20" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_dzialu"><br />
<b>Imie i nazwisko usera:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="imie_nazwisko_usera"><br />
<b>Adres IP:</b><br />
<input type="text" size="16" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="adres_ip"><br />
<b>System operacyjny:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="system_operacyjny"><br />
<b>Mac adres:</b><br />
<input type="text" size="19" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="mac_adress"><br />
<b>ilosc RAM:</b><br />
<input type="text" size="12" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="ilosc_ram"><br />
<b>Procesor:</b><br />
<input type="text" size="28" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="procesor"><br />
<b>Model komputera:</b><br />
<input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="model_komputera"><br />
<b>Dodaj zdjęcie:</b><br />
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="zdjecie" type="file" /><br/>

<input type="image" src="graphics/button_wyslij.jpg" alt="Wyslij" value="dodaj">
</form>';

$id = $_POST['id'];
$nazwa_komputera = $_POST['nazwa_komputera'];
$nazwa_dzialu = $_POST['nazwa_dzialu'];
$imie_nazwisko_usera = $_POST['imie_nazwisko_usera'];
$adres_ip = $_POST['adres_ip'];
$system_operacyjny = $_POST['system_operacyjny'];
$mac_adress = $_POST['mac_adress'];
$ilosc_ram = $_POST['ilosc_ram'];
$procesor = $_POST['procesor'];
$model_komputera = $_POST['model_komputera'];
$zdjecie = $_FILES['zdjecie'];


if($id and $nazwa_komputera and $nazwa_dzialu and $imie_nazwisko_usera and $adres_ip and $system_operacyjny and $mac_adress and $ilosc_ram and $procesor and $model_komputera and $zdjecie) {

$msql = mysql_connect('10.2.1.220', 'root', 'qazwsx');
mysql_select_db('komputery');

//DODAJEMY REKORD DO BAZY

$ins = @mysql_query("INSERT INTO komputery SET id='$id', nazwa_komputera='$nazwa_komputera', nazwa_dzialu='$nazwa_dzialu',imie_nazwisko_usera='$imie_nazwisko_usera', adres_ip='$adres_ip', system_operacyjny='$system_operacyjny', mac_adress='$mac_adress', ilosc_ram='$ilosc_ram', procesor='$procesor', model_komputera='$model_komputera, zdjecie='$zdjecie'" );
if($ins) {
echo ('<b>Rekord zostal dodany poprawnie</b>');
echo '<script type="text/javascript" src="skrypty_java/reloaddodano.js"></script>';
}

else echo '<script type="text/javascript" src="skrypty_java/reloadblad.js"></script>';

}
?>
<?php include "bottom.php";
nospor
dobra, słuchaj, 10 razy o wlasciwe bbcode nie mam cie zamiaru prosic.

Skoro nie rozumiesz prostej sugestii o poprawne bbcode to temat zamykam. Jak wyrazisz chęc się dostosowac to zapraszam na PW

edit: otwieram

ps:
nie: $zdjecie = $_FILES['zdjecie'];
a: $zdjecie = $_FILES['zdjecie']['name'];
nighttrain
Po tej operacji otrzymałem taki komunikat:
Kod
Warning: Wrong parameter count for move_uploaded_file() in /var/www/doddotabkomp.php on line 63
nospor
A gdzie w tym kodzie masz move_uploaded_file?
nighttrain
przepraszam otworzyłem zły plik.
teraz popkazuje mi błąd, wychodzi z pętli, czyli jest coś nie tak- nie chce dodać do bazy danych
nospor
ale jaki błąd?

Proszę cię jeszcze raz:
zapoznaj się z tym tematem i staraj się stosować do jego wytycznych - zdecydowanie szybciej Twoj problem zostanie rozwiązany.
Temat: Jak poprawnie zada pytanie
nighttrain
Oto zapytanie do bazy danych:
  1. $ins = @mysql_query("INSERT INTO komputery SET id='$id', nazwa_komputera='$nazwa_komputera', nazwa_dzialu='$nazwa_dzialu',imie_nazwisko_usera='$imie_nazwisko_usera', adres_ip='$adres_ip', system_operacyjny='$system_operacyjny', mac_adress='$mac_adress', ilosc_ram='$ilosc_ram', procesor='$procesor', model_komputera='$model_komputera, zdjecie='$zdjecie'" );
  2. if($ins) {
  3. echo ('Rekord zostal dodany poprawnie');
  4. }
  5. else echo ('Nie udało sie dodać!');


Oto error, który wyświetlił, przy próbie dodania do bazy danych:
Cytat
BŁĄD:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'images.jpeg'' at line 1
nospor
nie: model_komputera='$model_komputera
a: model_komputera='$model_komputera'
nighttrain
Hehe, no racja, nie zauważyłem tego- szukałem błędu całkiem, gdzie indziej.
Teraz prawidłowo dodaje mi do bazy.
Teraz pozostało mi wyświetlic to zdjęcie wraz z pozostałymi danymi, jednak póki co zdjęcia nie widzę.
Oto linijka z innego skryptu, która w/g mnie powinna wyświetlać zdjęcie, jednak tego nie robi:
  1. echo '<td><img src="'.$r['zdjecie'].'" /></td>';
nospor
Cytat
Teraz pozostało mi wyświetlic to zdjęcie wraz z pozostałymi danymi, jednak póki co zdjęcia nie widzę.
Oto linijka z innego skryptu, która w/g mnie powinna wyświetlać zdjęcie, jednak tego nie robi:
I wracamy do punktu wejścia: nadal tego zdjęcia nie wrzuciłeś na serwer. Teraz jedynie do bazy wkładasz jego nazwę.

Musisz w końcu łaskawie zrozumieć na czym polega upload (wgranie pliku na serwer). Mówię ci to od początku.
nighttrain
Z tego co wyczytałem ta komenda powinna wrzucić plik do bazy:
  1. $zdjecie = mysqli_real_escape_string($dbc, trim($_FILES['zdjecie']['name']));
  2. $target = MM_UPLOADPATH . basename($zdjecie);
  3. move_uploaded_file($_FILES['zdjecie']['name'], $target))

Jednak nie jestem pewien, gdzie powinno być to zawarte w moim kodzie?
Cos mi podpowiada, że w formularzu, ale nie jestem pewien.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.