php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.05.2005, 20:35  
Gast
 
Beiträge: n/a
Standard Findet ihr den Fehler?

Tag Leute!
Vielleicht habe ich heute scho zu viel am PC gesessen und php gescriptet...auf jedenfall wollt ich mir nen kleines Gästebuch machen...was auch bis jetzt wunderbar funktioniert hat.
Aber jetzt bin ich irgendwie an eine Stelle gekommen, an der ich schon ne ewigkeit knapper:

Aber hier erstmal der Code:
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<h1>Gästebuch</h1>

<?php
    
if(isset($_POST['name'])&& isset($_POST['text']))
    {
        if(!
file_exists("buch.dat")) touch("buch.dat");
        
$eintrag="<table border='1' style='table-layout:fixed'><tr><td style='width:64'>Name:</td><td>".$_POST['name']."</td></tr><tr><td>Nachricht:</td><td style='width:334'>".$_POST['text']."</td></tr></table>
"
;
        
$buch=fopen("buch.dat","a");
        
fwrite($buch,$eintrag);
        
fclose($buch);
        include(
"buch.dat");
    }

?>
<form action="index.php" method="post">
<table border="0">
  <tr>
    <td>Name: </td>
    <td><input type="text" name="name" size="20" /></td>
  </tr>
  <tr>
    <td>Nachricht: </td>
    <td><textarea name="text" cols="40" rows="5"></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><center><input type="submit" value="senden" /></center></td>
  </tr>
</table>
</form>
</body>
</html>
Wie ihr seht soll man Name und Text eingeben, dieser wird in einer Datei gespeichert und (fürs erste) überhalb vom Eingabeformular wiedergeben.
Mein Problem liegt jetzt in der folgenden Zeile:
"if(isset($_POST['name'])&& isset($_POST['text']))"

Nach meinem Verständis wird, wenn man nix bei "Name" und/oder "Nachricht" eingibt der komplette PHP-Teil übersprungen uns es wird nur der html-code angezeigt/ausgeführt.
Ich muss aber jetzt irgendwo einen Fehler haben, der die Zeile ignoriert. Denn wenn ich die Seite oeffne wird mir korrekt nur das eingabeformular gezeigt, aber wenn ich dort nix eingebe wird ein leerer eintrag ausgegeben.
Wenn ich die Zeile jetzt aber wie folgt abänder, funktioniert zumindest die auswertung ob ich einen namen eingeben habe.
"if(isset($_POST['name'])&& ($_POST['text']))"



Vielleicht versteht ja jemand meine erklärung/code und kann mir helfen :wink:

Ich mach jetzt auf jeden Fall erstmal Feierabend für heute!

greez zet

P.S.: die leute die das script im IE oeffnen bitte nicht ueber die tabellenbreite aufregen...habs mit firefox probiert und da siehts gut aus...danach schaue ich dann mal wenn das PHP funzt.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.05.2005, 20:39  
Gast
 
Beiträge: n/a
Standard

Schlagt mich, wenn ich es falsch verstanden habe, aber mit "isset" macht man sowas glaube ich nicht. Wenn ich es richtig verstanden habe(bestimmt nicht), dann probiere mal

PHP-Code:
<?php
if(trim($_POST['name']) == "" AND
   
trim($_POST['text']) == ""))

//oder so, bin mir nich so sicher

if(trim($_POST['name']) == "") AND
   
trim($_POST['text']) == "")
?>
 
Alt 15.05.2005, 20:53  
Gast
 
Beiträge: n/a
Standard

jein, damit wird abgetestet, ob die Parameter name und text beide leer (Zeichenketten der Länge 0) sind. Also a) Test umgedreht und b) die bloße Existenz wird nicht mehr geprüft->evtl. Warnungen von php.

