[PHP/MySQL] Niet alle velden db veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor de website die ik maak kunnen er plaatjes worden opgeslagen in een MySQL database. De bestandsnaam wordt opgeslagen in een database, maar het plaatje zelf wordt op een map op de harde schijf opgeslagen.
Er is een mogelijkheid om 3 plaatjes te selecteren en te uploaden, dit werkt ook allemaal prima.
Maar zodra er minder dan 3 plaatjes worden geupload (dus 1 of 2 plaatjes) krijg ik een foutmelding: Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\program files\apache group\apache\htdocs\upload.php on line 58.

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
63
64
65
66
67
68
69
70
71
72
73
74
75
<html>
<head>
<title>Upload Status</title>
<style type="text/css">
<!--
body {
    background-image: url(achtergrond.JPG);
}
-->
</style></head>
<body text = "red">
<h2>
<b>
<center>
<?php
if(is_uploaded_file($_FILES['content']['tmp_name']))
{
  // file uploaded to server


     $imageInfo = getimagesize($_FILES['content']['tmp_name']);
     $width = $imageInfo[0];
     $height = $imageInfo[1];
     $image_type = $imageInfo[2];
move_uploaded_file($_FILES['content']['tmp_name'], "images/".$_FILES['content']['name']);
}

if(is_uploaded_file($_FILES['content2']['tmp_name']))
{
  // file uploaded to server


     $imageInfo = getimagesize($_FILES['content2']['tmp_name']);
     $width = $imageInfo[0];
     $height = $imageInfo[1];
     $image_type = $imageInfo[2];
move_uploaded_file($_FILES['content2']['tmp_name'], "images/".$_FILES['content2']['name']);
}


if(is_uploaded_file($_FILES['content3']['tmp_name']))
{
  // file uploaded to server


     $imageInfo = getimagesize($_FILES['content3']['tmp_name']);
     $width = $imageInfo[0];
     $height = $imageInfo[1];
     $image_type = $imageInfo[2];
move_uploaded_file($_FILES['content3']['tmp_name'], "images/".$_FILES['content3']['name']);

//Insert record into database
      $db = mysql_connect("localhost","root","") or Die(mysql_error());
      mysql_select_db("images",$db) or Die("Error: " . mysql_error()); 
$insert_data="REPLACE INTO images VALUES ('', '".$_POST['nummer']."' , '".$_POST['deelnemers']."' , '".$_FILES['content']['name']."', '".$_FILES['content2']['name']."','".$_FILES['content3']['name']."' )";
}

if (mysql_query($insert_data,$db)) {
echo "Gegevens toegevoegd";
}
else {
echo "FOUT: geen gegevens toegevoegd!";
}    
          
?>
<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
</h2>
</b>
</center>
</body>
</html>


weet iemand een oplossing voor dit probleem?

groetjes,
Kenney

Acties:
  • 0 Henk 'm!

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 17-09 20:25
Waarschijnlijk omdat plaatje 3 er niets is? Hij probeert bijvoorbeeld wel de imagesize van content3 te krijgen, maar die is er niet dus zal het niet goed gaan. Controleer eerst of er wel een plaatje is alvorens je gegevens wil gaan opslaan..

stp - PSN ID: stp_4


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Dat is ook niet zo vreemd. Waneer er geen 3e plaatje is wordt de code die binnen die if staat ook niet uitgevoerd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 20:47
Kortom gooi in elk if-loopje met is_uploaded_file een apart stukje sql voor het invoegen in je database.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Jij hebt dus de mogelijkheid om maximaal 3 pictures tegelijkertijd in een DB te stoppen, dit aantal kan anders zijn. Dit zou bij jouw al het idee moeten opwekken dat je SQL query zo moet gaan opbouwen dat je alleen die pictures in de DB zet die je ook upload.

Nu ga je er in line 55 ervan uit dat er altijd 3 pictures worden geupload. Jij kunt je databasequerie dynamisch genereren, jij controleert al met 3 if-statements op die picutures. Hier kun je ook telkens een stukje toevoegen aan je SQL query.

/edit
Je if-statement met mysql_query er in zijn ook niet helemaal zuiver, maar dat staat hierboven mij wel uitgelegt.

[ Voor 11% gewijzigd door Sybr_E-N op 07-02-2005 13:01 ]


Acties:
  • 0 Henk 'm!

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 17-09 20:25
Kun je geen foreach loopje maken en daarin gegevens van het plaatje opslaan als variabele van de insert querie?

stp - PSN ID: stp_4


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt allemaal, heb een beetje lopen rotzooien en het werkt nu _/-\o_
Maar nu zit ik met het probleem als ik de pagina ga bekijken, als ik zegmaar 2 plaatjes heb opgeslagen dan is de derde een kruisje.
Dus nu probeer ik in het script in te stellen dat als een veld geen waarde bevat deze niet wordt weergeven, krijg dit alleen niet aan de praat :(

hoofd3.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
<html>
<head>
<title>Afbeelding</title>
<style type="text/css">
<!--
body {
    background-image: url(achtergrond.JPG);
}
-->
</style></head>
<body link = "Red" vlink = "Red">
<body text = "red">
<h2>
<b>
<center>
<?php

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

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

$id = $_GET['id']; 

$SQL_statement = "SELECT * FROM images WHERE id = '". $id.
"'";
 

$resultset = mysql_query($SQL_statement);
while($data = mysql_fetch_array($resultset)) {

$id = $data ["id"];
$content = $data ["image"];
$content2 = $data ["image2"];
$content3 = $data ["image3"];

if ($content =! null) {
echo "[img]'images/".$content."'[/img]";
}

if ($content2 =! null) {
echo "[img]'images/".$content2."'[/img]";
}

if ($content =! null) {
echo "[img]'images/".$content3."'>";
}
}
?>
<BR>
<br>
<br>
<br>
Klik[/img]hier</a> om andere projecten te bekijken of klik <a href = "invoeren.php">hier</a> om een project toe te voegen
</h2>
</b>
</center>
</body>
</html>

Ik heb het dus wel al geprobeerd met de "=!" tekentjes, maar dit werkt niet...
iemand een id?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Probeer eens wat netter te coden, en eerst zelf even goed naar je code te kijken voor je hier weer heen rent. Plaatje 3 doet raar, kijk vervolgens eens even wat je exact aan het doen bent bij plaatje 3 en wat dat verschilt met plaatje 1 en 2.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 17-09 20:25
als $content =! null dan $content3 als plaatje laten zien.....

stp - PSN ID: stp_4


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, je hebt gelijk, had beter moeten kijken 8)7 , hij doet het nu wel
in ieder geval bedankt
Pagina: 1