php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.07.2005, 16:00  
Gast
 
Beiträge: n/a
Standard Problem mit GB übertragung

hallo erstmal.
ich habe hier ein kleines problem!
ich habe eine maske gemacht mit der ich daten in ein Text file schreiben kann aber es dies nicht macht!
was habe ich falsch gemacht?
das auslesen aus der .txt datei funkt ohne probleme!
hier mal meinen code:
Code:
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<html>
<body bgcolor="white">
	<?php 
if ($action == "add"){ 

if ($text == ""){ 
echo "Sie wollten doch nicht einen leeren Beitrag senden?
"; 
echo "Füllen Sie bitte mindestens einen Kommentar ein."; 
} 
else{ 

if ($name == ""){ 
$name = "Unbekannt"; 
} 
else{ 
$eintrag = "<a href=\"mailto:$email\">$name $vorname</a> 


</a>$text<hr>

"; 
} 

$datei = fopen("gaestebuch.txt","w+"); 
fputs($datei,$eintrag); 
fclose($datei); 
echo "Danke $name f&uuml;r deinen Eintrag!"; 

} 

} 
else{ 
?>
	<div align="center">
		<font size="-1" color="#0000FF" face="Arial, Helvetica, sans-serif">G&auml;stebuch</font></div>
	

	

	<form action="eintragen.php?action=add" method="get">
		<div align="center">
			<input type="hidden" name="action" value="add">
			<table width="700" border="0">
				<tr>
					<td width="400">
						<table width="700" border="0">
							<tr>
								<td width="80"><font size="-1" face="Arial, Helvetica, sans-serif">Name:</font></td>
								<td width="320"><input type="text" name="name" size="40"></td>
							</tr>
							<tr>
								<td><font size="-1" face="Arial, Helvetica, sans-serif">Vorname:</font></td>
								<td><input type="text" name="vorname" size="40"></td>
							</tr>
							<tr>
								<td><font size="-1" face="Arial, Helvetica, sans-serif">E-Mail</font></td>
								<td><input type="text" name="email" size="40"></td>
							</tr>
							<tr>
								<td><font size="-1" face="Arial, Helvetica, sans-serif">Kommentar:</font>

									

									

									

								</td>
								<td><textarea name="text" rows="5" cols="70"></textarea></td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
			

			<table width="700" border="0">
				<tr>
					<td width="620">
						<div align="right">
							<input type="submit" value="Eintragen"/><input type="reset" value="Verwerfen"/></div>
					</td>
					<td width="80"></td>
				</tr>
			</table>
			<?php
}
?>
			<hr noshade>
</div>
	</form>
</body>
</html>
Ich danke euch schon im voraus für jede hilfe!
mfg bambid
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.07.2005, 16:04  
Gast
 
Beiträge: n/a
Standard

Ich rate mal: register_globals=off und if ($action == "add") passt einfach nicht zusammen. Aber vielleicht liegt es auch noch an was anderem, aber diesen Buchstabensalat sehe ich mir nicht genauer an. Ordentlich Einrücken scheint bei vielen einfach zu viel verlangt.

Ein Tipp:

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Gruß
phpfan
 
Alt 27.07.2005, 16:10  
Gast
 
Beiträge: n/a
Standard

Ja und wie debbugge ich dieses skript? ich schreibe nicht umsonst in das anfängerforum!
ich habe das tutorial von einer seite gemacht die ich leider nicht mehr finde! und kann so nicht dort nachfragen!
ich habe nur eine kleine ahnung von php das heisst ich weis was das script macht wenn ich den text anschaue aber ich kenne keine weiteren befehle die ich irgendwie anwenden könnte!

mfg bambid
 
Alt 27.07.2005, 16:11  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Na du debugst dein Script wie er es dir gerade geschrieben hab.. 1), 2)..
die Befehle die du anwenden musst lauten echo, mehr brauchst du ja nicht ..
Chr!s ist offline  
Alt 28.07.2005, 15:55  
Gast
 
Beiträge: n/a
Standard

Ja ich habe das angewendet mit dem echo aber leider gibt er mir weder namen noch text aus! also habe ich da doch ein schwerwigenderen fehler? oder?
ja was ich vieleicht noch anfügen sollte, ich benutze ein inline frame und vieleicht liegt es daran das es nicht funktioniert! oder macht es da keinen unterschied?

mfg bambid
 
Alt 28.07.2005, 16:25  
Gast
 
Beiträge: n/a
Standard

Hier mal der versuch es ohne inlineframe zu machen!
www.bambid.ch/php/eintragen.php

ich hoffe ihr könnt damit was anfangen abre leider schaffe ich es nicht! ich sitze nun schon seit balöd 3 wochen vor diesem problem!
und keinner will mir helfen!

was mache ich falsch?

mfg bambid
 
Alt 28.07.2005, 16:34  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 578
WarrenFaith
WarrenFaith eine Nachricht über ICQ schicken
Standard

Ok ich schau mir das mal an und meld mich wenn ich das fertig hab
Kann einen Moment dauern
__________________
Developers-Guide.net
Senseless
WarrenFaith ist offline  
Alt 28.07.2005, 17:03  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 578
WarrenFaith
WarrenFaith eine Nachricht über ICQ schicken
Standard