Ich mag empty() nicht und bevorzuge eine Kombination aus isset/strlen, um zu testen, ob alles wenigstens im Ansatz gesetzt ist.
Aber damit stehe ich anscheinend alleine da (thread vor kurzem), also wenn weder name noch text "leer" sind:
PHP-Code:
<?php
...
$name trim($_POST['name']);
$text trim($_POST['text']);
if( !empty(
$name) && !empty($text) ) 
...
?>
siehe auch:
http://php.net/empty
 
Alt 16.05.2005, 17:46  
Gast
 
Beiträge: n/a
Standard

Tag!
also mit deinem vorschlag klappt das nicht volkerk, da er ja dann motzt, das die variablen im ersten durchgang nicht defeniert sind. aber wenn ich
"if( !empty($_POST['name']) && !empty($_POST['text']) ) "
schreibe hat er nix dagegen
und habe ich das richtig verstanden, das ihr das "trim" dazu nehmt um zu verhindern das einer nur leerzeichen eingibt?

greez zet
 
Alt 16.05.2005, 17:48  
Gast
 
Beiträge: n/a
Standard

versuche es mit !empty() anstatt isset() - denn in diesem Falle sind die Variablen nach Abschicken des Dokuments IMMER gesetzt - wenn auch ohne inhalt.
 
Alt 17.05.2005, 08:53  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich mach das immer so in der art:

PHP-Code:
<?php

  
if(!isset($_POST['name']) OR !isset($_POST['text']) ) {
    echo 
"Sie haben nicht alle Felder ausgefüllt,...";
  }
  
  else { .... }

?>

mfg andi
DER_Brain ist offline  
Alt 17.05.2005, 09:03  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von DER_Brain
ich mach das immer so in der art:

PHP-Code:
<?php

  
if(!isset($_POST['name']) OR !isset($_POST['text']) ) {
    echo 
"Sie haben nicht alle Felder ausgefüllt,...";
  }
  
  else { .... }

?>

mfg andi
Dann kann man bei dir die Felder auch unausgefüllt abschicken - gesetzt sind sie trotzdem, obwohl sie leer sind... .
 
Alt 17.05.2005, 10:26  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

dann kombiniere doch:

if(!isset($_POST['bla'] && trim($_POST['bla']) != '' && ....)
{
...
}
else
{
...
}
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline  
Alt 17.05.2005, 10:32  
Gast
 
Beiträge: n/a
Standard

http://de.php.net/manual/de/function.empty.php

empty() reicht völlig ...
 
Alt 17.05.2005, 21:21  
Benutzer
 
Registriert seit: 17.05.2005
Beiträge: 57
bluebird
bluebird eine Nachricht über ICQ schicken
Standard

btw, einen Beitrag "findet ihr den Fehler" zu nennen, ist etwas undeutlich :wink:
bluebird ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bitte hilfe! mysql fehler meldung: basicx PHP Tipps 2008 2 22.07.2008 16:36
mysql fehler meldung: basicx Datenbanken 1 22.07.2008 09:48
Javascript bringt merkwürdigen Fehler sanz JavaScript, Ajax und mehr 5 27.06.2008 00:04
[Erledigt] Mysql Syntax Fehler Datenbanken 3 06.07.2006 09:58
[Erledigt] [phpmailer] - SMTP Fehler: Die folgenden Empfänger sind ... PHP Tipps 2005-2 1 05.10.2005 15:19
[Erledigt] Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar PHP-Fortgeschrittene 19 31.05.2005 14:52
fehler im script oder fehler beim server PHP Tipps 2005 12 21.05.2005 17:04
Blöder MySQL Fehler PHP Tipps 2005 3 15.05.2005 03:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
Wo liegt der fehler?? PHP-Fortgeschrittene 5 22.12.2004 09:54
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
Hilfe ich finde den Fehler nicht! PHP Tipps 2004 2 07.10.2004 17:40
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32
Paradox, Fehler bei Berechnung in MySQL MrNiceGuy Datenbanken 0 23.06.2004 16:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gästebuch \buch.dat\

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.