2016-03-02 2 views
0

Я занят небольшим проектом, где люди могут заполнить форму, которая сохранит значения в базе данных. Теперь все работает отлично, за исключением путей загрузки файлов. В моей базе данных у меня есть три таблицы лицо, адрес и резюме (с отношениями) см картина:Как сохранить путь к файлу в базе данных и показать путь подробно Страница

picture one

Теперь я хочу, чтобы путь к быть www.test.nl/directory/filename так что я могу сделать кнопку со ссылкой, поэтому, когда вы нажмете кнопку, она загрузит файл. Как всегда на моей странице подробностей, как вы можете видеть, отображается cv_id, а не путь. Моя загрузка файлов в отдельном файле, как это мой человек и адрес загрузки смотрите ниже:

адрес и лицо загрузки:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "usbw"; 
$dbname = "persons"; 

// CREATE A CONNECTION WITH THE DATABASE 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

// ADDRESS APPEND - PREPARE SQL STATEMENT AND BIND PARAMS 
// ADRES TOEVOEGEN - BEREID SQL STATEMENT EN BIND PARAMS 
$stmt = $conn->prepare("INSERT INTO address (address_street, address_housenumber, 
             address_zipcode, address_city, address_state) 
        VALUES (?, ?, ?, ?, ?)"); 
$stmt->bind_param("sssss", $straat, $huisnummer, $postcode, $stad, $provincie); 

$straat = htmlspecialchars($_POST['straat']); 
$huisnummer = htmlspecialchars($_POST['huisnummer']); 
$postcode = htmlspecialchars($_POST['postcode']); 
$stad = htmlspecialchars($_POST['stad']); 
$provincie = htmlspecialchars($_POST['provincie']); 

// EXECUTE STATEMENT 
// STATEMENT UITVOEREN 
$result = $stmt->execute();  
if ($result === FALSE) { 
die("Error: " . $stmt->error); 
} 

// CAPTURE LAST INSERTED address_id 
// PAK DE LAATST INGEVOERDE address_id 
$last_id = $conn->insert_id; 

// PERSON APPEND - PREPARE SQL STATEMENT AND BIND PARAMS 
// PERSOON TOEVOEGEN - BEREID SQL STATEMENT EN BIND PARAMS 
$stmt = $conn->prepare("INSERT INTO person (person_firstname, person_lastname, 
             person_email, person_phonenumber, 
             person_cv, person_address) 
        VALUES (?, ?, ?, ?, ?, ?)"); 
$stmt->bind_param("sssssi", $firstname, $lastname, $email, $telephone, $cv, $last_id); 

$firstname = htmlspecialchars($_POST['firstname']); 
$lastname = htmlspecialchars($_POST['lastname']); 
$email = htmlspecialchars($_POST['email']); 
$telephone = htmlspecialchars($_POST['telephone']); 

// EXECUTE STATEMENT 
// STATEMENT UITVOEREN 
$result = $stmt->execute();  
if ($result === TRUE) { 
$URL="http://localhost:8080/Website/bedankt.php"; 
header ("Location: $URL"); 
} else { 
    echo "Error: " . $stmt->error; 
} 

// CLOSE CONNECTION AND STATEMENT 
// SLUIT CONNECTIE EN STATEMENT 
$stmt->close(); 
$conn->close(); 
?> 

файл upload.php

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "usbw"; 
$dbname = "persons"; 

// CREATE A CONNECTION WITH THE DATABASE 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

if(isset($_POST['submit'])) 
{ 
    $filetmp = $_FILES["cv"]["tmp_name"]; 
    $filename = $_FILES["cv"]["name"]; 
    $filetype = $_FILES["cv"]["type"]; 
    $filepath = "files/".$filename; 

    move_uploaded_file($filetmp,$filepath); 

    $sql = "INSERT INTO cv (cv_name,cv_path,cv_type) VALUES ('$filename','$filepath','$filetype')"; 
    $result = mysqli_query($conn, $sql); 
} 
$cv = $conn->insert_id; 
?> 

Моя страница деталь:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "usbw"; 
$dbname = "persons"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT person_firstname, person_lastname, 
      person_email, person_phonenumber, person_cv, 
      address_street,address_housenumber, 
      address_city,address_state,address_zipcode 
    FROM person 
     inner join address on address.address_id = person.person_address"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
echo "<table border=1> 
<tr> 
<th>Voornaam</th> 
<th>Achternaam</th> 
<th>Straat</th> 
<th>Huisnummer</th> 
<th>Postcode</th> 
<th>Stad</th> 
<th>Provincie</th> 
<th>Email</th> 
<th>Mobiel</th> 
<th>CV</th> 
</tr>"; 


