Wątek przeniesiony 2015-03-14 11:35 z PHP przez dzek69.

Dodawanie zdjęcia do tabeli i wyświetlanie na stronie

0
 <?php 

// nawiazujemy polaczenie 
$connection = @mysql_connect('localhost', 'root', '')
// w przypadku niepowodznie wyświetlamy komunikat 
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error()); 
// połączenie nawiązane ;-) 
echo ""; 
// nawiązujemy połączenie z bazą danych 
$db = @mysql_select_db('projekt', $connection) 
// w przypadku niepowodzenia wyświetlamy komunikat 
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); 
// połączenie nawiązane ;-) 
echo ""; 



  // dodajemy rekord do bazy 
    $ins = @mysql_query("INSERT INTO zdjecia SET  zdjecia='$zdjecia' "); 
     
    if($ins) echo "Rekord został dodany poprawnie"; 
    else echo "Błąd nie udało się dodać nowego rekordu"; 


	
	$wynik = mysql_query("SELECT * FROM zdjecia") 
or die('Błąd zapytania'); 

if(mysql_num_rows($wynik) > 0) { 
    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
    echo "<table cellpadding=\"2\" border=1>
<thead><tr> <th>ID</th> <th>Rodzaj</th>   </tr></thead>"; 
    while($r = mysql_fetch_assoc($wynik)) { 
	
        echo "<tr>"; 
		echo "<td>".$r['id']."</td>"; 
        echo "<td>".$r['zdjecia']."</td>"; 
        echo "</tr>"; 
    } 
	
    echo "</table>"; 
} 

	
	
	
	
	

if (isset($_POST['powrot'])){
header("Location: index.php");
}


 ?>
 
 <form action="index.php" method="post">

<input type="hidden" name="powrot" value="true">

<input type="submit" value="STRONA GLOWNA ">
</form>

<FORM ACTION="zdjecia.php" METHOD="POST" ENCTYPE="multipart/form-data">
Zdjęcie: </td><td><INPUT type="file" name="zdjecie">
<input type="submit" name="ok" value="Wyślij zdjęcie do bazy"/>
</FORM>

utworzylem tabele zdjecia ( id, zdjecia - typ mediumblob)
po wcisnieciu wyslij zdjecie - dodaje rekord a w rubryce zdjecia pisze: BLOB- 0 B
no i oczywiscie nie wyswietla
prosze o jakies wskazowki

0
  1. W htmlu inputowi nadałeś nazwę zdjecie, w bazie masz zapytanie ze zmienną $zdjecia.
  2. Ale to i tak nie zadziała, bo wysłanie danych przez GET/POST nie ustawi Ci żadnej zmiennej w ten sposób.
  3. Ale Ty i tak wysyłasz pliki, a nie dane POST, więc tu będzie to wyglądać jeszcze inaczej
  4. Dodatkowo w ten sposób robisz dziurę SQL Injection, no i używasz mocno przestarzałych funkcji mysql_, które wkrótce zostaną usunięte z php.
  5. Próbujesz wyświetlać dane binarne z bazy w <td> - zupełny brak rozróżnienia nazwy pliku od danych z pliku!
  6. I wiele innych rzeczy, które powodują, że CAŁY KOD pozbawiony jest najmniejszego sensu. Wszystko jest do kosza.

Generalnie:
Bierzesz się za rzeczy, które są poziomem zdecydowanie wyżej, niż aktualnie jesteś. Nie możesz brać się za budowę całego samochodu, jeżeli nie znasz nawet nie potrafisz poprawie podłączyć świateł do akumulatora, nie mówiąc już o działaniu silnika.

Porzuć więc na razie SQL - zostaw to sobie na potem.

  1. Najpierw zajmij się odczytem danych POST/GET (czyli poszukaj sobie za kursem php, rozdział o formularzach).
  2. Potem zajmij się BEZPIECZNYM uploadem plików (czyli żadnej weryfikacji po MIME-TYPE [u Ciebie w ogóle nie ma weryfikacji, ja od razu Ci mówię, że ta jest niebezpieczna])
  3. Potem zajmij się nauką baz danych, z użyciem biblioteki PDO i bindowaniem zmiennych, celem zabezpieczenia się przed SQL Injection
  4. Dopiero potem próbuj to wszystko ze sobą połączyć

1 użytkowników online, w tym zalogowanych: 0, gości: 1