Upload naar database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Kenzo

kenzo

01/05/2006 17:16:00
Quote Anchor link
Hallo,

Heeft iemand een scriptje waarmee ik foto's kan uploaden, ze dan in een map zet, en ze ook in de database toevoegd?

Voor mijn part onder afbeelding1.jpg, en afbeelding2.jpg, of onder de gewone naam?

Het is namelijk voor een soort marktsysteempje. Mensen kunnen dan een foto uploaden, en staat automatisch ook in de database.


Bedankt!
 
PHP hulp

PHP hulp

23/11/2024 16:11:34
 
- wes  -

- wes -

01/05/2006 17:18:00
Quote Anchor link
heb ik wel, meerdere zelfs. ik weet trouwens niet of jij er ook fotos mee kan uploaden, als je de zoekknop al niet eens kan vinden
 
Kenzo

kenzo

01/05/2006 17:19:00
Quote Anchor link
ik heb gezocht, maar niets gevonden.

Heb je hem hier online staan?

Dan vind ik hem hopelijk wel
 
Arjan Kapteijn

Arjan Kapteijn

01/05/2006 17:25:00
Quote Anchor link
Zo moeilijk is het niet, de vraag is alleen of het verstandig is. Gebruik maken van een simpel filesysteem is veel efficienter/sneller en logischer dan zulke data in een database zetten.
 
Kenzo

kenzo

01/05/2006 17:26:00
Quote Anchor link
maar het is toch niet veel ruimte?

Ik upload een bestand, en in de database komt bijvoorbeeld in de tabel "afbeelding" >> image.jpg.

Op de site roep ik hem op met een Fetch?

is toch niet veel ruimte?
 
Willem Jan Z

Willem Jan Z

01/05/2006 17:35:00
Quote Anchor link
Zeg dat dan, ipv van het opslaan van de afbeelding in de database :s
 
Arjan Kapteijn

Arjan Kapteijn

01/05/2006 17:40:00
Quote Anchor link
Het gaat niet om de ruimte maar om snelheid en efficientie.
 
Kenzo

kenzo

01/05/2006 17:51:00
Quote Anchor link
ja.. het is toch gewoon tekst?

Heeft niemand dat?
 
Willem Jan Z

Willem Jan Z

01/05/2006 17:56:00
Quote Anchor link
Arjan, met een marksysteempje is het toch niet handig alles los te laten staan... Het wordt geen fotoalbum. Of wil je voor elke advertentie een nieuwe map maken, dan kan het wel ja.
 
- -

- -

