ik ben een uploadsysteem aan het maken. waarbij ik mijn project wil weergeven een soort formulier. het uitlezen is niet het probleem maar het invoeren van deze gegevens zit ik even mee vast. want ik heb wel iets kunnen maken maar het gaat niet werken. is er een betere mogelijkheid hoe ik dit kan oplossen?

<?php
if(isset($_POST['submit'])){

$titel = $_POST['titel'];
$subtitel = $_POST['subtitel'];
$url_plaatje = $_POST['url_plaatje'];// weet niet of het werkt?
$url_project = $_POST['url_project'];// weet niet of het werkt?
$omschrijving = $_POST['omschrijving'];
$datum = $_POST['datum'];

include('mysql_connect.php'); // Database aanroepen

$query_controleren_project = mysql_query("SELECT * FROM Project WHERE titel='$titel'");
$num_controleren_project = mysql_num_rows ($query_controleren_project);

if(!$num_controleren_project == 1){
$query_insert = mysql_query ("INSERT INTO Project (titel, subtitel, url_plaatje, url_project, download_project, omschrijving, datum) VALEUS('$titel','$subtitel','$url_plaatje','$url_project','$omschrijving','$datum')");
}else{
echo "Dit Project staat al op de website";
}

}else{
echo "
<form action='upload.php' method='POST' enctype='multipart/form-data'>
<p>Titel project:
<input name='mytitel' size='50' type='text'><br>
Subtitel:<input name='mysubtitel' size='50' type='text'><br>
Afbeelding:
<input name='myimage' type='file' size='50' title='afbeelding'><br>
Project:<input name='myproject' type='file' size='50'><br>
Download url:<input name='myproject' type='url' size='50'><br>
Datum:

<input name='mydate' type='date'><br>
<br>
Omschrijving project:<br>
<textarea name='omschrijving' rows='10' cols='50'></textarea>
<input type='submit' value='Upload het project' size='38'>
</p>
</form>
";

}
?>
Je vraag is niet helemaal duidelijk:

- Wil je plaatjes uploaden naar de webserver?
- Wil je plaatjes uploaden naar de databaseserver?
- Wil je alleen de URL van plaatjes opslaan in de database?
- Of wil je plaatjes uploaden door hun URL op te geven?
Een paar eerste opmerkingen over je script:

- regel 2 kun je beter vervangen door if($_SERVER['REQUEST_METHOD'] == 'POST')
- regel 4 t/m 9 zijn helemaal onzinnig. Komt er eigenlijk op neer dat ik nu zeg: Enrico, nu noem ik jou Kees. Als ik jou gewoon Enrico blijf noemen is het veel duidelijker.
- regel 6&7; komen binnen in $_FILES
- regel 11: je kunt beter mysql_ functies loslaten en met mysqli_ functies gaan werken. Mysql_ vervalt uiteindelijk.
- regel 13: selecteer niet alles met * maar benoem wat je nodig hebt
- regel 13&17: denk aan SQL injectie. Kijk eens naar mysql(i)_real_escape_string
- regel 14 en 16 is dan wat dubbel
Ward van der Put op 11/08/2014 15:59:38

Je vraag is niet helemaal duidelijk:

- Wil je plaatjes uploaden naar de webserver?
- Wil je plaatjes uploaden naar de databaseserver?
- Wil je alleen de URL van plaatjes opslaan in de database?
- Of wil je plaatjes uploaden door hun URL op te geven?


De plaatjes wil ik op mijn server plaatsen en die afbeeldingen moet ik uiteindelijk kunnen weergeven op de site
Je controleert nu op regel 17 of er al 1 van bestaat. Zo ja voer je hem nog een keer in, als het niet al 1 keer bestaat geef je juist de melding dat het al bestaat... moet omgekeerd zijn denk ik?
@Ramon: er staat wel een ! voor op regel 17.

Maar jouw hele code gaat naar mijn idee niet werken.
De namen die je in de $_POST waarden hebt staan komen niet overeen met het formulier (los van het feit dat je geen nieuwe variabelen aan zou hoeven maken).

Waar is je code om een afbeelding te uploaden naar de server?
(bv http://www.w3schools.com/php/php_file_upload.asp, of zoek op google met upload file php voor nog veel meer tuts, vragen, voorbeelden, etc.).
@Ramon: er staat wel een ! voor op regel 17.

Helemaal overheen gekeken, excusi!
Wat dus betekent dat alles groter dan 0 daar false op levert. Voor dit script wellicht geen probleem, maar op zijn minst een erg vreemde manier van checken...
Pas regel 17 eens aan van:


    VALEUS  


naar

    VALUES


Dat zal wellicht ook beter gaan
Ik ben momenteel even op nieuw begonnen en probeer eerst een plaatje op de server te krijgen en dat werkt maar ik wil ook dat hij in mijn database terechtkomt bij url_plaatje. Ik heb dit wel eens eerder gedaan met een andere project en dat werkte wel maar nu werkt deze code niet helemaal op deze database. Wat doe ik dan verkeerd?

<?php
session_start();
include('mysql_connect.php'); // connectie met database

$resultaat = mysql_query("SELECT MAX(id) FROM Project", $db); // checkt of database image bestaat
$rij = mysql_fetch_array($resultaat);
$rij = $rij['MAX(id)'] + 1 ; // veranderd de naam in een nummer van de foto's aan de hand van de database + 1
$image = addslashes(file_get_contents($_FILES['myimg']['tmp_name']));
$image_name = addslashes($_FILES['myimg']['name']); // naam bestand
$image_size = getimagesize($_FILES['myimg']['tmp_name']); // grote van de foto
$filePath = "uploaded/" . $rij; // locatie en naam van het bestand wat is geupload

if($size > 3000000)
{
die("Bestand is te groot!");
}
else
move_uploaded_file($_FILES["myimg"]["tmp_name"], "uploaded/" . $rij . ".jpg");// plaats waar de foto wordt geplaatst op de server

mysql_query("INSERT INTO Project VALUES ('','$image_name','$filePath')");// alle informatie wordt in een database geplaatst
?>
Regel 8: Waarom addslashes() over een plaatje? => Kans is groot dat het nu mismaakt is.
Regel 9: Waarom addslashes? => Dat is geen beveiliging voor in de database.
Regel 10: grote => grootte.
Regel 11: $filePath => Waarom gebruik je dat niet ook in regel 18?
Regel 18: jpg? => Dat weet je niet.
Regel 20: INSERT INTO ... (veldnaam, ...) VALUES ('waarde', ...)

Maak eens foutafhandeling.
Alles wat je nu doet is gebaseerd op gokken dat het goed gaat.
Je checkt niet of er gepost is.
Je checkt niet of de download wel is gelukt.
Je checkt niet of het verplaatsen is gelukt.
De query is niet beveiligd.
Je checkt niet of de query is gelukt.

Het enige dat je controleert is de grootte en dan moet ie nog dood ook.

Reageren