while($row = $result->fetch_assoc()) { 
    echo "<tr>"; 
    echo "<td>" . $row["person_firstname"] . "</td>"; 
    echo "<td>" . $row["person_lastname"] . "</td>"; 
    echo "<td>" . $row["address_street"] . "</td>"; 
    echo "<td>" . $row["address_housenumber"] . "</td>"; 
    echo "<td>" . $row["address_zipcode"] . "</td>"; 
    echo "<td>" . $row["address_city"] . "</td>"; 
    echo "<td>" . $row["address_state"] . "</td>"; 
    echo "<td>" . $row["person_email"] . "</td>"; 
    echo "<td>" . $row["person_phonenumber"] . "</td>"; 
    echo "<td>" . $row["person_cv"] . "</td>"; 
    echo "</tr>"; 
} 
} else { 
echo "Er is niks in het database gevonden"; 
} 
$conn->close(); 
?> 

Надеюсь, вы, ребята, можете мне помочь с этим. Я новичок в PHP, поэтому я все еще изучаю все это. Обратите внимание, что все работает хорошо ... кроме загрузки www.test.nl/directory/filename и сохранения этого в моей таблице cv_path ... Показывая путь (возможно, как кнопку) на странице подробностей. Если есть способ использовать почти то же утверждение, что и адрес для загрузки файла в cv, это было бы здорово. Но поскольку это работает сейчас (пока), я сохраняю загрузку файла, а пользователь и адрес загружаются отдельно. И если можно добавить кнопку загрузки на мою страницу подробностей под CV, которая будет загружать файл, который будет идеальным.

+0

Я редактировал ответ, чтобы добавить кнопку часть , Надеюсь, вы помирите меня в своем проекте: P – vove

+0

haha ​​Я буду! наверняка! : P Не очень благодарю вас! Мне нужно все прочитать снова, я много знал о PHP, но havnt ничего с ним делал в течение года. Теперь я нахожусь в прошлом году и мне нужно снова начать с PHP. Так что сложно запомнить все. – GLRotterdam

ответ

1

Вы должны изменить SELECT запрос для выборки cv_path вместо cv_id.

Затем вы можете использовать PHP, чтобы определить, что это будет что-то вроде $cv_file = "www.test.nl/" . $row['cv_path'];

В результате echo $cv_file; даст вам www.test.nl/files/test.pdf

Теперь вы просто создать ссылку. echo "<a href='http://" . $cv_file . "'>cv file</a>";

То же самое будет выполнять один и тот же SELECT запрос, но добавить его в ссылке:

echo "<a href='http://www.test.nl/" . $row['cv_path'] . "'>cv file</a>"; 

Оба из них создать ссылку, принимая вас http://www.test.nl/files/test.pdf

Это действительно основы, вы не должны задавать такие простые вопросы, как они уже ответили на стек много раз.

EDIT. Что касается кнопки, если вы хотите использовать чистый HTML вы можете сделать, как BalusC говорит здесь: How to create an HTML button that acts like a link?

Что в вашем случае будет что-то вроде этого:

echo "<form action='http://" . $cv_file . "'>"; 
echo "<input type='submit' value='Go to cv'>"; 
echo "</form>"; 
+0

Хорошо, где я могу изменить запрос SELECT andd, где я должен добавить' $ cv_file = "www.test.nl/". $ row ['cv_path']; ' – GLRotterdam

+0

Изображение, которое гласит:« Пример страницы с деталями, где CV показывает cv_id, а не cv_path »<= это потому, что вы SELECT cv_id FROM cv вместо SELECT cv_path FROM cv или SELECT cv_name FROM cv - это запросы, запустите их в db. Позже проверьте свою таблицу, когда вы ее сгенерируете, ваш оператор SELECT неверен. Вот почему вы видите там id вместо чего-то другого xD Я не знаю, как еще объяснить это. Он показывает, что вы выбираете, чтобы показывать, и вы выбрали неправильную вещь. – vove

+0

Ничего себе, если бы я знал, что это было так просто, я бы попросил вас в другой теме, ха-ха, извините! Мне действительно нужно узнать больше PHP – GLRotterdam

1

с этим вы можете хранить имя файла в базе данных

$filetmp = $_FILES["cv"]["tmp_name"]; 

И получить изображение или файл, как

<img scr="<?=base_url?>/uploads/<?=your file name in DB?>"> 

Вот именно

+0

У меня есть '$ filetmp = $ _FILES ["cv"] ["tmp_name"]; ' в моем коде – GLRotterdam

Смежные вопросы