01/05/2006 18:54:00
Quote Anchor link
Hier heb ik even wat geknutseld. Heb niet getest, maar denk dat het wel werkt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<html>
<head>
<title>Afbeelding uploaden</title>
</head>
<body>
<?
#Ik neem aan dat het nummer van de advertentie meegegeven is met POST onder de naam advertentieid, en de locatie naar het bestand in de variabele file
$locatie = "map/"; #directorie (CHMOD 777) met slash aan het eind
if (isset($_POST['advertentieid']) AND isset($_POST['file'])){ #checken of er wel een id en een plaatje is verstuurd
    if (is_numeric($_POST['advertentieid'])){ #checken of het idnummer wel nummeriek is (tegen hackers etc.)
        $advertentieid = $_POST['advertentieid']; #het nummer van de advertentie ophalen
        $file = pathinfo($_FILES['file']['name']); #een array met informatie over het plaatje opvragen
        $ext = $file['extension']; #de extensie van het plaatje opvragen
        if ($extension=="jpg" OR $extension=="JPG" OR $extension=="jpeg" OR $extension=="JPEG"){ #kijken of de extensie wel jpg, JPG, jpeg of JPEG is
            $maximalegrootte = ; #het aantal bytes dat de afbeelding maximaal mag zijn
            if ($_FILES['file']['size']<$maximalegrootte){ #controleren of de afbeelding niet te groot is
                move_uploaded_file($_FILES['file']['tmp_name'], $locatie.$advertentieid.".jpg"); #het plaatje uploaden in de aangegeven map, met als bestandsnaam het idnummer.jpg
                $username = ""; #gebruikersnaam van de mysql database
                $password = ""; #wachtwoord van de mysql database
                $hostname = ""; #de hostnaam van de mysqldatabase (vaak localhost)
                $database = ""; #de mysqldatabase (vaak hetzelde als de username)
                $connection = mysql_connect($hostname,$username,$password); #verbinding maken met de mysqldatabase
                $db = mysql_select_db($database,$connection); #de databasekiezen
                $tabel = ""; #de tabel waar de urls naar de plaatjes in worden opgeslagen
                $idveld = ""; #de naam van de kolom waar het idnummer in staat
                $urlveld = ""; #de naam van de kolom waar de url naar het plaatje in moet komen
                $actie = ""; #'vervangen' als er al een rij is aangemaakt met het idnummer, 'maken' als er nog geen rij is aangemaakt met dat idnummer
                if ($actie=="vervangen"){ #kijken of de actie vervangen is
                    $query = "UPDATE ".$tabel." SET ".$urlveld." = '"$locatie.$advertentieid.".jpg' WHERE ".$idveld." = '".$advertentieid."'"; #een mysql query maken
                    $result = mysql_query($query); #de mysql query uitvoeren
                }
                if ($actie=="maken"){ #kijken of de actie maken is
                    $query = "INSERT INTO ".$tabel." ('".$idveld."','".$urlveld."') VALUES ('".$advertentieid."','".$locatie.$advertentieid.".jpg')"; #een mysql query maken
                    $result = mysql_query($query); #de mysql query uitvoeren
                }
                print("<p><img src=\"".$locatie.$advertentieid.".jpg\"></p><p>Uw afbeelding is geupload.</p>"); #het upgeloade plaatje laten zien
            }
            else{
            print("<p>Uw afbeelding is ".$maximalegrootte-$_FILES['file']['size']." bytes te groot. De maximale grootte is ".$maximalegrootte." bytes.</p>"); #een melding geven als het plaatje te groot is
            }
        else{
        print("<p>Uw afbeelding heeft de verkeerde extensie. Goedgekeurde extensies zijn:</p><p><ul><li>.jpg</li><li>.JPG</li><li>.jpeg</li><li>.JPEG</li></p>");
        }
    }

    else{
    print("<p>Het idnummer van de advertentie moet nummeriek zijn.</p>");
    }
}

else{
print("<p>Er missen enkele variabelen.</p>");
}

?>

<form action="<? print($_SERVER['SCRIPT_NAME']); ?>" target="_self" method="POST" enctype="multipart/form-data">
<input type="hidden" name="advertentieid">
<p><input type="file" name="file"></p>
<p><input type="submit" value="Uploaden"></p>
</form>
</body>
</html>
 
Kenzo

kenzo

01/05/2006 19:11:00
Quote Anchor link
thanx... ff kijken of het werkt


wat is

actie = ""; #'vervangen' als er al een rij is aangemaakt met het idnummer, 'maken' als er nog geen rij is aangemaakt met dat idnummer


moet ik dat leeglaten of iets invullen?
 
Kenzo

kenzo

01/05/2006 19:13:00
Quote Anchor link
deze fout komt er:
Parse error: syntax error, unexpected T_IF in c:\appserv\www\deknagertjes.nl\modules\markt\upload.php on line 16



regel 16:

if ($_FILES['file']['size']<$maximalegrootte){ #controleren of de afbeelding niet te groot is
 
Winston Smith

Winston Smith

01/05/2006 19:51:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$maximalegrootte = ; # regel 15


Misschien moet je $maximalegrootte = ''; doen?
 
Kenzo

kenzo

01/05/2006 19:55:00
Quote Anchor link
nu krijg ik deze fout:
Parse error: syntax error, unexpected T_VARIABLE in c:\appserv\www\deknagertjes.nl\modules\markt\upload.php on line 24


Deze code is 24:

$query = "UPDATE ".$tabel." SET ".$urlveld." = '"$locatie.$advertentieid.".jpg' WHERE ".$idveld." = '".$advertentieid."'"; #een mysql query maken
 
Cynthia Fridsma

cynthia Fridsma

01/05/2006 20:03:00
Quote Anchor link
hmm... je kan toch ook een formulier gebruiken om de afbeelding op te slaan, i.p.v. ze in de database te plaatsen, en de URL met de afbeelding gegevens in de database opslaan?

Zo'n 'upload' script is éénvoudig te realiseren, zie voorbeeld.

--- upload.php ---
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
# This procedure will upload the pictures to the server
# The images will be uploaded into the images directory.

# Procedure written by Cynthia Fridsma


$hello = getcwd();
$file_dir = ($hello . "/images/");

echo date("m/d/y G.i:s");
echo ("<br><h2>");
echo date("F j, Y. \a\\t g.i.a");
echo ("</h2><br><br>");

foreach($_FILES as $file_name => $file_array) {
      
       # filter the filename so that it will become a valid filename
       # into a Linux environment. (A Mac and Windows environment are
       # much more relaxing with filenames, regarding spaces, upper- & lowercase
       # names. But Linux isn't

      
       $file_name=str_replace("'", "_", $file_array['name']);
       $file_name=str_replace(" ", "_", $file_array['name']);
       $file_name=stripslashes ($file_name);
       $file_name=trim($file_name);      
       $file_name=strtolower($file_name);    
                
       echo "path: " .$file_array['tmp_name'] . "<br>\n";
       echo "name: " .$file_name . "<br>\n";    
       echo "type: " .$file_array['type'] ."<br>\n";
       echo "size: " .$file_array['size'] ."<br>\n";

       if (is_uploaded_file($file_array['tmp_name'])) {
          move_uploaded_file($file_array['tmp_name'], "$file_dir/$file_name") or die ("Couldn't copy");
       echo "file was uploaded!<br><br>";
  }
}



?>


-- Einde upload.php -----------------

Je zou de bestandsnaam en URL via $_POST kunnen verwerken in je mysql database.
 
Kenzo

kenzo

01/05/2006 20:05:00
Quote Anchor link
maar dat meot dan in 2 stappen?

anders voegt hij de naam teo, en upload niets, of hij upload, en voegt geen naam toe?
 
Kenzo

kenzo

01/05/2006 20:29:00
Quote Anchor link
toch?
 
Cynthia Fridsma

cynthia Fridsma

01/05/2006 20:31:00
Quote Anchor link
Dit script doet niets anders dan file upload, maar je kan het natuurlijk aanpassen dat de gegevens tevens in een mysql database worden geplaatst...

Het script het ik geschreven voor een Content Management Systeem dat werkt met een 'flat file' database. Als ik het systeem af heb, wil ik het als open source gaan aanbieden en hoop ik met andere mensen te kunnen samenwerken :-)

Ontopic: ik zal morgen uitleggen hoe je dit kan implementeren in een mysql database ;-)
 
