S
sevY
Hi,
ich beschäftige mich zur Zeit mit dem hochinteressanten Thema OOP und wollte einfach mal überlegen was man so machen kann. Zur eher syntaktischen Übung dachte ich mir folgendes:
Anstatt immer ein langes Skript prozedural zu schreiben, das eine Datei aus einem Formularfeld hochlädt, dachte ich mir, definiere ich eine Klasse mit einer Funktion, die das übernimmt.
Eine uploaded Datei sollte auch immer direkt einen Modus verpasst bekommen, da sie ansonsten zb. in Flash nicht angezeigt werden „könnte“ (ich arbeite ausschließlich mit Flash und nur mit PHP/MySQL für den dynamischen Datenaustausch bzw. solche Admintools wie hier ).
Ich habe mal mein Vorhaben skizziert, aber es geht bestimmt eleganter.
Das ganze ist eine Art Notizblock für zb 3 Leute, die Online für zb eine Namenssuche und ein Logo Ideen festhalten möchte. Wie gesagt geht es hierbei erstmal nur um die Klasse&Funktion.
Das Hauptskript, das das Formular und die Funktionen enthält:
Die function.inc.php, die die Klasse und Funktion enthält.
Wenn ich die Geschichte mit der boolschen Logik korrekt verstanden habe, sollte die Funktion auch an sich so funktionieren.
Zum Schluß noch die config.inc.php, in der auch der mode-value für den chmod(); steht. Ich denke das ist sehr sinnvoll, da das von Server zu Server aufgrund der Konfiguration varriieren kann.
Mein Skript funktioniert so übrigens noch nicht, es ist nur eine Skizze.
Das Problem besteht in diesem Teil.
Ich denke das es nicht sehr elegant gelöst ist und bei der Annahme/Übergabe des Arrays Probleme gibt.
Hat jemand Lust mitzutüffteln?
Liebe Grüße
Yves
ich beschäftige mich zur Zeit mit dem hochinteressanten Thema OOP und wollte einfach mal überlegen was man so machen kann. Zur eher syntaktischen Übung dachte ich mir folgendes:
Anstatt immer ein langes Skript prozedural zu schreiben, das eine Datei aus einem Formularfeld hochlädt, dachte ich mir, definiere ich eine Klasse mit einer Funktion, die das übernimmt.
Eine uploaded Datei sollte auch immer direkt einen Modus verpasst bekommen, da sie ansonsten zb. in Flash nicht angezeigt werden „könnte“ (ich arbeite ausschließlich mit Flash und nur mit PHP/MySQL für den dynamischen Datenaustausch bzw. solche Admintools wie hier ).
Ich habe mal mein Vorhaben skizziert, aber es geht bestimmt eleganter.
Das ganze ist eine Art Notizblock für zb 3 Leute, die Online für zb eine Namenssuche und ein Logo Ideen festhalten möchte. Wie gesagt geht es hierbei erstmal nur um die Klasse&Funktion.
Das Hauptskript, das das Formular und die Funktionen enthält:
PHP:
<?php
require_once('config.inc.php');
require_once('function.inc.php');
$db_tab='sketchpad';
$date=date('y.m.d');
$imagepath='suggested_logos/';
if($_POST['input']=='insert')
{
//hier definiere ich Variablen für den Array
$file_name=$_FILES['suggested_logo']['name'];
$file_tmpname=$_FILES['suggested_logo']['tmp_name'];
$file_destination=$imagepath.$file_name;
//hier wird der array definiert, der in die Variable eingesetzt werden soll
$parameter=array($file_name,$file_tmpname,$file_destination,$file_permission);
//hier sollte das parameter an die funktion übergeben werden und auf den rückgabewert reagieren
if(!upload::upload_image($parameter))
{
echo"fehler";
}
else
{
mysql_db_query($db_dbase,"insert into $db_tab (date,text,image,user) VALUES ('$date','$_POST[suggested_name]','$parameter[0]','$_POST[user]')");
echo"<meta http-equiv=refresh content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
}
}
?>
<html>
<head>
<title>Sketchpad</title>
<link rel="stylesheet" href="default.css">
<meta http-equiv="content-type" content="text/html"; charset="iso-8859-1">
<meta name="robots" content="noindex,nofollow">
</head>
<body>
<table width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="middle">
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
echo"
<form enctype=multipart/form-data action=".$_SERVER['PHP_SELF']." method=\"post\">
<h3>Sketchpad</h3>
<hr width=100%><p>
<input type=\"hidden\" name=\"input\" value=\"insert\">
<input type=\"text\" name=\"suggested_name\" value=\"Namensvorschlag\"><p>
<hr width=100%><p>
<b>Logovorschlag</b><p>
<input type=\"file\" name=\"suggested_logo\"><p>
<hr width=100%><p>
<b>Author</b><p>
<input type=\"radio\" name=\"user\" value=\"Bjo¨rn\">Björn<p>
<input type=\"radio\" name=\"user\" value=\"Olaf\">Olaf<p>
<input type=\"radio\" name=\"user\" value=\"Yves\">Yves<p>
<hr width=100%><p>
<input type=\"submit\" value=\"Rock'n'Roll\">
</form>
";
?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Die function.inc.php, die die Klasse und Funktion enthält.
Wenn ich die Geschichte mit der boolschen Logik korrekt verstanden habe, sollte die Funktion auch an sich so funktionieren.
PHP:
<?php
class upload
{
function upload_image($x)
{
if(!move_uploaded_file($x['0'],$x['2']))
{
return(false);
}
else
{
if(!chmod($x['2'],$x['3']))
{
return(false);
}
else
{
return(true);
}
}
}
}
?>
Zum Schluß noch die config.inc.php, in der auch der mode-value für den chmod(); steht. Ich denke das ist sehr sinnvoll, da das von Server zu Server aufgrund der Konfiguration varriieren kann.
Mein Skript funktioniert so übrigens noch nicht, es ist nur eine Skizze.
Das Problem besteht in diesem Teil.
PHP:
if($_POST['input']=='insert')
{
//hier definiere ich Variablen für den Array
$file_name=$_FILES['suggested_logo']['name'];
$file_tmpname=$_FILES['suggested_logo']['tmp_name'];
$file_destination=$imagepath.$file_name;
//hier wird der array definiert, der in die Variable eingesetzt werden soll
$parameter=array($file_name,$file_tmpname,$file_destination,$file_permission);
//hier sollte das parameter an die funktion übergeben werden und auf den rückgabewert reagieren
if(!upload::upload_image($parameter))
{
echo"fehler";
}
Ich denke das es nicht sehr elegant gelöst ist und bei der Annahme/Übergabe des Arrays Probleme gibt.
Hat jemand Lust mitzutüffteln?
Liebe Grüße
Yves