Problem mit selbst gecodeten PHP-Script

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
1patrick
Mitglied
Beiträge: 31
Registriert: 14.09.2004 17:41
Kontaktdaten:

Problem mit selbst gecodeten PHP-Script

Beitrag von 1patrick »

Hallöchen :grin:

Ich habe leider ein Problem mit einem von mir selbst programmierten PHP Script. Genauer gesagt tritt dieses Problem nur mit meinem Hoster auf, lokal und auf anderen Webspaces funktioniert alles tadellos.
Der Admin des besagten Hosters kennt leider keine Lösung, ich hoffe, ihr könnt mir sagen, warum das hier nicht funktioniert:

Wenn man auf [habs selbst entfernt ;)]
ohne etwas einzugeben auf "Senden" klickt, dann bekommt man sofort (direkt unter dem Formular) Fehlermeldungen angezeigt, die besagen, das man die entsprechenden Felder nicht ausgefüllt hat- gut so :)
Aber selbst wenn man die Felder ausfüllt, kommt diese Fehlermeldung noch. Vielleicht können die Formulardaten da nicht richtig verarbeitet werden, ich weiß es nicht.

Hoffentlich weiß da jemand eine Lösung...bzw. ahnt woran es liegen könnte...

Hier der entsprechende PHP-Code:

Code: Alles auswählen

 
<?php
$Inhalt = $_GET['action'];
if($Inhalt == "eintragen")
{
if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "")
{
$dateiname = $_FILES['Datei']['name'];
$nachricht = "
<table width=\"69%\"  border=\"0\">
  <tr>
    <td width=\"29%\" bgcolor=\"#FFCC66\"><b>Name:</b></td>
    <td width=\"71%\">$name</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Rasse:</b></td>
    <td>$rasse</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Geschlecht:</b></td>
    <td>$geschlecht</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Befehle:</b></td>
    <td>$befehle</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Charaktereigenschaften:</b></td>
    <td>$charakter</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Bild des Welpens:</b></td>
    <td><img src=\"upload/$dateiname\"></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
";
$datei = fopen("welpen.txt","a");
  fwrite($datei, $nachricht);
  fclose($datei);
  
$counter = fopen("counter.txt","r+");
  $counterstand = fgets($counter, 10);
  if($counterstand == "")
    {
    $counterstand = 0;
    }
  $counterstand++;
  rewind($counter);
  fwrite($counter, $counterstand);
  fclose($counter);
  
echo("<b><u>Herzlichen Dank, dass du dein Welpen in unsere List eingetragen hast!<br>Dein Eintrag erscheint z.Zt. ganz unten!</b></u>");
}
if($name == "")
{
echo("Bitte gib den Namen deines Welpens ein!<br>");
}
if($rasse == "")
{
echo("Bitte wähle die Rasse deines Welpens aus!<br>");
}
if($geschlecht == "")
{
echo("Bitte wähle das Geschlecht deines Welpens aus!<br>");
}
if($befehle == "")
{
echo("Bitte gib ein, welche Befehle dein Welpen bereits erlernt hat!<br>");
}
if($charakter == "")
{
echo("Bitte gib Charaktereigenschaften deines Welpens ein!<br>");
}
if($_FILES['Datei']['tmp_name'])
{
echo"Deine Datei ("",
$_FILES['Datei']['name'],
"") ist ",
$_FILES['Datei']['size'],
" Bytes groß.";
move_uploaded_file($_FILES['Datei']['tmp_name'], "upload/".$_FILES['Datei']['name']);
}
else
{
echo"Bitte gib eine Datei an!";
}
}
?>
Zuletzt geändert von 1patrick am 27.09.2005 17:48, insgesamt 1-mal geändert.
Viele Grüße,
Patrick
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

also wenn ich jetzt auf senden klicke, dann wird der button disabled also grau. Aber kommen tut keine meldung, und refresht wird auhc nicht.

Aber ein vorschlag:

ersetz mal:

Code: Alles auswählen

if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "") 
mit:

Code: Alles auswählen

if (empty($_POST['name']) OR empty($_POST['rasse']) OR empty($_POST['geschlecht']) OR empty($_POST['befehle']) OR empty($_POST['charakter']))
Vllt liegt es daran.

Aber bedenke.

form muss so aussehn:

Code: Alles auswählen

method="post"

und mach diese einzelnen abfragen weg:

