PHP Programm Fehler

Ranbur

Newbie
Registriert
Juni 2014
Beiträge
6
Hallo Leute,

Ich bin neu hier und weis erlich gesagt auch gar nicht ob das hierhingehört ich bitte aber trotzdem um Hilfe ich habe seid kurzem ein Problem mit einem kleinen PHP Programm das ich nicht Identifizieren kann deshalb werde ich einfach mal ein Bild reinstellen mit dem Code und dem was er im Browser ausgibt.
Da wo 62 steht stand vorher zahl dabei trat exakt der selbe Fehler auf
Fehler.png
Ich hoffe das ihr mir sagen könnt was der Fehler ist und was ich machen muss damit das Programm vernümftig läuft
Ich danke mich schonmal im voraus :)

MfG
Ranbur
 
die eingegebenen Zahl ist kleiner als 50 oder größer als 100, deswegen kommt eben diese "Fehlermeldung"
 
Ohne @ bei $_POST['62']
Hätte ich jetzt aus dem Stegreif gesagt...

62 ist ja größer 50 und kleiner 100...
 
Zuerst: Das ist Text, der in
Code:
[ / CODE] Tags direkt in deine Post gehört.

Dann, Fehler in Zeile 2.
Was willst du erreichen und was hast du geschrieben. Willst du wirklich aus dem Feld mit dem Namen "62" aus dem Array $_POST den Inhalt in $zahl speichern?
Und mach mal das @ weg. Wer das braucht, hat nicht sauber programmiert.
 
Habe das @ jetzt weggemacht dann gibt er folgendes aus

Notice: Undefined offset: 61 in C:\xampp\htdocs\test_51.php on line 2
Fehlermeldung
 
Also $_POST verwendet man ja häufig in Formularen... dort gibt es das Feld 62... <input type="text" name="62">

Dann würde es gehen.

Oder du schreibst es so:

Code:
<?php
	$_POST['62'] = 62;
	$zahl = @$_POST['62'];
	
	if (($zahl < 50)  || ($zahl > 100))
		echo "Fehlermeldung";
	else
	{
		$summe = 0;
		for ($n=1; $summe<=$zahl; $n++)
		{
			$summe = $summe + $n;
			if ($summe <= $zahl)
			{
				echo $n;
				echo "&nbsp; $summe <BR>";
			}
		}
	}
?>
 
Danke mit deinem Code funktioniert es :).

Aber wiso wurde das or gegen || ersetzt ?
 
Ist im Prinzip beides das selbe.

Das wichtigste war, $_POST['62'] auch wirklich mit dem Wert 62 zu belegen.
 
Danke habs jetzt endlich gerafft

Hoffentlich keine 6 mehr inner Arbeit!!
 
Ich denke schon, dass es eine wird. Weil hast du verstanden, was dein Fehler war?
In PHP gibt es Arrays (wie z.B. $_POST).
Diese Arrays haben Felder, stell es dir vor wie eine Bibliothek mit Fachnummer. Du hast den Inhalt von Fach 62 wollen, dieses Fach gibt es aber nicht (Undefined offset: 62). Da PHP sehr fehlertolerant ist, wird deine Variable $zahl daher auf 0 gesetzt.

Die Lösung von Ryan89 erstellt jetzt Fach 62 und tut da die Zahl 62 rein.

@Ryan89: Du hast jetzt um das Problem rumprogrammiert, aber gelöst hast du den Verständnisfehler nicht.
 
Um die Erklärung von Hancock nochmal deinem konkreten Problem anzunähern ...

Ranbur schrieb:
Da wo 62 steht stand vorher zahl dabei trat exakt der selbe Fehler auf

Als da noch 'zahl' stand hast du versuchst im Fach 'zahl' etwas zu finden. Durch das Einsetzten von 62 hast du jetzt also keinen Wert gesetzt sondern die Anweisung wo der Wert ist vollkommen verändert. Und was dieses Skript wohl eigentlich machen sollte, ist ein Wert aus einem Formular entgegen nehmen das ein Feld mit dem Namen 'zahl' hatte. Wenn du jetzt aber das Skript ohne das Formular ausführst ist der Wert eben (wie schon beschrieben) immer 0, weil PHP da sehr Fehlertolerant ist.

Zu deiner Frage warum aus dem or ein || wurde ... es sind nur unterschiedliche Schreibweisen, bewirken aber das gleiche ... ein ODER

Warum das @ weg sollte, diese Unterdrückt Fehlermeldungen in PHP daher hast du den Fehler des fehlenden Offset auch nur gesehen als du entfernt hast
 
Zuletzt bearbeitet:
Hancock schrieb:
@Ryan89: Du hast jetzt um das Problem rumprogrammiert, aber gelöst hast du den Verständnisfehler nicht.
Ich bin auch gar nicht auf eine Verständnisfrage eingegangen sondern habe lediglich eine Lösung geboten. Das es sich hierbei um eine "Arbeit" handelt, war ja nicht ersichtlich. Sonst hätte ich natürlich merh Sätze geschrieben.
 
Dem Script fehlt ein elementarer Faktor: Eine Überprüfung, ob denn das Feld im $_POST - Array überhaupt belegt ist. Wenn es nicht belegt ist, dann passiert irgend etwas, nur nicht das erwartete.
 
Klar müsse man im produktiven Einsatz mittels isset() prüfen ob das "Fach" belegt ist. Im Falle einer konstanten Vorbelegung ist dies aber nicht notwendig.
 
Die Arbeit wurde schon vor ein paar Wochen geschrieben
Allerdings hatte ich da einfach keine Ahnung wie das geht hatte Dann mal zuhause probiert und Halbt festgestellt das immer nur Fehlermeldung erschien allerdings stand der fehlerhafte Code so exakt Auf dem Arbeitsblatt und die Aufgabe war Halbt herauszufinden was das Programm ausgibt.
Und das Wort Fehlermeldung als ausgäbe war Halbt nicht richtig da Klassenkameraden diese Rechnung hatte die das Programm machen sollte
 
Zuletzt bearbeitet:
Dann kannste dem Lehrer evtl. den Kopf waschen.
1.) ist das @ hier sehr fragwürdig. Fehlermeldungen durch falsche Variablendeklaration ist TOLL, die sollte man nicht abwürgen.
2.) kommt es drauf an, was im $_POST übertragen wurde. Wenn von einem Formular aus das Feld "zahl" nicht belegt wurde, dann kommt garantiert "Fehlermeldung". Wenn er also keinen vollständigen HTTP-Request inkl. POST-Daten dazu gepackt hat, ist "Fehlermeldung" die einzig korrekte Antwort.
 
Zuletzt bearbeitet:
Man müsse halt über die Aufgabe bescheid wissen und was vorher war.

Gab es vorher ein Feld mit einer Eingabe, welches den Wert durch den Button auf dieses Script umgelegt hat, so war das Script definitiv richtig, da das feld dann durch $_POST gefüllt wird.

Jeder Dozent, der euch so eine Lösung auf den Tisch knallt und dann sagt: Lernt! ist unfähig!
Es muss also vorher mehr Infos gegeben worden sein.
 
Zuletzt bearbeitet:
Um mich zu Korregieren das @ stand nicht auf der Arbeit ich habe also den Fehler da schon Angezeigt bekommen konnte damit allerdings nichts anfangen.
Ich werde heute mal die Arbeit abfotografieren und hier Posten.
 
Zurück
Oben