Cynthia Fridsma

cynthia Fridsma

02/05/2006 10:38:00
Quote Anchor link
Hierbij het beloofde complete script ;-) (en nu heb ik hem aangepast!!!

----- afbeelding_toevoegen.php -----------------

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
# De verwerking van de gegevens doen we gewoon
# met een eenvoudig formulier.

// verbind de server

require_once("config.php");

$go = $_POST[go];

if ($go ==""):

?>

<br><br><br>
<form name="form1" method="post" action="test1.php" enctype="multipart/form-data">
<input name="go" type="hidden" value="go">
  <table width="450" border="0" bgcolor="#99CCFF" align="center">
    <tr>
      <td bgcolor="#99CCFF">Omschrijving</td>
      <td><input name="omschrijving" type="text" id="omschrijving" size="50"></td>
    </tr>
    <tr>
      <td bgcolor="#99CCFF">Afbeelding</td>
      <td><input name="afbeelding" type="file" accept="image/jpeg" id="afbeelding" size="50">
  
    </tr>
    <tr>
      <td bgcolor="#99CCFF">&nbsp;</td>
      <td><input type="submit" name="Submit" value="Verzenden">
      <input type="reset" name="Reset" value="Herstellen"></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>

<?php
endif;
echo $go;
if ($go =="go"):
# This procedure will upload the pictures to the server
# The images will be uploaded into the images directory.

# Procedure written by Cynthia Fridsma


$hello = getcwd();
$file_dir = ($hello . "/images/");

echo date("m/d/y G.i:s");
echo ("<br><h2>");
echo date("F j, Y. \a\\t g.i.a");
echo ("</h2><br><br>");

foreach($_FILES as $file_name => $file_array) {
      
       # filter the filename so that it will become a valid filename
       # into a Linux environment. (A Mac and Windows environment are
       # much more relaxing with filenames, regarding spaces, upper- & lowercase
       # names. But Linux isn't

      
       $file_name=str_replace("'", "_", $file_array['name']);
       $file_name=str_replace(" ", "_", $file_array['name']);
       $file_name=stripslashes ($file_name);
       $file_name=trim($file_name);      
       $file_name=strtolower($file_name);    
                
       echo "path: " .$file_array['tmp_name'] . "<br>\n";
       echo "name: " .$file_name . "<br>\n";    
       echo "type: " .$file_array['type'] ."<br>\n";
       echo "size: " .$file_array['size'] ."<br>\n";

       if (is_uploaded_file($file_array['tmp_name'])) {
          move_uploaded_file($file_array['tmp_name'], "$file_dir/$file_name") or die ("Couldn't copy");
       echo "file was uploaded!<br><br>";
  }
}


$afbeelding = "images/" . $file_name;

echo $afbeelding . "is toegevoegd aan de database";

echo $_POST[omschrijving];
// voeg de nieuwe gevens toe

$query = "INSERT INTO afbeelding (nummer, omschrijving, afbeelding) VALUES ('', '$_POST[omschrijving]','$afbeelding')";  
    if(!mysql_db_query($dbname,$query,$db)) die(mysql_error());

endif;

?>

----- einde afbeelding_toevoegen.php -----------------

Uitleg:

Door in het formulier de variabel 'go' te gebruiken, wordt door middel van if ($go =="go") het upload script gestart, via het upload script krijgt de variabel $afbeelding, de URL van de afbeelding samen met de naam.

Als je later je database raadpleegd met bijvoorbeeld mysql_fetch_array, kan je daar de benodigde html tags toevoegen om de afbeelding zichtbaar te maken.

--- voorbeeld ----
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= mysql_query("SELECT * FROM databas WHERE nummer=$welk_nummer");
   while ($row = mysql_fetch_array($sql)) {

?>

    <img src="<?php echo $row[2]; ?>"></img>
<?php
}
[
/code]
Gewijzigd op 01/01/1970 01:00:00 door cynthia Fridsma
 
Kenzo

kenzo

02/05/2006 13:59:00
Quote Anchor link
ik weet niet wat ik verkeerd doe, maar hij upload geen foto, en zet niets in database?
 
Cynthia Fridsma

cynthia Fridsma

02/05/2006 14:37:00
Quote Anchor link
Oeps, mijn foutje, sorry... ik was vergeten om in het formulier de hidden file te plaatsen....
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.