Czesc chce zrobic formularz, ktory po wcisnieciu jednego jedno 'submit' wysle zarowno zdjecie jak i zwykle dane textowe. Probowalem sie z tym bawic, ale jakos nic z tego nie wychodzi. Owszem, osobno dziala jak najbardziej, lecz w polaczeniu nie jest juz tak kolorowo. Zalezy mi na tym, poniewaz jako query do bazy uzywam INSERT INTO
i chcialbym zeby te wartosci rownoczesnie poszly do bazy pod tym samym id. Text, jak i longblob.
Formularz musi mieć atrybut enctype="multipart/form-data"
.
Niestety i tak mi nie wychodzi. Czy mogblys mi pokazac na jakims tutorialu jak to zrobic konkretnie? Bo niestety ale wciaz tylko zdjecie wysyla, tekstu niestety nie.
Przecież tego od groma w Google pierwszy link http://www.w3schools.com/php/php_file_upload.asp oczywiście do tego formularza możesz dodać sobie zwykłe pola np. input.
Przecież upload zdjęcia to takie samo pole formularza, jak każde inne. Upewnij się, że dla obrazka/pliku masz type="file", a dla tekstu type="text". http://stackoverflow.com/questions/8157010/is-it-possible-with-upload-a-file-and-submit-text-in-a-single-form w pierwszym rozwiązaniu masz fajną odpowiedź.
Tutaj również masz super wytłumaczone:
http://www.hotscripts.com/forums/php/6328-upload-image-text-mysql-same-time.html
Skup się na odpowiednim query do Googla najpierw :D
Robie najzwyczajniej jak sie da, nie wiem czy jestem zmeczony czy co ale mi nie wychodzi po prostu. A o to moj kod:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Name:<input name="filmname" type="text" /><br />
Choose a file to upload: <input name="image" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
A o to uploader.php
$con=@mysql_connect("localhost","root","");
@mysql_select_db("db",$con);
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$filmname = $_POST['filmname'];
$sqll = "INSERT INTO `dbe` (`name`) VALUES ( '{$filmname}')";
$sql = "INSERT INTO `dbe` (`image`, `imagename`) VALUES ( '{$image}', '{$image_name}')";
if (!@mysql_query($sql) && !@mysql_query($sqll) ) {
echo "Something went wrong! :(";
}
else{
header('Location: add.php');
}
- mysqli/pdo do operacji na bazach danych
- jak ukrywasz sobie błędy to się nie dziwię, że nic nie wiesz. Usuń wszystkie @.
- wypadałoby jeszcze sprawdzać czy ktoś wrzucił rzeczywiście zdjęcie, bo teraz to można uploadować wszystko.
Dziekuje za cenne rady, przestudiowalem troche wasze odpowiedzi. Jestem juz prawie przy koncu zadania. Jedyna rzecz jaka mi zostala to umieszczenie zdjecia w BLOBIE na serwerze, bo nazwe wraz z input typu tekst umieszczam rownoczesnie, lecz zdjecia nie moge wyslac do bazy.
Nazwa jest umieszczona, ale jak probuje cos wykombinowac z samym plikiem to mi nie wychodzi.
Z takiego skryptu korzystam.
if(isset($_POST['ok'])){
$target = "upload/";
$target = $target . basename( $_FILES['img']['name']);
//This gets all the other information from the form
$Filename=$_FILES['img']['name'];$Filename=basename( $_FILES['img']['name']);
$image=$_FILES['img']['tmp_name'];$Filename=basename( $_FILES['img']['tmp_name']);
$Description=$_POST['Description'];
//Writes the Filename to the server
if( move_uploaded_file($_FILES['img']['tmp_name'], $target)) {
//Tells you if its all ok
echo "The file ". basename( $_FILES['img']['name']). " has been uploaded, and your information has been added to the directory";
// Connects to your Database
$dbc= mysqli_connect("localhost","root","zaq1@WSX","json") or die("Error " . mysqli_error($dbc));;
//Writes the information to the database
$query ="INSERT INTO horrors (filmname,image,imagename)
VALUES ( '$Description','$image','$Filename')" or die("Error in the consult.." . mysqli_error($dbc));
$result = $dbc->query($query);
} else {
//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
}
Prosty przykład bez żadnych zabezpieczeń!
<?php
$image_name = addslashes($_FILES['img']['name']);
$filmname = $_POST['filmname'];
$image = file_get_contents($_FILES['img']['tmp_name']);
$mysqli = mysqli_connect("localhost","root","zaq1@WSX","json");
$stmt = $mysqli->prepare("INSERT INTO horrors (filmname, imagename, image) VALUES(?, ?, ?)");
$null = NULL;
$stmt->bind_param('ssb', $filmname, $image_name, $null);
$stmt->send_long_data(2, $image);
$stmt->execute();
?>