Code: Alles auswählen

if ($name = "")
denn meine abfrage ist für alles zusammen.
1patrick
Mitglied
Beiträge: 31
Registriert: 14.09.2004 17:41
Kontaktdaten:

Beitrag von 1patrick »

Ich glaub du verstehst das Script falsch.
Denn bei deinem Code würde ein Eintrag erfolgen, unter der Bedingung, das die Felder leer wären:

Code: Alles auswählen

empty($_POST['rasse'])
oder etwa nicht?

Nach Klick auf "Senden" wird dieser deaktiviert (um ein zweites klicken zu verhindern). Dann wird an die URL die Variable ?action=eintragen angehängt und anschließend mit

Code: Alles auswählen

if($name != "" & $rasse != "" & $geschlecht != "" & $befehle != "" & $charakter != "") 
überprüft, ob die entsprechenden Variablen ausgefüllt sind.
Wenn sie ausgefüllt sind (d.h. NICHT leer sind), dann werden die Daten in eine Datei reingeschrieben.

Und diese Abfragen wie

Code: Alles auswählen

if ($name = "")
prüfen, ob die entsprechenden Felder leer sind. Wenn ja, dann wird die entsprechende Fehlermeldung ausgegeben.


Aber ok, hab einfach bei Abfragen wie

Code: Alles auswählen

if ($name = "")
das $name durch $_POST['name'] etc. ersetzt.
Das löst das Problem das man nix eintragen kann, aber wenn was eingetragen wurde, dann wird nix angezeigt.

Muss ich jetzt auch die Variabeln $name etc. in

Code: Alles auswählen

$nachricht = "
<table width=\"69%\"  border=\"0\">
  <tr>
    <td width=\"29%\" bgcolor=\"#FFCC66\"><b>Name:</b></td>
    <td width=\"71%\">$name</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Rasse:</b></td>
    <td>$rasse</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Geschlecht:</b></td>
    <td>$geschlecht</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Befehle:</b></td>
    <td>$befehle</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Charaktereigenschaften:</b></td>
    <td>$charakter</td>
  </tr>
  <tr>
    <td bgcolor=\"#FFCC66\"><b>Bild des Welpens:</b></td>
    <td><img src=\"upload/$dateiname\"></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>
";
ändern? Wenn ja, wie?
Viele Grüße,
Patrick
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

Schick mal nochmal dein komplettes script.

Ich werde es so umschreiben, das es funktioniert. Schick zu dem script auch das formular.

Habe gerade eh ncihts besseres zu tun
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

ohne register_globals wird das Script nicht funktionieren ersetze mal überall im Script
$name, $rasse, $geschlecht, $befehle, $charakter durch
$_POST['name'], $_POST['rasse'], $_POST['geschlecht'], $_POST['befehle'], $_POST['charakter']

Das dürfte helfen
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

habe ich doch erwähnt oder? Habe doch überall vorhin ersetzt mit $_POST.
außer in der tabellen konstruktion
1patrick
Mitglied
Beiträge: 31
Registriert: 14.09.2004 17:41
Kontaktdaten:

Beitrag von 1patrick »

Also ich hab das jetzt überall ersetzt, außer in der Tabelle.
Probierts aus, was passiert!
Die Tabelle wird erzeugt, ist allerdings leer!

@witzigerkiller: habs dir gemailt, Beteff: Die Datei zum umschreiben ;-)
Hoffe das dus hinkriegst ;)
Zuletzt geändert von 1patrick am 27.09.2005 16:44, insgesamt 1-mal geändert.
Viele Grüße,
Patrick
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

was soll denn passieren? Wenn ich auf senden klicke, passiert gar nichts, auser das es disabled wird
1patrick
Mitglied
Beiträge: 31
Registriert: 14.09.2004 17:41
Kontaktdaten:

Beitrag von 1patrick »

witzigerkiller hat geschrieben:was soll denn passieren? Wenn ich auf senden klicke, passiert gar nichts, auser das es disabled wird
Naja es werden die eingegebenen Daten in eine Tabelle gespeichert und diese dann ganz unten auf der Seite angezeigt.
Bzw. es erscheinen direkt unter dem Formular Fehlermeldung(en)
Viele Grüße,
Patrick
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

bevor ich umschreibe teste ich nochmal
Antworten

Zurück zu „Coding & Technik“