Zitat von gsc2010
Beitrag anzeigen
[PHP] Benötige Hilfe bei einem Script [Newbie]
Einklappen
X
-
[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
-
bevor ich aber gehe, ich habe dann doch noch ne Frage :
PHP-Code:// Maskierende Slashes aus POST entfernen
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
// Inhalte der Felder aus POST holen
$bild = $_FILES['bild'][$zielorg];
$name = $_POST['name'];
$nickname = $_POST['nickname'];
$alter = (int) $_POST['alter'];
$wohnort = $_POST['wohnort'];
$msn = $_POST['msn'];
$geschlecht = $_POST['geschlecht'];
$teampage = $_POST['teampage'];
$member = isset( $_POST['moderator'] ) ? 0 : 1;
PHP-Code:#### Funktion Datenbank-Eintragen
if($_GET['action'] == 'upload')
{
$upload = uploader($_FILES['foto']['tmp_name'],
$_FILES['foto']['name'],
$_FILES['foto']['type']);
if(substr($upload, strlen($upload)-4, 4) != '.jpg')
{
echo $upload;
}
else
{
$sql = "INSERT INTO `test`
(`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
VALUES (
" .$upload. ",
'" .mysql_real_escape_string( $name ). "',
'" .mysql_real_escape_string( $nickname ). "',
" .$alter. ",
'" .mysql_real_escape_string( $wohnort ). "',
'" .mysql_real_escape_string( $msn ). "',
'" .mysql_real_escape_string( $geschlecht ). "',
'" .mysql_real_escape_string( $teampage ). "',
" .$member. "
)";
$result = mysql_query($sql);
}}
Zuletzt geändert von gsc2010; 26.06.2010, 00:42.
Kommentar
-
Ob das richtig ist, hängt von der konkreten Implementierung der Funktion uploader ab.
Bitte keine Zitate für Code benutzen.[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
So habe ich die Funktion deklariert...
PHP-Code:function uploader($fotofile, $fotofile_name, $fotofile_type)
{
if($fotofile_type != 'image/jpeg' && $fotofile_type != 'image/pjpeg')
{
return $upload_log = 'Die Datei '.$fotofile_name.' ist nicht vom Typ Jpg, sondern $fotofile_type!';
}
// Angabe Dateiendung
$datei_ende = '.jpg';
// Foto speichern
$zielorg .= substr($fotofile_name,0,strrpos($fotofile_name,'.')).$datei_ende;
if(file_exists($zielorg))
{
return $upload_log = 'Die Datei '.$fotofile_name.' exsitiert schon auf dem Server!';
}
if(!move_uploaded_file($fotofile, $zielorg))
{
return $upload_log = 'Ein Fehler beim Kopieren der Datei '.$fotofile_name.' ist aufgetreten!';
}
return $upload_log = $zielorg;
}
Zuletzt geändert von gsc2010; 26.06.2010, 00:41.
Kommentar
-
zur besseren Lesbarkeit für dich und uns .. vermeide bitte 'blabla $variable ' ... das ist einfach schlechter Stil .. 'blabla '.$variable.' ...' ist meist besser lesbar - zumal meines Wissens nach php die Ersetzung in Zeichenketten mit ' ' gar nicht durchführt, sondern nur in Zeichenketten mit " " - dein Code würde also $variable im Text ergeben, statt durch den Wert der Variablen ersetzt zu werden[font=Verdana]
Wer LESEN kann, ist klar im Vorteil! [/font]
Kommentar
-
nachdem ich nun den Code mal umgewandelt habe,
also in das lesbare php hier im forum,
ich habe nun alle funktionen aus meinem Script drin, also hier im Forum.
Zum schluss ist das alles nur noch html...
wobei ich glaube,
das ich hier
PHP-Code:<?
echo '<form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload"
method="post" name="formular" id="formular">';
?>
Was mich irgendwie wundert, ist die Tatsache,
das ich 2x die sql-db abfrage,
ich denke mal,das das falsch ist...
Sorry der merkwürdigen Fragen aus eurer Sicht,
ich arbeite viel mehr mit Photoshop, und programmiere
sehr selten, wollte nur nicht auf vorgefertigte Sachen
zurückgreifen und mich dann damit rühmen....
Vllt könntet ihr mir den Weg in die richtige Richtung aufzeigen...
Vielen dank
Kommentar
-
Zitat von eagle275 Beitrag anzeigenzumal meines Wissens nach php die Ersetzung in Zeichenketten mit ' ' gar nicht durchführt, sondern nur in Zeichenketten mit " "
PHP-Code:$sql.=" name='{mysql_real_escape_string( $name )}', ";
Kommentar
-
und wie das funktioniert ....onemorenerd ...
ich verwende es in einem Import-Script für CSV-Daten einige 10tausend Mal - und jedesmal sieht der erzeugte $sql-String exakt so aus, wie man ihn sich wünscht ..
wobei es nochmal bedeutend an lesbarkeit gewinnt, wenn man analog zum englischen PHP-Manual folgendes tut
PHP-Code:<?php
class sqlescaper {
function __get($value) {
return mysql_real_escape_string($value);
}
}
....
// im eigentlichen Code
$check=new sqlescaper;
...
// dann siehts so aus
$sql.=" name='{$check->$name}', ";
...
und @gsc
PHP-Code:
echo '<form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload"
method="post" id="formular">';// einmal name="xyz" reicht völlig
Zuletzt geändert von eagle275; 26.06.2010, 01:22.[font=Verdana]
Wer LESEN kann, ist klar im Vorteil! [/font]
Kommentar
-
so, eigentlich wollte ich ja raus gehen,
aber mein Ehrgeiz packte mich zur letzten Tat,
Für heute....
so sieht das komplette Script aus
PHP-Code:<?php
###### Config-Datei
$db_host = "localhost"; // Datenbank-Server
$db_user = "root"; // Benutzer
$db_pass = ""; // Passwort
$db_name = "test"; // Datenbank-Name
/// Hier noch den Zielordner angeben
$zielorg = "../teampage/uploads/";
/// Ab hier ist nichts mehr zu ändern!
if (isset( $_POST['eintragen'] ))
{
// Maskierende Slashes aus POST entfernen
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
// Inhalte der Felder aus POST holen
$bild = $_FILES['bild'][$zielorg];
$name = $_POST['name'];
$nickname = $_POST['nickname'];
$alter = (int) $_POST['alter'];
$wohnort = $_POST['wohnort'];
$msn = $_POST['msn'];
$geschlecht = $_POST['geschlecht'];
$teampage = $_POST['teampage'];
$member = isset( $_POST['moderator'] ) ? 0 : 1;
## Überprüfung
## ist alles ok..?
## wenn ja, dann weiter
## Verbindung oeffnen und Datenbank ausweahlen
$conID = mysql_connect( $db_host, $db_user, $db_pass )
or die
( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
mysql_select_db( $db_name, $conID );
}
## Upload
function uploader(
$fotofile, $fotofile_name, $fotofile_type)
{
if($fotofile_type != 'image/jpeg' && $fotofile_type != 'image/pjpeg')
{
return $upload_log = 'Die Datei '.$fotofile_name.' Datei - Typ falsch!';
}
// Angabe Dateiendung
$datei_ende = '.jpg';
// Foto speichern
$zielorg .= substr($fotofile_name,0,strrpos($fotofile_name,'.')).$datei_ende;
if(file_exists($zielorg))
{
return $upload_log = 'Die Datei '.$fotofile_name.' exsitiert schon auf dem Server!';
}
if(!move_uploaded_file($fotofile, $zielorg))
{
return $upload_log = 'Ein Fehler beim Kopieren der Datei '.$fotofile_name.' ist aufgetreten!';
}
return $upload_log = $zielorg;
}
#### Ende
#### Funktion Datenbank-Eintragen
if($_GET['action'] == 'upload')
{
$upload = uploader($_FILES['foto']['tmp_name'],
$_FILES['foto']['name'], $_FILES['foto']['type']);
if(substr($upload, strlen($upload)-4, 4) != '.jpg')
{
echo $upload;
}
else
{
$sql = "INSERT INTO `test`
(`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
VALUES (
" .$upload. ",
'" .mysql_real_escape_string( $name ). "',
'" .mysql_real_escape_string( $nickname ). "',
" .$alter. ",
'" .mysql_real_escape_string( $wohnort ). "',
'" .mysql_real_escape_string( $msn ). "',
'" .mysql_real_escape_string( $geschlecht ). "',
'" .mysql_real_escape_string( $teampage ). "',
" .$member. "
)";
$result = mysql_query($sql);
}}
## Ende
## Anfrage zusammenstellen der an die DB geschickt werden soll
$sql = "INSERT INTO `test`
(`bild`,`name`, `nickname`, `alter`, `wohnort`, `msn`, `geschlecht`, `teampage`, `moderator`)
VALUES(
" .$upload. ",
'" .mysql_real_escape_string( $name ). "',
'" .mysql_real_escape_string( $nickname ). "',
" .$alter. ",
'" .mysql_real_escape_string( $wohnort ). "',
'" .mysql_real_escape_string( $msn ). "',
'" .mysql_real_escape_string( $geschlecht ). "',
'" .mysql_real_escape_string( $teampage ). "',
" .$member. "
)";
// Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
mysql_query( $sql );
// Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
if (mysql_affected_rows() == 1)
{
echo "<h3>Der Datensatz wurde hinzugefügt!</h3>";
// Hier kann weiterer Code stehen der ausgefuehrt werden soll
}
else
{
echo "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugefügt werden!</h3>";
print_r($sql);
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formularinhalt in eine Datenbank schreiben</title>
</head>
<body>
<?
echo '
<form name="formular" enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'?action=upload"
method="post" name="formular" id="formular">';
?>
<table border="1" bordercolor="#000" cellspacing="1" cellpadding="2" width="100%">
<tr>
<td width="34%" align="left" valign="top">Bild-Datei</td>
<td width="66%" align="right" valign="top">
<input name="bild" type="file" id="bild" size="28">
</td>
<tr>
<td width="34%" align="left" valign="top">Name:</td>
<td width="66%" align="right" valign="top">
<input type="text" name="name" id="name" size="50" maxlength="60" value="" /></td>
<tr>
<td width="34%" align="left" valign="top">Nickname:</td>
<td width="66%" align="right" valign="top">
<input type="text" name="nickname" id="nickname" size="50" maxlength="60" value="" /></td>
<tr>
<td width="34%" align="left" valign="top">Altersangabe:</td>
<td width="66%" align="right" valign="top"><select name="alter" id="alter">
<?php for ($i=16; $i<60; $i++) { echo "<option>{$i}</option>"; } ?></select></td>
<tr>
<td width="34%" align="left" valign="top">Wohnort :</td>
<td width="66%" align="right" valign="top">
<input type="text" name="wohnort" id="wohnort" size="50" maxlength="60" value="" /></td>
<tr>
<td width="34%" align="left" valign="top">MSN-Nickname :</td>
<td width="66%" align="right" valign="top">
<input type="text" name="msn" id="msn" size="50" maxlength="60" value="" /></td>
<tr>
<td width="34%" align="left" valign="top">Geschlechtsangabe:</td>
<td width="66%" align="right" valign="top">
<input type="radio" name="geschlecht" id="geschlecht_1" value="männlich" checked="checked" />
Männchen
<input type="radio" name="geschlecht" id="geschlecht_2" value="weiblich" />Weibchen</td>
<tr>
<td width="34%" align="left" valign="top">Link zur Nickpage :</td>
<td width="66%" align="right" valign="top">
<input type="text" name="teampage" id="teampage" size="50" maxlength="60" value="" /></td>
<tr>
<td width="34%" align="left" valign="top">Moderator [ja / nein]</td>
<td width="66%" align="right" valign="top">
<b><u>J</u></b>a<input type="checkbox" name="member" id="member" /></td>
<tr>
<td width="34%" align="left" valign="top">Eintragen | Eingaben zurücksetzen</td>
<td width="66%" align="right" valign="top">
<input type="submit" name="eintragen" id="eintragen" value="Eintragen" />
<input type="reset" name="button" id="" value="Eingaben löschen" /></td>
<tr>
</table>
</form>
</body>
</html>
Frank
Kommentar
-
sehr abenteuerlich ..
warum schreibst du 2mal den quasi gleichen Datensatz in die Datenbank ?
und warum haben deine Formularbestandteile sowohl ein name-Attribut als auch ein ID-Attribut ...
PHP benutzt soweit ich weiß das name-Attribut ....
name="xyz" erzeugt mit POST abgeschickt einen Eintrag in $_POST['xyz'] mit dem Wert aus dem Eingabefeld dessen name eben xyz istZuletzt geändert von eagle275; 26.06.2010, 01:35.[font=Verdana]
Wer LESEN kann, ist klar im Vorteil! [/font]
Kommentar
-
wie gesagt, das ist ist mir auch aufgefallen...
ich hoffe mal, das es nicht zu abenteuerlich ist, bin in sachen php doch erst ein richtiger Anfänger - dennoch, und ich glaube das es der richtige Weg ist, ist es besser, wenn ich selber was versuche, anstatt irgendwelche vorgefertigten dinge, möchte das ja lernen...
würde mich dennoch freuen, wenn ihr eine konkrete Hilfe, bzw, einen lösungsansatz geben könntet, würde mich sehr freuen
[Edit]
Werde nun doch zu Bett gehen ...
Vllt fällt mir noch ne lösung ein, ich möchte an dem script nicht verzeweifeln...
und ich würde mich echt freuen, wenn ihr mir ein wenig Hilfe geben könntet,
Danke
[Edit ende]
Gute NachtZuletzt geändert von gsc2010; 26.06.2010, 01:45.
Kommentar
-
Zitat von eagle275 Beitrag anzeigenund wie das funktioniert ....onemorenerd ...PHP: Strings - Manual
When a string is specified in double quotes or with heredoc, variables are parsed within it.
ich verwende es in einem Import-Script für CSV-Daten einige 10tausend Mal - und jedesmal sieht der erzeugte $sql-String exakt so aus, wie man ihn sich wünscht ..
wobei es nochmal bedeutend an lesbarkeit gewinnt, wenn man analog zum englischen PHP-Manual folgendes tut
PHP-Code:$sql.=" name='{$check->$name}', ";
Das ist etwas völlig anderes als
PHP-Code:$sql.=" bla {time()} bla";
Kommentar
Kommentar