[PHP/MySQL] Meerdere plaatjes toevoegen in tabel *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik moet op school een website maken waar gegevens van projecten die leerlingen maken kunnen worden opgeslagen in een MySQL database, bij deze gegevens zit ook een plaatje van een project. Deze wordt geupload in een MediumBlob veld.

Nu is het probleem, hoe kan je meerdere plaatjes op die manier uploaden??

Dit is het bestand upload.php:


PHP:
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
<?php
session_start(); 
header("Cache-control: private"); 
?>
<html>
<head>
<title>Upload Status</title>
<style type="text/css">
<!--
body {
    background-image: url(achtergrond.JPG);
}
-->
</style></head>
<body text = "red" vlink = "orange">
<B><H2><center>
<?php 


if (IsSet($HTTP_POST_VARS['submit'])) { 
  if ($HTTP_POST_FILES[file][tmp_name] != "none" || $HTTP_POST_FILES[file2][tmp_name] != "none") { 
    $fp = fopen($HTTP_POST_FILES[file][tmp_name],"r"); 
$fp2 = fopen($HTTP_POST_FILES[file2][tmp_name],"r2"); 
    if ($fp || $fp2) { 
      $content = fread($fp,filesize($HTTP_POST_FILES[file][tmp_name])); 
    $content2 = fread($fp,filesize($HTTP_POST_FILES[file2][tmp_name])); 
      fclose($fp);  
    fclose($fp2);
      $db = mysql_connect("localhost","root","") or Die(mysql_error());
      mysql_select_db("images",$db) or Die("Error: " . mysql_error()); 
      $sql = "REPLACE INTO images VALUES('" . $_POST['nummer'] . "','" . $_POST['deelnemers'] . "','" . addslashes($content) . "', '" .addslashes($content2) . "')"; 
      mysql_query($sql,$db) or Die(mysql_error());
      mysql_close($db); 

      print "Bestand opgeslagen"; 
    
} 
} else { 
      print "Kan bestand niet openen"; 
}
}  
$nummer = $_POST['nummer']; 
$_SESSION['nummer'] = $nummer;
$deelnemers = $_POST['deelnemers']; 
$_SESSION['deelnemers'] = $deelnemers; 
$content = $_POST['content']; 
$_SESSION['content'] = $content;  
?>
<br>
<br>
<form action="upload2.php" method="POST" enctype="multipart/form-data"> 
Voeg nog een foto toe: <input type="file" name="file2">&nbsp;<input type="submit" name="submit" value="upload"> 
<BR>
<br>
<br>
<br>
Klik <a href = "hoofd2.php">hier</a> om de projecten te bekijken of klik <a href = "invoeren.php">hier</a> om nog een project toe te voegen
</B>
</H2>
</center>
</body>
</html>  

Het probleem is dat bij dit script alleen maar 1 plaatje ($content1) wordt opgeslagen, die ander slaat die gewoon over....
Weet iemand wat wel de goede code is, heb al heel wat sites afgezocht maar nog niks gevonden!
Alvast bedankt! ;)

Later

Acties:
  • 0 Henk 'm!

Verwijderd

Je springt wel wat vreemd in moet ik zeggen. Wat heb je al geprobeerd? Oplossing lijkt met niet heel erg moeilijk aangezien je er gewoon wat meer input-velden in je formulier moet zetten en vervolgens een while-loop maakt die de velden afgaat (met een controle die je nu zo ongeveer in je if-statement gebruikt).

edit:

Dit is dan wel een oplossing voor 1 of meerdere plaatjes waarbij het max aantal wordt bepaald door het aantal velden op het formulier. En zoals Pollus al aangeeft moet je natuurlijk ook iets aan je db aanpassen.

[ Voor 28% gewijzigd door Verwijderd op 24-01-2005 14:35 ]


Acties:
  • 0 Henk 'm!

  • Pollus
  • Registratie: Juni 2004
  • Laatst online: 05-09-2022
