Frage zum Tutorial Affenformular

  • Hallo,


    bin gerade am durcharbeiten des PHP Tutorials für Anfänger ;)
    Hängen geblieben bin ich am Schluss des Übungsteils Affenformulare ;)


    und zwar, wenn ich die Lösung ganz genau so übernehme, bekomme ich folgende Fehlermeldung:

    Zitat

    Notice: Undefined index: kontrolle in C:\xampp\htdocs\affenformular-kontrollfeld.php on line 6


    Nochmal zur Veranschaulichung:

    Code
    if ( $_GET['kontrolle'] == 1 )


    Es funktioniert zwar schon, aber es steht dann immer über den Eingabefehlern diese lästige Fehlermeldung.
    Ich habs jetzt ein bisschen anders gelöst und zwar mit folgendem Code:

    Code
    if ( empty ($_GET['kontrolle']) == 0)


    Wahrscheinlich bekommt man immer eine Fehlermeldung, da in der 1. Methode ja noch gar kein Wert eingetragen wurde, und somit die Fehlermeldung schon vor klicken des Submit Buttons steht.


    Ist meine Denkweise hier richtig? Wenn ja wie bekommt man es hin, dass nach obriger Methode gleich am Anfang noch keine Fehlermeldung erscheint?


    Schon mal ein Danke im Voraus ;)

  • Hallo,


    Zitat

    Ist meine Denkweise hier richtig? Wenn ja wie bekommt man es hin, dass nach obriger Methode gleich am Anfang noch keine Fehlermeldung erscheint?


    Richtig. Du musst erst vergleichen, wenn der Wert gesetzt ist,
    also z.B.


    oder du machst es so, dass ein Wert gesetzt wird, wenn nichts gesetzt ist,
    also z.B. 0

    Code
    if (!isset($_GET['kontrolle'])){
    $_GET['kontrolle'] = 0 ;
    }
  • Dankeschön ;)
    Hat auch mit "isset" super funktioniert ;)


    Nun muss ich euch leider nochmal belästigen, nun bin ich beim Beispiel des Affenformulars hängen geblieben ;)


    Habe den Code eigentlich komplett von der Lösung so übernommen...



    Nur bringt er mir dann immer folgende Fehlermeldung:


    Zitat

    Parse error: syntax error, unexpected T_IF, expecting ',' or ';' in C:\xampp\htdocs\affenformular-kontrollfeld2.php on line 9


    Hab schon ein paar Sachen probiert auch mit "OR" und "AND" prbiert, ist ja eigentlich das gleiche wie wenn ich 2 if Abfragen stelle oder?
    Leider klappts einfach nicht und es wurde noch nichts im Browser angezeigt, immer dieser lästige Fehler ;)


    Hoffe Ihr könnt mir weiterhelfen ;)

  • Schon mal Danke für für die schnelle Antwort ;)


    Semikolon hab ich wirklich übersehen.


    Das Simikolon ist gesetzt, aber nun eine ganze Reige von Fehlern....



    Eigentlich immer der gleiche Fehler: Undefined index hmm was beudet dieser?

  • Hallo,


    das bedeutet einfach, dass für die Variablen kein Wert gesetzt ist.
    Du darfst halt erst abfragen wenn der und der Wert gesetzt ist,
    oder gleich am Anfang (einen) Wert/e setzen.

  • Hi,


    ich habe es mir zur Angewohnheit gemacht an Anfang alle Variablen zu initialisieren. So lassen sich einige Fehler vermeiden.


    Code
    $post_back = isset($_POST['submit']);
    
      $name = isset($_POST['name']) ? $_POST['name'] : "";
    
      $email = isset($_POST['email']) ? $_POST['email'] : "";
    
      $message = isset($_POST['message']) ? $_POST['message'] : "";
    
      $error = "";


    LG

  • Danke hat mir weiter geholfen :)


    So, nun habe ich mich mal am beispiel von einem kleinen Wohngebäuderechner für ein Browsergame probiert....



    gut, über die Qualität des Codes lässt sich bestimmt streiten, ich hatte Probleme die Berchnungen Variable mit Zahlen gemischt durchzuführen... Falls Ihr Verbesserungsvorschläge habt, immer her damit ;)


    Nun will ich die Anzahl der Gebäude, anhand eines sogenannten "Spionageberichts" automatisch anzeigen lassen...
    eine Beispiel url: <!-- m --><a class="postlink" href="http://deadslow.my-cia.de/reports/spy/bc1b530f8f637ff220d5a53cd1e0fa71.php">http://deadslow.my-cia.de/reports/spy/b ... e0fa71.php</a><!-- m -->
    hoffe ist sichtbar. Habe auch die Erlaubnis dazu keine kommerzielle böse Sache .....


    Hab mir das Tutorial für den Counter schon mal ein bisschen angesehen, müsste eigentlich genau so funktionieren oder´? Datei auslesen und schreiben....


    Aber wie ist nun der Code, damit genau das Wort ... ausgelesen und als Inhalt in meinem Affenformular wiedergegeben wird?

  • Was mir as erstes bei deinem Code auffällt:
    Deine überprüfung der Variabeln ist ja schön, aber mal ist der Inhat der Variabel eine Zahl und mal ein leerer String?
    Das ist unschön.. damit kann man das Univserum explodieren lassen! :D *


    Das mit dem Counter funktioniert hier leider nicht so einfach :/
    mit der Technik kannst du nur Dateien öffnen, die auf deinem Server liegen.
    -Hier musst du mit file_get_contents arbeiten.
    Anschließend würde ich sagen, holst dir deine Werte vie RegEx (Regülare Ausdrücke) aus dem String, den die Funktion zurück gibt.




    zu :*

    PHP
    <span class="syntaxdefault">$a </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'string'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$b </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> $a </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> true </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> $b </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> false </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> $a </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $b </span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxstring">'universe broken'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">);<br />}<br /><br /></span><span class="syntaxcomment">//::> Wir fassen zusammen: $a = true und $b = false. Schlussfolgerung: $a != $b<br />//::> Aber die Ausgabe:<br />//::> universe broken<br /></span><span class="syntaxdefault"> </span>
  • Hallo,


    ich habe auch noch eine Frage zu dem Affenformular. Und zwar, ist wenn ich das Beispiel mit Vorname und Nachname 1zu1 übernehme, bekomme ich im Feld für den Nachnamen immer(!) einen Tabulator oder Leerzeichen. Dann funktioniert die Abfrage, ob die Variable $_GET['nachname'] leer ist nicht mehr, ich bekomme für nachname also ein true, obwohl ich noch nichts hineingeschrieben habe. Ich habe den Code etwas abgeändert und mit trim() die Variable von Leerzeichen befreit, so dass jetzt wenigstens das Formular wieder aufgerufen wird wenn ich bei nachname nichts eintrage, allerdings ist in dem Feld immer noch ein Tabulator oder mehrere Leerzeichen. Hier mal mein Code:




    Hier noch die Zeile aus der Adressleiste, damit ihr sehen könnt, dass nachname nicht leer ist:


    Code
    http://localhost/affe3.php?vorname=&nachname=++++++++++++++++&kontrolle=1&button=absenden


    Danke schon mal für die Antwort

  • Hallo,


    warum es so ist kann ich Dirauf die schnelle nicht sagen.
    Hier ist eine Musterlösung:

    PHP
    <span class="syntaxhtml"><span class="syntaxdefault"><?php<br /><br /></span><span class="syntaxcomment">// Variablen initialisieren und filtern <br /><br /></span><span class="syntaxdefault">$vorname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> isset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">?</span><span class="syntaxdefault"> trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">]):</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$vorname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> filter_var</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> FILTER_SANITIZE_STRING</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">$nachname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> isset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nachname'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">?</span><span class="syntaxdefault"> trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nachname'</span><span class="syntaxkeyword">]):</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$nachname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> filter_var</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$nachname</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> FILTER_SANITIZE_STRING</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">?><br /></span><br /><span class="syntaxdefault"><?php if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vorname </span><span class="syntaxkeyword">===</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> OR $nachname </span><span class="syntaxkeyword">===</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">):</span><span class="syntaxdefault"> ?><br /></span><br />    <br />    <form action="affe3.php" method="get" name="form2" id="form2"><br />    <p>Vorname:<br />    <input type="text" name="vorname" id="vorname"<br />    value="<span class="syntaxdefault"><?php echo $vorname</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span>" size="50" maxlength="150" /><br />    </p><br />    <p>Nachname:<br />    <input type="text" name="nachname" id="nachname" value="<span class="syntaxdefault"><?php echo $nachname</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span>" size="50" maxlength="150" /><br />    </p><br />    <input type="hidden" name="kontrolle" id="kontrolle" value="1" /><br />    <br />    <p>Absende Button:<br />    <input type="submit" name="button" id="button" value="absenden" /><br />    </p><br />    </form><br /><br /><span class="syntaxdefault"><?php else </span><span class="syntaxkeyword">:</span><span class="syntaxdefault"> ?><br /></span><br />    <p>Vorname: <span class="syntaxdefault"><?php echo $vorname</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span></p><br />    <p>Nachname: <span class="syntaxdefault"><?php echo $nachname</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span></p><br /><br /><span class="syntaxdefault"><? endif</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?><br /></span><br /></span>


    Noch ein paar kleine Anmerkungen:
    - man sollte Variablen immer initialisieren bevor man sie benutzt
    - man sollte Variablen aus Sicherheitsgründen immer filtern



    LG

  • hab jetzt keinen bock alle antworten durchzulesen...jetzt kommt einfach mein part :)



    das hast mit xampp ausgeführt ne?


    das war eine notiz, keine fehlermeldung. notizen kommen nicht mehr auf dem webserver (zumindest auf meinem net) , sie sind nurn 'hilfestellungen'



    hoffe konnte helfen

  • Zitat

    von Zyon » Sonntag 29. Mai 2011, 01:07
    Hallo,


    bin gerade am durcharbeiten des PHP Tutorials für Anfänger ;)
    Hängen geblieben bin ich am Schluss des Übungsteils Affenformulare ;)


    So nachdem ich versuchen wollte ein Unter menu in der Navigation zu erstellen und festellen musste das ich noch zu wenig kenntnise habe über Java. geh ich jetzt rüber zum PHP.
    so meine frage ist, die gleiche wie die vom Zyon oder die frage war so. Denn dank Zyon konnte ich einiges Lernen, doch ich hab dennoch eine frage zum code und zwar, dort fehlen ja diese Variablen? Dies hiesse dann das ich z.b bei:

    Code
    if ( $_GET['nachname'] == "" OR $_GET['anzahl'] == "" )


    ein $nachname erstellen muss sodas es richtig dargestellt wird?
    damit will ich nur wissen wie ich dieses problem vom Notice: Undefined index: nachname in F:\xampp\htdocs\Etest\affenformular.php on line 3 lösen kann.

  • Diese Notice bekommst du weg, wenn du keine nicht-definierten GET/POST Dinger mehr aufrufst..
    Du musst also bevor du überprüfen kannst, ob ein GET-Wert leer ist überprüfen, ob er überhaupt gesetzt ist, z.b. mit isset:


    PHP
    <span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">isset </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nachname'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> AND isset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anzahl'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">     if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nachname'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> OR $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anzahl'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">){<br /><br /></span><span class="syntaxdefault">     </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> </span>


    ungetestet, sollte aber tun. Die Notice kommt daher, dass du probierst auf Variablen zuzugreifen, die es gar nicht gibt.


    Grüße

  • dann muss das dann so aussehn wie bei CyberGirl?


    Zitat


    BEISPIEL:
    $vorname = isset($_GET['vorname']) ? trim($_GET['vorname']): "";
    $vorname = filter_var($vorname, FILTER_SANITIZE_STRING);


    $nachname = isset($_GET['nachname']) ? trim($_GET['nachname']): "";
    $nachname = filter_var($nachname, FILTER_SANITIZE_STRING);


    wenn ich das richtig verstanden habe.?


    das würde dann heissen



    :roll: pssst: CSS war umeiniges leichter :P

  • Nicht einfach abschreiben - verstehen. Ich denke diese verkürzten Sachen solltest du noch nicht verwenden - und dann wenn dann nicht zusammen mit dem Beispiel dass ich dir gegeben hatte. Versuche mal, dir if-Anweisungen vorzulesen, in der Art von

    PHP
    <span class="syntaxdefault">WENN </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">dieses hier erfüllt ist</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> DANN </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">mach das was in der geschweiften Klammer steht</span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span>


    Vielleicht verstehst du es dann besser.

  • Nein ging nicht um das nachschreiben oder abschreiben sondern eher um das verstehen wie der aufbau sein sollte. denn später muss ich sowas auch alleine können wenn ich z.B ein .. Blog à la Facebook art ( nicht direkt so sondern etwas ähnliches. ) am besten kann man das bei viagogo.de sehen am besten schaut ihr die Favoriten an. damit ihr versteht was ich ungefähr haben möchte- aber zuerst muss ich den affenformular verstehen und dann später der rest. ist nur schwieriger als gedacht ^^

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!