Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, Kuvan uploadaus ongelma

laurii [15.06.2010 08:32:03]

#

Noniin eli nyt on sit taas ongelmia, olen tässä hetken pähkäillyt tätä ja miettinyt että mikäköhän on ongelmana, eli mulla on nettisivuilla oma formi jolla voi nettisivuja jonkin verran päivitellä ja siinä on mahdollisuus lähettää kuva, mutta kun kuva lähetetään tulee palvelimelle aivan sen näköinen kuvatiedosto mutta koko on 0kt/0t, eli se on siis tyhjä.

<?
if ($_POST['imagecb']  ==  "c") {

function rndstr($length) {$characters  =  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	$string = "";for ($p = 0; $p < $length; $p++) {$str .= $characters[mt_rand(0, strlen($characters))];
	}
	return $str;
	}
	$name1  =  explode(".",$_FILES['file']['name']);
	$name2  =  explode(".",$_FILES['file1']['name']);
	$name3  =  explode(".",$_FILES['file2']['name']);
	$name4  =  explode(".",$_FILES['file3']['name']);
	$name5  =  explode(".",$_FILES['file4']['name']);
	$name6  =  explode(".",$_FILES['file5']['name']);
	$name7  =  explode(".",$_FILES['file6']['name']);
	$name8  =  explode(".",$_FILES['file7']['name']);
	$name9  =  explode(".",$_FILES['file8']['name']);
	$name10  =  explode(".",$_FILES['file9']['name']);

	$nim1  =  rndstr (20);
	$nim2  =  rndstr (20);
	$nim3  =  rndstr (20);
	$nim4  =  rndstr (20);
	$nim5  =  rndstr (20);
	$nim6  =  rndstr (20);
	$nim7  =  rndstr (20);
	$nim8  =  rndstr (20);
	$nim9  =  rndstr (20);
	$nim10  =  rndstr (20);

	$nimi1  =  $nim1.".".$name1[1];
	$nimi2  =  $nim2.".".$name2[1];
	$nimi3  =  $nim3.".".$name3[1];
	$nimi4  =  $nim4.".".$name4[1];
	$nimi5  =  $nim5.".".$name5[1];
	$nimi6  =  $nim6.".".$name6[1];
	$nimi7  =  $nim7.".".$name7[1];
	$nimi8  =  $nim8.".".$name8[1];
	$nimi9  =  $nim9.".".$name9[1];
	$nimi10  =  $nim10.".".$name10[1];

# Tiedoston suurin sallittu koko (kt)
$max_size  =  5000000;
# Minne kuvat kopioidaan
$hakemisto  =  "../kuvat2/";
if (file_exists("../kuvat2")); else mkdir("../kuvat2", 0777);



function uploadimg($nimi,$num) {

        global $hakemisto;
        global $max_size;
		global $nimi1;
		global $nimi2;
		global $nimi3;
		global $nimi4;
		global $nimi5;
		global $nimi6;
		global $nimi7;
		global $nimi8;
		global $nimi9;
		global $nimi10;

		if ($num  ==  "1"){$nimiy  =  $nimi1;}
		elseif ($num  ==  "2"){$nimiy  =  $nimi2;}
		elseif ($num  ==  "3"){$nimiy  =  $nimi3;}
		elseif ($num  ==  "4"){$nimiy  =  $nimi4;}
		elseif ($num  ==  "5"){$nimiy  =  $nimi5;}
		elseif ($num  ==  "6"){$nimiy  =  $nimi6;}
		elseif ($num  ==  "7"){$nimiy  =  $nimi7;}
		elseif ($num  ==  "8"){$nimiy  =  $nimi8;}
		elseif ($num  ==  "9"){$nimiy  =  $nimi9;}
		elseif ($num  ==  "10"){$nimiy  =  $nimi10;}

        $file_size      =  $_FILES[$nimi]['size'];
        $file_tmp_name  =  $_FILES[$nimi]['tmp_name'];
        $file_type      =  $_FILES[$nimi]['type'];

        # Tarkistetaan onko annettu tiedosto liian suuri
        if ((int)$file_size > (int)$max_size) { die("Tiedoston koko on liian suuri! Suurin sallittu koko on " . $max_size . " tavua."); }

        move_uploaded_file($file_tmp_name, $hakemisto . $nimiy);

}

$toiminto  =  $_POST['toiminto'];
$kohde  =  htmlspecialchars($_POST['kohde']);
$vuosi  =  htmlspecialchars($_POST['vuosi']);
$suunnittelu  =  htmlspecialchars($_POST['suunnittelu']);
$urakoitsija  =  htmlspecialchars($_POST['urakoitsija']);
$isannointi  =  htmlspecialchars($_POST['isannointi']);
$valvonta  =  htmlspecialchars($_POST['valvonta']);
$do  =  "";
$toimet1  =  htmlspecialchars($_POST['toimet1']);
$toimet2  =  htmlspecialchars($_POST['toimet2']);
$toimet3  =  htmlspecialchars($_POST['toimet3']);
$toimet4  =  htmlspecialchars($_POST['toimet4']);
$toimet5  =  htmlspecialchars($_POST['toimet5']);
$toimet6  =  htmlspecialchars($_POST['toimet6']);
$id2  =  $_POST['id2'];

if ($toiminto  ==  "Muokkaa"){

$editablename  =  $_POST['editablename'];
$news2  =  mysql_query("SELECT id,kohde,toimet1,toimet2,toimet3,toimet4,toimet5,toimet6,suunnittelu,vuosi,urakoitsija,isannointi,valvonta FROM refkohteet WHERE kohde = '".$editablename."'");
$news2  =  mysql_fetch_array($news2);
if ($editablename){$do  =  4; $id2  =  $news2['id']; $kohde2  =  $news2['kohde']; $toimet12  =  $news2['toimet1']; $toimet22  =  $news2['toimet2']; $toimet32  =  $news2['toimet3']; $toimet42  =  $news2['toimet4'];  $toimet52  =  $news2['toimet5'];  $toimet62  =  $news2['toimet6'];   $suunnittelu2  =  $news2['suunnittelu'];  $vuosi2  =  $news2['vuosi'];  $urakoitsija2  =  $news2['urakoitsija'];  $isannointi2  =  $news2['isannointi']; $valvonta2  =  $news2['valvonta'];
} else {

if ($_POST["imagecb9"]  ==  "c") {
        uploadimg('file9','10');
}
if ($_POST["imagecb8"]  ==  "c") {
        uploadimg('file8','9');
}
if ($_POST["imagecb7"]  ==  "c") {
        uploadimg('file7','8');
}
if ($_POST["imagecb6"]  ==  "c") {
        uploadimg('file6','7');
}
if ($_POST["imagecb5"]  ==  "c") {
        uploadimg('file5','6');
}
if ($_POST["imagecb4"]   ==  "c") {
        uploadimg('file4','5');
}
if ($_POST["imagecb3"]  ==  "c") {
        uploadimg('file3','4');
}
if ($_POST["imagecb2"]  ==  "c") {
        uploadimg('file2','3');
}
if ($_POST["imagecb1"]  ==  "c") {
        uploadimg('file1','2');
}
if ($_POST["imagecb"]  ==  "c") {
        uploadimg('file','1');
}

mysql_query("UPDATE refkohteet SET kohde = '".$kohde."', toimet1 = '".$toimet1."', toimet2  = '".$toimet2."', toimet3  = '".$toimet3."', toimet4  = '".$toimet4."', toimet5 = '".$toimet5."', toimet6  = '".$toimet6."', suunnittelu = '".$suunnittelu."', urakoitsija = '".$urakoitsija."', isannointi = '".$isannointi."', vuosi = '".$vuosi."', valvonta = '".$valvonta."' WHERE id = '".$id2."'");

//Kuvien muokkaus



if ($_POST['imagecb']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva1 = '".$nimi1."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb1']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva2 = '".$nimi2."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb2']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva3 = '".$nimi3."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb3']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva4 = '".$nimi4."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb4']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva5 = '".$nimi5."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb5']  ==  "c") {
mysql_query("UPDATE refkohteet  SET kuva6 = '".$nimi6."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb6']  ==  "c") {
mysql_query("UPDATE refkohteet  SET kuva7 = '".$nimi7."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb7']  ==  "c") {
mysql_query("UPDATE refkohteet  SET kuva8 = '".$nimi8."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb8']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva9 = '".$nimi9."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb9']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva10 = '".$nimi10."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb10']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva11 = '".$nimi11."' WHERE id = '".$id2."'");
}
if ($_POST['imagecb11']  ==  "c") {
mysql_query("UPDATE refkohteet SET kuva12 = '".$nimi12."' WHERE id = '".$id2."'");}

$do  =  "Kohdetta muokattu onnistuneesti!";
}}