Ok wer auch immer dein Tutorial geschrieben hat, von dem du das hast: Der ist entweder zu Faul dir das von anfang an Richtig zu erklären oder er kanns selber nicht besser (ich tippe auf zweiteres).
Der Quellcode hatte einen sehr schlechten Programmierstil (sogar schlechter als meiner). Bei mir hats aber nun geklappt.

Hier die überarbeitete Version (vergleich am besten Zeile für Zeile damit du den unterschied merkst)
Code:
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<html>
<body bgcolor="white">
<?php
if (isset($_POST['gbeintrag'])){
	if ($_POST['text'] == ""){
		echo "Sie wollten doch nicht einen leeren Beitrag senden?
";
		echo "Füllen Sie bitte mindestens einen Kommentar ein.";
	}else{
		if ($_POST['name'] == ""){
			$_POST['name'] = "Unbekannt";
		}else{
			$eintrag = "<a href=\"mailto:".$_POST['email']."\">".$_POST['name']." ".$_POST['vorname']."</a>
</a>".$_POST['text']."<hr>

";
		}
		$datei = fopen("gaestebuch.txt","a+");
		fputs($datei,$eintrag);
		fclose($datei);
		echo "Danke ".$_POST['name']." f&uuml;r deinen Eintrag!";
	}
}else{
?> 
<div align="center">
<font size="-1" color="#0000FF" face="Arial, Helvetica, sans-serif">G&auml;stebuch</font>
</div>



<form action="eintragen.php" method="POST">
<div align="center">
	<table width="700" border="0">
    	<tr>
        	<td width="400">
            	<table width="700" border="0">
                	<tr>
                        <td width="80"><font size="-1" face="Arial, Helvetica, sans-serif">Name:</font></td>
                        <td width="320"><input type="text" name="name" size="40"></td>
                     </tr>
                     <tr>
                        <td><font size="-1" face="Arial, Helvetica, sans-serif">Vorname:</font></td>
                        <td><input type="text" name="vorname" size="40"></td>
                     </tr>
                     <tr>
                        <td><font size="-1" face="Arial, Helvetica, sans-serif">E-Mail</font></td>
                        <td><input type="text" name="email" size="40"></td>
                     </tr>
                     <tr>
                        <td><font size="-1" face="Arial, Helvetica, sans-serif">Kommentar:</font>

                           

                           

                           

                        </td>
                        <td><textarea name="text" rows="5" cols="70"></textarea></td>
                     </tr>
                  </table>
               </td>
            </tr>
         </table>
         

         <table width="700" border="0">
            <tr>
               <td width="620">
                  <div align="right">
                     <input type="submit" value="Eintragen"/ name="gbeintrag"><input type="reset" value="Verwerfen"/></div>
               </td>
               <td width="80"> </td>
            </tr>
         </table>
<?php
}
?>
		<hr noshade>
		</div>
   </form>
</body>
</html>
Kleine Erklärung:
Das Formular mit POST als Methode, damit nicht alles über die URL gemacht wird (ist sicherer).
Dein Button zum "Eintragen" hat nun einen Namen bekommen.
Ist dieser Name gesetzt, sprich der Button angeklickt, wird das PHP-Skript ausgeführt.
Alle eingetragenen Daten bekommst du durch die POST-Methode. Abrufbar mit $_POST['name_des_feldes'] (siehe Code).
Wichtig ist noch, dass deine txt-Datei die nötigen Rechte hat, damit in ihr auch geschrieben werden kann.
Weiterhin waren deine String-Variablen-Verbindungen nicht sauber. Lieber mit Stringverknüpfung.
Beispiel:
Code:
echo "Hier ist ein schöner Text und heißt ".$_POST['name']." oder irre ich mich?";
Ich hoffe das hilft dir weiter (ansonsten Manuals lesen und http://www.selfphpfriend.de und http://de.selfhtml.org)

Ciao

[edit] fopen muss mit dem modus "a" oder "a+" gestartet werden, sonst fängt er immer wieder vorne an und überschreibt dir sozusagen alles.
Mal ne frage: weißt du denn wie du das wieder auslesen willst? Ich denke da wird ne menge auf dich zu kommen und du wirst dich mehr mit PHP beschäftigen müssen[/edit]
__________________
Developers-Guide.net
Senseless
WarrenFaith ist offline  
Alt 28.07.2005, 21:35  
Gast
 
Beiträge: n/a
Standard

Das auslesen habe ich hinbekommen!

wenn du willst kannst du es mal anschauen!

www.hgv.bambid.ch

ich danke dir das funkt ja wunderbar! aber jetzt muss ich das nur noch hinbekommen das der neuste text oben anfängt aber das möchte ich selbst rausfinden!

danke dir!

mfg bambid
 
Alt 28.07.2005, 22:55  
Gast
 
Beiträge: n/a
Standard

So und auch das habe ich hinbekommen!
ich habe alles in ein array eingelesen und dann die datei und den eintrag eingeschrieben!
so und jetzt widme ich mich wieder anderen Problemen!

css und so!

mfg bambid

PS: du warst mir eine grosse hilfe und danke dir dafür!
 
 


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
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gb mit name eintragen, php übertragung probleme, gästebuch daten per iso-8859-1 übertragen post

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:18 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.