Uhm, je hebt wel in je db een nieuw veld aangemaakt voor het 2e plaatje?

(soms is het heel simpel)

Pollus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb in mijn db alle velden die nodig zijn: nummer varchar 255 (Primary Key), deelnemers varchar 255, content mediumblob, content2 mediumblob.

En ik heb ook al een pagina met die input velden....

invoegen.php


PHP:
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
<html> 

<head> 
<script type="text/javascript">
function put()
{
txt=document.forms[0].nummers.options[document.forms[0].nummers.selectedIndex].text
document.forms[0].nummer.value=txt
}
</script>
<title>Voer gegevens in</title> 
<style type="text/css">
<!--
body {
    background-image: url(achtergrond.JPG);
}
-->
</style></head>
<body text = "red">
<h3>
<b>
<?php
include "password_protect_page.php"; 

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "images";

mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die ("kan database niet selecteren");


$mysql = mysql_query("SELECT * FROM images ORDER BY nummer"); 

while ($regel = mysql_fetch_array($mysql)){
$nummer = $regel["nummer"];
$deelnemers = $regel["deelnemers"];
$options.="<OPTION VALUE=\"$id\">".$nummer;
}
?>
<form method="POST" action="niets.php" enctype="multipart/form-data" name="theForm"> 
Project nummer: <input type ="text" name = "nummer"><SELECT NAME="nummers" onchange = "put()">
<OPTION VALUE=0>
<?=$options?>
</SELECT><br>
deelnemers: <input type = "text" name = "deelnemers"><br>
Bestand: <input type="file" name="file"><br><input type="file" name="file2"><BR><input type="submit" name="submit" value="upload/Update" OnClick="document.theForm.action='upload.php'">&nbsp;
<INPUT type="submit" name="submit" value="Verwijder" OnClick="document.theForm.action='verwijder.php'"> 
</form> 
</B>
</h3>
</body> 
</html>
 


Dit moet ook allemaal goed zijn, ik heb al geprobeerd om later content2 aan te vullen door middel van UPDATE images SET content2 = blablabla, maar dit mocht ook niet helpen, want dan had content2 wel een afbeelding, maar was die van content weer leeg |:(

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Verwijderd schreef op maandag 24 januari 2005 @ 14:42:
Ik heb in mijn db alle velden die nodig zijn: nummer varchar 255 (Primary Key), deelnemers varchar 255, content mediumblob, content2 mediumblob.
[..]
Sinds wanneer zijn nummers varchars? Wil je dat je database traag wordt?

Mocht je een plaatje in de database willen opslaan (wat generiek een slechte oplossing is omdat het vaak een zware load op de database genereert ) kan je het best een aparte tabel voor de plaatjes maken, met elke plaatje een uniek nummer, evt. een naam en dan de blob veld. En dat dan aan het 'project' koppelen via een koppel tabel.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dusty schreef op maandag 24 januari 2005 @ 18:33:
[...]

Sinds wanneer zijn nummers varchars? Wil je dat je database traag wordt?

Mocht je een plaatje in de database willen opslaan (wat generiek een slechte oplossing is omdat het vaak een zware load op de database genereert ) kan je het best een aparte tabel voor de plaatjes maken, met elke plaatje een uniek nummer, evt. een naam en dan de blob veld. En dat dan aan het 'project' koppelen via een koppel tabel.
Nummer is zegmaar een projectnummer en er kunnen ook letters in voorkomen, dus vandaar :)
Maar bedankt voor je hulp, ga het zo snel mogelijk proberen! ;)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op dinsdag 25 januari 2005 @ 08:43:
[...]

Nummer is zegmaar een projectnummer en er kunnen ook letters in voorkomen, dus vandaar :)
En nu heb je dus een varchar(255) als primary key, wat op z'n zachtst gezegd niet bevorderlijk is voor de snelheid van je database. Voeg eens snel een auto-increment integer als surrogate primary key toe :)

Professionele website nodig?

Pagina: 1