elseif ($do  ==  4){?>
<form method = "post" action = "edit.php" enctype = "multipart/form-data" >
<table align = "center" cols = "2">
<input type = "hidden" name = "id2" value = "<?php echo $id2; ?>"/>
<tr><td>Kohde:</td></tr>
<tr><td><input name = "kohde" id = "kohde" size = "30" maxlength = "50"  value = "<?php echo $kohde2; ?>"/> </td></td>
<tr><td>Vuosi:</td></tr>
<tr><td><input name = "vuosi" id = "vuosi" size = "5" maxlength = "4" value = "<?php echo $vuosi2; ?>"/> </td></td>
<tr><td>Toimenpiteitä:</td></tr>
<tr><td><li><input name = "toimet1" id = "toimet1" size = "30" maxlength = "45" value = "<?php echo $toimet12; ?>"/> </td></td>
<tr><td><li><input name = "toimet2" id = "toimet2" size = "30" maxlength = "45" value = "<?php echo $toimet22; ?>"/> </td></td>
<tr><td><li><input name = "toimet3" id = "toimet3" size = "30" maxlength = "45" value = "<?php echo $toimet32; ?>"/> </td></td>
<tr><td><li><input name = "toimet4" id = "toimet4" size = "30" maxlength = "45" value = "<?php echo $toimet42; ?>"/> </td></td>
<tr><td><li><input name = "toimet5" id = "toimet5" size = "30" maxlength = "45" value = "<?php echo $toimet52; ?>"/> </td></td>
<tr><td><li><input name = "toimet6" id = "toimet6" size = "30" maxlength = "45" value = "<?php echo $toimet62; ?>"/> </td></td>
<tr><td>Suunnittelu:</td></td>
<tr><td><input name = "suunnittelu" id = "suunnittelu" size = "30" maxlength = "50" value = "<?php echo $suunnittelu2; ?>"/> </td></td>
<tr><td>Urakoitsija:</td></td>
<tr><td><input name = "urakoitsija" id = "urakoitsija" size = "30" maxlength = "50" value = "<?php echo $urakoitsija2; ?>"/> </td></td>
<tr><td>Isännöinti:</td></td>
<tr><td><input name = "isannointi" id = "isannointi" size = "30" maxlength = "50"  value = "<?php echo $isannointi2; ?>"/> </td></td>
<tr><td>Valvonta:</td></td>
<tr><td><input name = "valvonta" id = "valvonta" size = "30" maxlength = "50" value = "<?php echo $valvonta2; ?>"/></td></td>
<tr><td>
<table>
<input type="checkbox" value="c" name="imagecb" onClick="javascript:toggleLayer('picture');">
Kuva
    <div style="display:none" id="picture">
<input type="file" name="file">
<input type="checkbox" value="c" name="imagecb1" onClick="javascript:toggleLayer('pictur');">
Kuva2 </div>
    <div style="display:none" id="pictur">

<input type="file" name="file1"/>

      <input type="checkbox" value="c" name="imagecb2" onClick="javascript:toggleLayer('pictu');">
Kuva3</div>
    <div align="left" style="display:none" id="pictu">
    <input type="file" name="file2"/>
<input type="checkbox" value="c" name="imagecb3" onClick="javascript:toggleLayer('pict');">
Kuva4</div>
    <div align="left" style="display:none" id="pict">
    <input type="file" name="file3"/>
    <input type="checkbox" value="c" name="imagecb4" onClick="javascript:toggleLayer('pic');">

Kuva5</div>
    <div align="left" style="display:none" id="pic">
    <input type="file" name="file4"/>
        <input type="checkbox" value="c" name="imagecb5" onClick="javascript:toggleLayer('pi');">
Kuva6</div>
    <div align="left" style="display:none" id="pi">
    <input type="file" name="file5">
    <input type="checkbox" value="c" name="imagecb6" onClick="javascript:toggleLayer('p');">
Kuva7</div>

    <div align="left" style="display:none" id="p">
    <input type="file" name="file6"/>
        <input type="checkbox" value="c" name="imagecb7" onClick="javascript:toggleLayer('p1');">
Kuva8</div>
    <div align="left" style="display:none" id="p1">
    <input type="file" name="file7">
     <input type="checkbox" value="c" name="imagecb8" onClick="javascript:toggleLayer('p2');">
Kuva9</div>
    <div align="left" style="display:none" id="p2">

    <input type="file" name="file8"/>
         <input type="checkbox" value="c" name="imagecb9" onClick="javascript:toggleLayer('p3');">
Kuva10</div>
    <div align="left" style="display:none" id="p3">
    <input type="file" name="file9"/>

    </div>

    </div>
      </table>
 </td></tr>

Teuro [15.06.2010 09:05:12]

#

Yritä tehdä ensin sivu, jonka avulla voit lähettää yhden kuvan palvelimelle. Tuossa on niin paljon virheitä, että tuosta on jo todella hankala saada tolkkua. Voisit vaikka katsella putkasta noita kuvan lähetykseen tehtyjä koodivinkkejä, joista pääset jyvälle tuosta kuvan lataamisesta.

laurii [15.06.2010 09:07:02]

#

en tajua, minulla on tuolla samalla pohjalla oleva toinen koodi joka toimii, joka lisää ref.kohteen, mutta tämä muokkaus ei toimi.

Teuro [15.06.2010 09:18:09]

#

Ongelmat alkavat ihan ekalta riviltä <? ei ole kaikilla palvelimilla tuettu, lisätään <?php, jonka jälkeen tulee Parse error: syntax error, unexpected $end in ... on line 262. Eli toisella rivillä tehdylle if lauseen aaltosululle ei löydy lopettavaa sulkua. Mihin kohtaan tuon tulisi loppua? Kun sivu ladataan ensimmäisen kerran mitään $_POST muuttujaa ei ole lähetetty, eli ne pitää tarkistaa erikseen onko niitä lähetetty isset() funktio sopii tähän.

Pidemmälle ei oikein voi jatkaa tarkistamista, kun en jaksa arvailla mihin kohtaan tuo lopettava sulku tulisi. Ennen html osuutta, joka on myös rikki, tulee samanlainen virhe, eli tuolla aloittavalle aaltosululle ei tule loppua.

laurii [15.06.2010 09:24:58]

#

tuo aaltosulku joka puuttuu on siis tuon if imagecb == "c" lopettava, ja se tulee tuon funkiotn uploadimg jälkeen, mihin tuota issettiä ajattelit?

Teuro [15.06.2010 09:43:39]

#

isset tulee kaikkien muuttujien eteen, joiden pitää olla asetettu ennen käyttöä, mutta joiden olemassa oloa ei voida taata. Esimerkiksi lomakkedata ei ole saatavailla ennen lähetystä. Sitten funktio siis määritellään tuon if lauseen sisällä? Olisko nyt kuitenkin fiksua tuhota kaikki tuo koodi ja aloittaa vaikka ihan alusta? Tee oma tiedosto funktioille. Sitten suunnittele jokainen funktio niin, että voit määritellä sen mieluiten ilman global merkintöjä, eli anna kaikki funktion tarvitsemat muuttujat parametreinä.

Tässä alla yksi vaihtoehto pääohjelman rakenteesta. Muitakin vaihtoehtoja on, lisäksi tarvitset muitakin funktioita, mutta noilla pääsee jo alkuun.

<?php
if(isset($_FILES['kuva'])){
    try {
        tarkista_kuva($_FILES['kuva']);
    } catch(Exception $e) {
        echo "<p>" . $e->getMessage() . "</p>";
    }

    lataa_kuva_palvelimelle($_FILES['kuva']);
} else {
    tulosta_lomake();
}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta