lollypopbln: wir stehen vor einem rätsel

wir wollen das über ein html document ein startwert und ein entwert eingegeben werden

dann sollen diese Werte ins php übertragen werden und vom startwert bis zum Endwert alle zahlen ausgegeben werden im browser

wie stellen wir das an

hoffe auf hilfe.

an bei die Quelltexte
1 HTML
<html>
<body>

Bitte geben Sie eine Start- und eine Endzahl ein
<form action="praxis_25.php" method= "post">
<p><input name ="maxmenge"> Startzahl</p>
<p><input name ="maxmenge2"> Endzahl</p>
<input type="Submit" value="Abschicken">
<input type="Reset" value="Zurücksetzen">
</form>
</body>
</html>

2 PHP

<html>
<body>
<h4>while-Schleife</h4>
<?php
$maxmenge=  $_request["maxmenge"];
$maxmenge2= $_request["maxmenge2"];
for
"maxmenge" ++
$maxmenge <= "maxmenge2";
{
    echo $maxmenge "<br>";
    echo $maxmenge2;
}
?>
</body>
</html>

danke im voraus

  1. Hallo liebe SELFHTMLer,

    vielleicht hilft euch die php Dokumentation weiter.
    Die for Schleife kann und wird so nie funktionieren.

    Desweiteren sind eure Formularvariablen, sagen etwas daneben. Schaut euch mal auf php.net um da werdet ihr die richtige Syntax finden.

    Ein hier wird euch Code geliefert gibt es in diesem Forum nur ausgesprochen selten.

    LG
    kev1n

    --

    SELFCODE:
    sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
    ---
    1. Hallo Kevin,

      Ein hier wird euch Code geliefert gibt es in diesem Forum nur ausgesprochen selten.

      war wieder mal zu langsam... naja, dafür habe ich etwas Code mitgeliefert (manchmal gibts das doch - SCNR). Danke für die indirekte Bestätigung, dass wir beide dieselben "Probleme" (Syntax der for schleife und Variablennamen) gesehen haben.

      liebe Grüße

      mbr

    2. Ein hier wird euch Code geliefert gibt es in diesem Forum nur ausgesprochen selten.

      Du kannst dich in deinem eigenen Thread vom Gegenteil überzeugen.
      https://forum.selfhtml.org/?t=177791&m=1171492

      mfg Beat

      --
      Woran ich arbeite:
      X-Torah
         <°)))o><                      ><o(((°>o
      1. Hi,

        Du kannst dich in deinem eigenen Thread vom Gegenteil überzeugen.
        https://forum.selfhtml.org/?t=177791&m=1171492

        kev ist eh ein wenig ähmm speziell, wie ein österreicher sagen würde, wenn ich mir seine (wenigen), Beiträge hier im Forum anschaue.

        1. Hallo liebe SELFHTMLer,

          kev ist eh ein wenig ähmm speziell, wie ein österreicher sagen würde, wenn ich mir seine (wenigen), Beiträge hier im Forum anschaue.

          Bezogen auf meine Beiträge. Ok, und was genau ist da so ähmm speziell?

          LG
          kev1n

          --

          SELFCODE:
          sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
          ---
  2. Hallo Lollypopbln
    das sieht doch schon ganz gut aus. Nur die richtige Syntax der for Schleife fehlt noch.

    Kleines Beispiel:

      
    for($i=0;$i<7;$i++) {  
    echo $i;  
    }  
    
    

    Diese Schleife würde die Zahlen von 0 bis 6 ausgeben. Als erstes kommt die Initialisierung ($i=0), danach folgt eine Bedingung ($i<7). Solange diese Bedingung gilt, wird die Schleife (der Teil zwischen den geschweiften Klammern) ausgeführt. Als letztes folgt die Inkrementierung der Zählvariable ($i++). Das heißt: nach jedem Schleifendurchlauf wird $i um eins hochgezählt.

    Ach so: eine Sache noch: Ihr greift auf das array $_REQUEST zu. Der Name muss natürlich großgeschrieben werden. Übrigens könntet ihr in euren Fall auch $_POST verwenden, da ihr in eurem Formular als Methode "post" definiert habt.

    Infos dazu: vordefinierte Variablen

    Liebe Grüße und viel Erfolg

    mbr

  3. Hello,

    Setze mal die beiden Zeilen in Dein PHP-Script ein, damit Du Fehler während der Entwicklung auch angezeigt bekommst.

    <?php

    error_reporting(E_ALL);
      ini_set('display_errors',1);

    $maxmenge  =  $_request["maxmenge"];
    $maxmenge2 = $_request["maxmenge2"];
    for
    "maxmenge" ++
    $maxmenge <= "maxmenge2";
    {
        echo $maxmenge "<br>";
        echo $maxmenge2;
    }
    ?>

    PHP unterscheidet bei Variablennamen zwischen Groß- und Kleinschreibung.
    Wenn also eine Variable, auch eine vordefinierte, nicht gefunden wird, dann kann es an falscher Schreibweise liegen.

    Außerdem solltest Du in diesem Fall besser $_POST['maxmenge'] benutzen. das brauchst Du auch nicht extra umzukopieren in $maxmenge, Du kannst gleich mit $_POST['maxmenge'] und  $_POST['maxmenge2'] arbeiten.

    Und noch ein ungefragter Tipp zum Schluss:

    benenne Deine Parameter, also die <input>-Elemente so sinnvoll, dass Du im Script später auch weißt, was sie bewirken sollen, also z.B. mit 'startwert' und 'endwert'

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. also wir haben das jetzt so gemacht

    ........

    <html>
    <body>
    <h4>while-Schleife</h4>
    <?php

    $start = $_REQUEST["start"];
    $ende = $_REQUEST["ende"];

    for ( $i=$start; $i<=$ende; $i++);

    {
        echo $start, "<br>";
     echo $ende, "<br>";
    }
    ?>

    </body>
    </html>

    und das weinizge was er anzeigt ist die überschrift in h4

    1. Hi lollypopbln!

      also wir haben das jetzt so gemacht

      Das sieht doch schon wesentlich besser aus.

      <html>
      <body>
      <h4>while-Schleife</h4>
      <?php

      $start = $_REQUEST["start"];
      $ende = $_REQUEST["ende"];

      for ( $i=$start; $i<=$ende; $i++);

      Das Semikolon beendet die For-Schleife auch schon wieder.
      D. h. sie läuft zwar durch, aber es wird nichts gemacht. Entfernt also das Semikolon.

      {
          echo $start, "<br>";
      echo $ende, "<br>";

      Ich dachte, ihr wollt hochzählen. Dann gebt auch die hochzählende Variable aus, also $i.

      }
      ?>

      </body>
      </html>

      und das weinizge was er anzeigt ist die überschrift in h4

      Richtig. Ihr gebt euren inputs auch keinen korrekten Namen.

      <p><input name ="maxmenge"> Startzahl</p>

      Das Leerzeichen nach "name" darf nicht sein. Der Name müsste "start" sein, also: name="start".

      <p><input name ="maxmenge2"> Endzahl</p>

      Analog: name="ende"

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Hi Ingrid!

        echo $start, "<br>";
        echo $ende, "<br>";
        Ich dachte, ihr wollt hochzählen. Dann gebt auch die hochzählende Variable aus, also $i.

        Ergänzung: Strings werden in PHP mit einem Punkt, nicht mit einem Komma verknüpft: echo $variable.' text';

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Ergänzung: Strings werden in PHP mit einem Punkt, nicht mit einem Komma verknüpft: echo $variable.' text';

          Gilt nur bei der Zuweisung in einem Skalarkontext,
          Bei Listenkontext und damit auch echo gilt das nicht.

          Wie in Perl die print Ausgaben so ist in PHP die echo Ausgabe speziell:

          "Handbuch:

          echo — Gibt einen oder mehrere Strings aus

          Beschreibung
          void echo ( string $arg1 [, string $...] )

          Gibt alle Parameter aus.

          echo() ist nicht wirklich eine Funktion sondern ein Sprach-Konstrukt, daher brauchen Sie keine Klammern verwenden. echo() verhält sich im Gegensatz zu einigen anderen Sprach-Konstrukten nicht wie eine Funktion, deshalb kann es nicht immer in einem Funktionskontext verwendet werden. Hinzu kommt, dass bei der Angabe mehrerer Parameter für echo() diese nicht von Klammern umschlossen sein dürfen. "

          mfg Beat

          --
          Woran ich arbeite:
          X-Torah
             <°)))o><                      ><o(((°>o
      2. Hi,

        <p><input name ="maxmenge"> Startzahl</p>
        Das Leerzeichen nach "name" darf nicht sein.

        Wie kommst Du darauf?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi MudGuard!

          <p><input name ="maxmenge"> Startzahl</p>
          Das Leerzeichen nach "name" darf nicht sein.
          Wie kommst Du darauf?

          Das meinte neulich jemand hier im Forum. Ich glaube, die Begründung war, dass die Attribute durch Leerzeichen bzw. Whitespaces getrennt werden, der Browser also in diesem Fall zwei Attribute zu erkennen glaubt.
          Sicher bin ich mir natürlich nicht, zumal ich den Thread nicht wiederfinde.

          MfG H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        2. <p><input name ="maxmenge"> Startzahl</p>
          Das Leerzeichen nach "name" darf nicht sein.

          Wie kommst Du darauf?

          In HTML Quirks-Mode ist es egal, bei XHTML wäre das ein grober Fehler!

          1. <p><input name ="maxmenge"> Startzahl</p>
            Das Leerzeichen nach "name" darf nicht sein.

            Wie kommst Du darauf?
            In HTML Quirks-Mode ist es egal, bei XHTML wäre das ein grober Fehler!

            Kannst du uns die autoritative Stelle aufzeigen betreffs XHTML 1.0?

            mfg Beat

            --
            Woran ich arbeite:
            X-Torah
            ><o(((°>       ><o(((°>
               <°)))o><                      ><o(((°>o
          2. <p><input name ="maxmenge"> Startzahl</p>
            bei XHTML wäre das ein grober Fehler!

            Nein

            Mathias

    2. Hallöchen,

      im ersten Posting steht

      <p><input name ="maxmenge"> Startzahl</p>  
      <p><input name ="maxmenge2"> Endzahl</p>
      

      also wir haben das jetzt so gemacht

      ........

      <html>
      <body>
      <h4>while-Schleife</h4>
      <?php

      $start = $_REQUEST["start"]; // es gibt kein Formularelement mit Name "start" (aber ein "maxmenge")
       $ende = $_REQUEST["ende"]; // es gibt kein Formularelement mit Name "ende" (aber ein "maxmenge2")

      for ( $i=$start; $i<=$ende; $i++);

      {

      //in den beiden folgenden Zeilen Syntax-Fehler: Komma und Leerzeichen sollen Bestandteile des Strings sein, und gehören deshalb mit zwischen die ""

      echo $start, "<br>";
        echo $ende, "<br>";

      // wird dir immer die gleichen Werte bringen. Das Einzige, was sich in deiner Schleife ändert, ist $i

      }
      ?>

      </body>
      </html>

      und das weinizge was er anzeigt ist die überschrift in h4

      ...weil deine gepostete Schleife keine Ausgaben erzeugt.

      MfG
      vaudi

  5.   
    <html>  
     <head><title></title></head>  
      <body>  
       <input type="text" name="startZahl">  
       <input type="text" name="endZahl">  
      </body>  
    </html>  
    
    
      
    <?php  
    $startWert = $_POST['startZahl'];  
    $endWert = $_POST['endZahl'];  
      
    for($i = $startWert; $i < $endWert; $i++)  
    {  
     echo $i."<br />";  
    }  
    ?>  
    
    

    Ausgabe bei Startwert 1 und Endwert 9:

      
    1  
    2  
    3  
    4  
    5  
    6  
    7  
    8  
    9  
    
    
    1. KORREKTUR:

      <html>
      <head><title></title></head>
        <body>

      <form method="post" action="praxis_25.php">

      <input type="text" name="startZahl">
          <input type="text" name="endZahl">

      </form>

      </body>
      </html>

      
      
    2. <input type="text" name="startZahl">
         <input type="text" name="endZahl">

      ...

      <?php
      $startWert = $_POST['startZahl'];
      $endWert = $_POST['endZahl'];

      for($i = $startWert; $i < $endWert; $i++)
      {
      echo $i."<br />";
      }
      ?>

        
      Fein, und nun darfst du noch zeigen, wie man Userinput validiert, bevor du "Lösung" schreist.  
        
      Das <br /> zeigt mir übrigens ein ganz komisches Verständnis in deinem (X or not so X)HTML.  
        
      mfg Beat
      
      -- 
      Woran ich arbeite:  
      [X-Torah](http://www.elcappuccino.ch/cgi/tok.pl?extern=1-pub-com3306-1)  
         <°)))o><                      ><o(((°>o  
      
      
      1. Fein, und nun darfst du noch zeigen, wie man Userinput validiert, bevor du "Lösung" schreist.

        Oh man, ok ok der Submit-Button fehlt, man kann aber auch selber einbisschen überlegen oder?!

        Das <br /> zeigt mir übrigens ein ganz komisches Verständnis in deinem (X or not so X)HTML.

        Gewohnheit, ob du HTML 4.1 oder XHTML 1.1 verwendest, es gibt keine Fehler dadurch.

        1. Mahlzeit Peter Lüstig,

          Fein, und nun darfst du noch zeigen, wie man Userinput validiert, bevor du "Lösung" schreist.
          Oh man, ok ok der Submit-Button fehlt, man kann aber auch selber einbisschen überlegen oder?!

          Was hat ein Submit-Button mit absolut notwendiger und in Deiner "Lösung" nicht enhaltener Validierung der vom Benutzer (oder irgendwelchen Automaten) eingegebenen Daten zu tun?

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Mahlzeit Peter Lüstig,

            Fein, und nun darfst du noch zeigen, wie man Userinput validiert, bevor du "Lösung" schreist.
            Oh man, ok ok der Submit-Button fehlt, man kann aber auch selber einbisschen überlegen oder?!

            Was hat ein Submit-Button mit absolut notwendiger und in Deiner "Lösung" nicht enhaltener Validierung der vom Benutzer (oder irgendwelchen Automaten) eingegebenen Daten zu tun?

            Werde ich dafür bezahlt, das ich hier fertige Codes reinstelle?
            Der User soll sich selber bisschen Anstrengen, bei mir wird alles richtig ausgeführt, ich weiß garnicht was ihr wollt.

            1. Mahlzeit Peter Lüstig,

              Werde ich dafür bezahlt, das ich hier fertige Codes reinstelle?

              Nein - genauso wenig wie alle anderen Teilnehmer. Dann behaupte bitte aber auch nicht, dass Dein Code "die Lösung" ist: das ist er nämlich nicht. Er ist allerhöchstens ein Lösungsansatz, der noch einiger Nacharbeit bedarf.

              Der User soll sich selber bisschen Anstrengen, bei mir wird alles richtig ausgeführt, ich weiß garnicht was ihr wollt.

              Was ich will, ist irrelevant. Gib doch bitte mal in Deiner "Lösung" z.B. in das Eingabefeld mit dem Namen "startZahl" als Wert "foobar" ein ...

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              1. Nein - genauso wenig wie alle anderen Teilnehmer. Dann behaupte bitte aber auch nicht, dass Dein Code "die Lösung" ist: das ist er nämlich nicht. Er ist allerhöchstens ein Lösungsansatz, der noch einiger Nacharbeit bedarf.

                Ok, hast recht!

                Gib doch bitte mal in Deiner "Lösung" z.B. in das Eingabefeld mit dem Namen "startZahl" als Wert "foobar" ein ...

                Es ist schon klar dass das einen Fehler verursachen würde, aber nach eine Validierung war hier nicht gefragt. Genau sogut könnte man 100 Wächter reinstellen die jeden und alles überwachen, damit blos nicht dieses kleine Script falsch läuft, man muss auch einbisschen selber denken können, und feststellen das man da NUR Zahlen eintippen darf, damit die Schleife ordungsgemäss läuft.

                1. Mahlzeit Peter Lüstig,

                  Gib doch bitte mal in Deiner "Lösung" z.B. in das Eingabefeld mit dem Namen "startZahl" als Wert "foobar" ein ...
                  Es ist schon klar dass das einen Fehler verursachen würde, aber nach eine Validierung war hier nicht gefragt.

                  Das ist zwar richtig, dass nicht explizit nach einer Validierung gefragt wurde - es wurde aber genausowenig explizit nach einer "Musterlösung" (die aber doch keine ist) gefragt. Und wenn man schon eine Lösung anbietet, sollte sie die grundlegenden Dinge (und dazu gehört im Web-Umfeld insbesondere und auf jeden Fall die Überprüfung von angeblichem User-Input) beinhalten.

                  Genau sogut könnte man 100 Wächter reinstellen die jeden und alles überwachen, damit blos nicht dieses kleine Script falsch läuft,

                  Bitte? Was meinst Du denn jetzt mit "100 Wächtern"? Wo ist das Problem, innerhalb eines Skripts, das Benutzereingaben verarbeiten soll, zu Anfang EINMAL diese Werte auf Gültigkeit zu überprüfen? Das ist IMHO eine absolute Grundlage und sollte IMMER und von JEDEM Skript gemacht werden, da nicht umsonst gilt: ALL INPUT IS EVIL!

                  man muss auch einbisschen selber denken können, und feststellen das man da NUR Zahlen eintippen darf, damit die Schleife ordungsgemäss läuft.

                  Du erwartest also von Benutzern, dass sie genau wissen, was mit den Eingaben, die sie tätigen, geschieht und wie diese verarbeitet werden? Du erwartest weiterhin, dass tatsächlich nur Menschen mit einem halbwegs annehmbaren IQ und grundlegendem technischem Verständnis, alle anderen jedoch nicht und insbesondere auch keine Automaten, Skripte usw., das Formular benutzen?

                  Das sind dann aber Annahmen, die den tatsächlichen und realen Gegebenenheiten im Web widersprechen und deshalb entsprechend geäußert werden sollten - ansonsten ist das Skript nämlich nicht tauglich für die "große weite Welt", sondern lediglich für ein Intranet o.ä. mit einer geschlossen bzw. sehr stark eingeschränkten Benutzergruppe ... und danach war nicht explizit gefragt.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  1. Das ist zwar richtig, dass nicht explizit nach einer Validierung gefragt wurde - es wurde aber genausowenig explizit nach einer "Musterlösung" (die aber doch keine ist) gefragt. Und wenn man schon eine Lösung anbietet, sollte sie die grundlegenden Dinge (und dazu gehört im Web-Umfeld insbesondere und auf jeden Fall die Überprüfung von angeblichem User-Input) beinhalten.

                    Ich wollte den Script nicht unnötig größer machen, es ja wohl klar das wenn man schon den Ansatz hier entnimmt, das man dann auch ein paar Dinge selber hinzufügt, wie die Validierung und alles andere.

                    Genau sogut könnte man 100 Wächter reinstellen die jeden und alles überwachen, damit blos nicht dieses kleine Script falsch läuft,

                    Bitte? Was meinst Du denn jetzt mit "100 Wächtern"? Wo ist das Problem, innerhalb eines Skripts, das Benutzereingaben verarbeiten soll, zu Anfang EINMAL diese Werte auf Gültigkeit zu überprüfen? Das ist IMHO eine absolute Grundlage und sollte IMMER und von JEDEM Skript gemacht werden, da nicht umsonst gilt: ALL INPUT IS EVIL!

                    DAS WAR NICHT DIE AUFGABENSTELLUNG!!!!
                    Warum soll ich irgendwelche Validierungen einbauen, der TS macht das schon selber wenn er es für nötig hält.

                    Du erwartest also von Benutzern, dass sie genau wissen, was mit den Eingaben, die sie tätigen, geschieht und wie diese verarbeitet werden? Du erwartest weiterhin, dass tatsächlich nur Menschen mit einem halbwegs annehmbaren IQ und grundlegendem technischem Verständnis, alle anderen jedoch nicht und insbesondere auch keine Automaten, Skripte usw., das Formular benutzen?

                    Ja genau das erwarte ich! Aber nicht von jedem User, nur vor dem Threadstarter, schließlich weiß ER, was er eintippen soll und was nicht.
                    Ich denke nicht das der TS mein halbfertiges Programm nimmt und online stellt, ohne es zu erweitern, das ist ja wohl klar oder?! Daher habe ich es nicht weiterhin ausgebaut. Und JA, ich denke schon dass dieses Script nicht für "Automaten, Scripte usw." gedacht ist, sondern für seine HP, oder seine Projekte.

                    ansonsten ist das Skript nämlich nicht tauglich für die "große weite Welt"

                    Das soll es auch nicht!
                    Es war ein Ansatz, den der TS selber vervollständigen soll/kann!
                    Ob er es nur zuhause benutzt, oder ins www stellt, ist mir egal!
                    Und ob es dafür reif ist, auch! Es ist nicht mein Brei, ich habe einen Ansatz geliefert, was er drauß macht ist seine sache.

                    Leider habe ich "LÖSUNG" statt "ANSATZ" geschrieben, daher diese unnötige diskusssion hier! Wenn man hilft wird gemeckert, wenn man nicht hilft auch, was ist nur aus dieser welt geworden ;)

                    1. Hi there,

                      Leider habe ich "LÖSUNG" statt "ANSATZ" geschrieben, daher diese unnötige diskusssion hier! Wenn man hilft wird gemeckert, wenn man nicht hilft auch, was ist nur aus dieser welt geworden ;)

                      Hier ist nicht die Welt, hier findet ein Experiment statt...

                      1. Hello,

                        Leider habe ich "LÖSUNG" statt "ANSATZ" geschrieben, daher diese unnötige diskusssion hier! Wenn man hilft wird gemeckert, wenn man nicht hilft auch, was ist nur aus dieser welt geworden ;)

                        Hier ist nicht die Welt, hier findet ein Experiment statt...

                        Wo ist mein Handtuch?

                        Liebe Grüße aus Syburg bei Dortmund

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                    2. Hallo.

                      Ich denke nicht das der TS mein halbfertiges Programm nimmt und online stellt, ohne es zu erweitern, das ist ja wohl klar oder?!

                      Wenn du es ihm als Lösung präsentierst, spricht aus seiner Sicht ja nicht dagegen. Mit Pech korrigiert niemand den von dir übernommenen Fehler; mit noch etwas mehr Pech wird er auf den Seiten des Fragestellers ausgenutzt. Und selbst wenn der glückliche Fall eintritt, dass jemand außerhalb dieses Forums seinen Quellcode korrigiert, wird er auf die Frage, wer ihm denn diesen fehlerhaften und gefährliche Code gegeben hat, sehr wahrscheinlich antworten: Das SelfHTML-Forum. Und deshalb liegt es auch in der Verantwortung und im Interesse der gesamten Nutzerschaft dieses Forums, dich und andere auf diese Dinge hinzuweisen, um uns als gesamtes Forum nicht weniger kompetent erscheinen zu lassen als nötig. -- Es genügt ja völlig, als unfreundlich verschrien zu sein.
                      MfG, at

            2. Hi,

              Werde ich dafür bezahlt, das ich hier fertige Codes reinstelle?

              nein, Du wirst dafür gemahnt. Fertige Codes *schaden* dem Fragesteller.

              Der User soll sich selber bisschen Anstrengen,

              Exakt.

              bei mir wird alles richtig ausgeführt,

              Falsch.

              ich weiß garnicht was ihr wollt.

              Eine Handvoll Vernunft deinerseits.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
    3. Hi Peter!

      Was hilft ihnen ein fertiger Programmcode, der auch mit deiner Verbesserung noch falsch ist?
      Bevor du versuchst irgendwie in eine Richtung zu argumentieren, die ich nicht nachvollziehen kann: Eine selbst gefundene Lösung ist eine Lösung auf die man stolz ist. Und nur diese Motivation fördert den Spaß.

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    4. Hallo,

      <?php
      $startWert = $_POST['startZahl'];
      $endWert = $_POST['endZahl'];
      [...]

      und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?

      Ciao,
       Martin

      --
      Die letzten Worte der Challenger-Crew:
      Lasst doch mal die Frau ans Steuer!
      1. Hallo,

        <?php
        $startWert = $_POST['startZahl'];
        $endWert = $_POST['endZahl'];
        [...]

        und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?

        Behalte die Perlen deiner Weißheiten für dich mein Freund.
        Ich würde es anders machen, da ich aber nicht weiß wie Fortgeschritten der TS ist, habe ich es so gemacht wie es mir damals beigebracht wurde.
        Für Anfänger ist diese Methode einfacher zu verstehen als wie ich es gemacht hätte.!!!

        1. Mahlzeit Peter Lüstig,

          Ich würde es anders machen, da ich aber nicht weiß wie Fortgeschritten der TS ist, habe ich es so gemacht wie es mir damals beigebracht wurde.

          Das muss aber nicht zwangsläufig sinnvoll sein - und wieso es einem (vermutlichen) Anfänger gleich falsch beibringen?

          Für Anfänger ist diese Methode einfacher zu verstehen als wie ich es gemacht hätte.!!!

          Es ist NIE ratsam, sinnlos umzukopieren - egal, ob bei Anfängern oder bei Fortgeschrittenen. Noch sinnloser ist es jedoch, einem Anfänger das gleich so beizubringen.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Hello,

          und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?
          Behalte die Perlen deiner Weißheiten für dich mein Freund.

          Nun, zum Für-sich-behalten ist wohl Keiner hier. Die Fragenden behalten ihre Fragen nicht für sich und die Antwortenden eben ihre Antworten nicht, auch, wenn sie manchmal etwas barsch antworten.

          Auch Du musstest nochmal reagieren, weil Du ein wenig Kritik erhalten hast. Da musst musst Du aber durch, mein Freund. Und meinen Senf bekommst Du nun auch noch ab. *Du Armer*

          Immerhin hat das Umkopieren noch eine generelle Nebenfrage aufgeworfen: Wie macht PHP das eigentlich mit den Variablen? Dauert ein Zugriff auf ein "Array"-Element wirklich länger, als ein Zugriff auf eine einfache Variable? Da alle Bezeichner als Alias in Listen abgelegt werden, wird das gar nicht so einfach zu beantworten sein. Jedenfalls wird ein indirekter Zugriff mehr einen modernen Prozessor nicht zum Schwitzen bringen. Wenn man allerdings 2.900.000 Bildpunkte verschieben will, kann das schon  einen Unterschied von mehreren Sekunden ausmachen.

          Ich würde es anders machen,

          Dann verrate uns bitte, wie Du es machen würdest. Kann ja sein, dass wie alle einen Aha-Effekt haben.

          da ich aber nicht weiß wie Fortgeschritten der TS ist, habe ich es so gemacht wie es mir damals beigebracht wurde.

          Für Anfänger ist diese Methode einfacher zu verstehen als wie ich es gemacht hätte.!!!

          Das kann nun vermutlich niemand nachvollziehen, da Du ja nicht verraten hast, wie Du es gemacht hättest :-)

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
      2. Hello,

        und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?

        mal so eine Frage an die Profis: ist das eigentlich in PHP wirklich kontraproduktiv (insbesondere im Hinblick auf Performance)? Ich würde unüberlegt mit JA antworten, sofern die Variable einmal oder zweimal angesprochen wird. Aber genau so gibt es z.B. im Bereich Java viele Stimmen die sagen, anstatt mehrfach (insbesondere in Schleifen) auf das selbe Array-Element zuzugreifen möge man eine lokale Variable verwenden.

        • Der Aufwand eine weitere Referenz zu erzeugen ist minimal, der Speichermehrbedarf ebenfalls
        • Der Compiler kann die Situation erkennen und bestimmte CPU-Register für die Variable verwenden, in die das Array nicht reinpasst
        • Der Zugriff auf ein Array erfordert, je nach Sprache, die Überprüfung gültiger Array-Grenzen, die für eine Variable nicht erforderlich ist

        Klar, alles Kleinkram und Teile des Performance-Tunings an das man sich machen kann wenn es irgendwo hakt, aber in Anbetracht der wiederholt auftauchenden Aussagen in Richtung "kontraproduktiv" würde ich das doch gerne mal abhaken...

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet
        1. mal so eine Frage an die Profis: ist das eigentlich in PHP wirklich kontraproduktiv (insbesondere im Hinblick auf Performance)? Ich würde unüberlegt mit JA antworten, sofern die Variable einmal oder zweimal angesprochen wird. Aber genau so gibt es z.B. im Bereich Java viele Stimmen die sagen, anstatt mehrfach (insbesondere in Schleifen) auf das selbe Array-Element zuzugreifen möge man eine lokale Variable verwenden.

          • Der Aufwand eine weitere Referenz zu erzeugen ist minimal, der Speichermehrbedarf ebenfalls
          • Der Compiler kann die Situation erkennen und bestimmte CPU-Register für die Variable verwenden, in die das Array nicht reinpasst
          • Der Zugriff auf ein Array erfordert, je nach Sprache, die Überprüfung gültiger Array-Grenzen, die für eine Variable nicht erforderlich ist

          Klar, alles Kleinkram und Teile des Performance-Tunings an das man sich machen kann wenn es irgendwo hakt, aber in Anbetracht der wiederholt auftauchenden Aussagen in Richtung "kontraproduktiv" würde ich das doch gerne mal abhaken...

          Ich glaube es ist nicht primär eine Sache der Performance. PHP erzeugt ja nur einen Alias, und erst, wenn du diesen manipulierst, wird es eine echte Kopie.

          Ich denke, das Hauptproblem liegt im Namensraum. bei $_POST weisst du einfach, woher die Daten stammen, und wie du damit umgehen musst.
          wenn du eine Zuweisung machst:

          $adhoc_variable = $_GET['dangerous']
             $feierabend_string = $_GET['another_dangerous']

          Dann verlierst du die Übersicht.

          Nun ich kenne mich mit PHP eigentlich nicht aus. bei mir landet alles, was ich auslese, in einem Perl hash %Input.
          Dieser wird dann validert und danach kopiert nach %User.

          Wenn ich diese zwei Hashes, bzw. ihre einzelnen Elemente $User{name}, $Input{name} sehe, dann weiss ich, was ich vor mir habe: entweder validierten oder rohen Userinput.

          Es gibt Argumente, variablen aus $_POST herauszuziehen und in einer eigenen zentralen variable abzulegen. Zum Beispiel, wenn du validierten Input entweder akzeptierst oder auf einen Defaultwert setzt. S_POST oder S_GET Variablen mit einen Default zu versehen, finde ich nämlich pervers, weil verwirrend. Es sind eben nicht die submitteten Inputs.

          Das mal meine Meinung.

          mfg Beat

          --
          Woran ich arbeite:
          X-Torah
             <°)))o><                      ><o(((°>o
        2. Hi,

          und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?
          mal so eine Frage an die Profis: ist das eigentlich in PHP wirklich kontraproduktiv (insbesondere im Hinblick auf Performance)?

          im Hinblick auf die Performance mag das Umkopieren vielleicht sogar einen leichten Vorteil bieten.

          Ich würde unüberlegt mit JA antworten, sofern die Variable einmal oder zweimal angesprochen wird. Aber genau so gibt es z.B. im Bereich Java viele Stimmen die sagen, anstatt mehrfach (insbesondere in Schleifen) auf das selbe Array-Element zuzugreifen möge man eine lokale Variable verwenden.

          Es gibt aber einen gravierenden Unterschied. Java ist eine compilierte Sprache. Die Adresse einer einfachen (zumal lokalen) Variablen ist dabei zur Laufzeit des Programms bekannt, während der Zugriff auf ein Array immer die Berechnung des Adress-Offsets aus dem Index erfordert (wenn's der Compiler nicht optimieren kann). In PHP wird dagegen die Adresse einer Variablen im Speicher bei jedem Zugriff über den Namen neu gesucht. Da ist es dann unerheblich, ob ich auf ein Array/Objekt/assoziatives Array oder über eine einfache Variable zugreife.

          [...] aber in Anbetracht der wiederholt auftauchenden Aussagen in Richtung "kontraproduktiv" würde ich das doch gerne mal abhaken...

          "Kontraproduktiv" ist hier nicht im Bezug auf die Performance zu sehen, sondern auf die Verständlichkeit des Codes: Wenn im PHP-Code irgendwo $_GET oder $_POST auftauchen, dann weiß man sofort: Achtung, Benutzereingaben! An den Namen der kopierten oder referenzierten Variablen sieht man das nicht mehr so deutlich.

          So long,
           Martin

          --
          "Drogen machen gleichgültig."
           - "Na und? Mir doch egal."
          1. Hello Martin,

            im Hinblick auf die Performance mag das Umkopieren vielleicht sogar einen leichten Vorteil bieten.

            Da bin ich mir nicht mehr so sicher...

            Angenommen, Du erstellst ein größeres verzweigtes "Array" in PHP und du würdest nun ersatzweise alle Elemente daraus als einfache Variablen speichern. Da wüsste ich wirklich nicht, ob eine mehrfache, aber strukturierte Dereferenzierung schneller ist, als eine ewig lange lineare Suche in _einer_ Liste.

            Kann sein, dass es in Wirklichkeit ganz anders funktioniert. Das wäre nun aber interessant.

            Liegen die Variablenbezeichner bereits sortiert vor, oder sind die Listen unsortiert? Oder sind die Listen der Variablenbezeichner sowieso als Baum organisiert? *ups*

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Moin!

              im Hinblick auf die Performance mag das Umkopieren vielleicht sogar einen leichten Vorteil bieten.

              Da bin ich mir nicht mehr so sicher...

              Angenommen, Du erstellst ein größeres verzweigtes "Array" in PHP und du würdest nun ersatzweise alle Elemente daraus als einfache Variablen speichern. Da wüsste ich wirklich nicht, ob eine mehrfache, aber strukturierte Dereferenzierung schneller ist, als eine ewig lange lineare Suche in _einer_ Liste.

              Kann sein, dass es in Wirklichkeit ganz anders funktioniert. Das wäre nun aber interessant.

              Das wäre absolut uninteressant. Man mikrooptimiert nicht, erst recht nicht in einer Skriptsprache, wenn dies einzig zu Lasten der Lesbarkeit des Codes geht.

              Dass du als Anhänger der Mikrooptimierung das anders siehst, überraschte nicht. Vielleicht warten wir ja nur deshalb so lange auf deine angekündigte ausführliche Antwort, weil deine gesamte verfügbare Zeit mit Mikrooptimierung draufgeht?

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
              1. Hello,

                Dass du als Anhänger der Mikrooptimierung das anders siehst, überraschte nicht. Vielleicht warten wir ja nur deshalb so lange auf deine angekündigte ausführliche Antwort, weil deine gesamte verfügbare Zeit mit Mikrooptimierung draufgeht?

                Kann sein. Ähh moment, ich muss erst mal die Register umstapeln und ein paarmal dereferenzieren, damit ich an die Antwort herankomme. Die liegt aber schon als ASCII-Z-String im Speicher bereit. Ich hab sie zur Sicherheit auf dem Heap gepackt ;-)

                Liebe Grüße aus Syburg bei Dortmund

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
        3. Moin!

          und was soll die sinnfreie, nein, sogar kontraproduktive Umkopiererei?
          mal so eine Frage an die Profis: ist das eigentlich in PHP wirklich kontraproduktiv (insbesondere im Hinblick auf Performance)?

          Da liegt schon der Gedankenfehler. Die Umkopiererei ist nicht primär aus Performancegründen kontraproduktiv, sondern weil sie Information verschleiert. In diesem Fall die Information, dass die umkopierten Variablenwerte in Wirklichkeit aus $_POST stammen.

          Diese Info ist lebenswichtig, um zu erkennen, dass man mit benutzerdefinierten Werten operiert, die erstens besonders vorsichtig behandelt werden müssen und zweitens bei jeder Ausgabe kontextgerecht zu entschärfen sind.

          Ich würde unüberlegt mit JA antworten, sofern die Variable einmal oder zweimal angesprochen wird. Aber genau so gibt es z.B. im Bereich Java viele Stimmen die sagen, anstatt mehrfach (insbesondere in Schleifen) auf das selbe Array-Element zuzugreifen möge man eine lokale Variable verwenden.

          Gegen lokale Variablen ist ja nichts einzuwenden - aber das PHP-Beispiel verwendet ja eben gerade KEINE lokalen Variablen, sondern GLOBALE Variablen.

          • Der Aufwand eine weitere Referenz zu erzeugen ist minimal, der Speichermehrbedarf ebenfalls
          • Der Compiler kann die Situation erkennen und bestimmte CPU-Register für die Variable verwenden, in die das Array nicht reinpasst
          • Der Zugriff auf ein Array erfordert, je nach Sprache, die Überprüfung gültiger Array-Grenzen, die für eine Variable nicht erforderlich ist

          Mit Sicherheit wird irgendein Benchmark bei PHP-Skripten nachweisen, dass beständiger, millionenfacher Zugriff auf eine Arrayvariable tendentiell etwas langsamer abläuft, als der Zugriff auf eine "normale" Skalarvariable. Vermutlich wird der Unterschied umso größer, je größer das Array insgesamt ist, insbesondere in Abhängigkeit der existierenden Elemente sowie der Position des abgefragten Elements.

          Aber dieses Ergebnis zum Anlaß zu nehmen, den einmaligen oder nur gering wiederholten Zugriff deshalb lieber auf eine Variablenkopie zu machen, und dadurch alle negativen Konsequenzen in Kauf zu nehmen, ist wirklich absolut sinnlose Mikrooptimierung, die unter dem Strich weder mehr Performance noch fehlerfreie Programme bringt.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Hello,

            Da liegt schon der Gedankenfehler. Die Umkopiererei ist nicht primär aus Performancegründen kontraproduktiv, sondern weil sie Information verschleiert. In diesem Fall die Information, dass die umkopierten Variablenwerte in Wirklichkeit aus $_POST stammen.

            Diese Info ist lebenswichtig, um zu erkennen, dass man mit benutzerdefinierten Werten operiert, die erstens besonders vorsichtig behandelt werden müssen und zweitens bei jeder Ausgabe kontextgerecht zu entschärfen sind.

            Ich sehe einen weitere weseentlichen Vorteil, die Werte in einem gemeinsamen Array zu belassen. Man kann sie (automatisch) gemeinsam behandeln, die Struktur also ablaufen, um die Werte zu untersuchen und mit Vorgaben zu vergleichen.

            Wenn sie alle "lose" im Speicher rumfliegen, ist das sehr viel aufwändiger.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
          2. echo $begrüßung;

            Diese Info ist lebenswichtig, um zu erkennen, dass man mit benutzerdefinierten Werten operiert, die erstens besonders vorsichtig behandelt werden müssen und zweitens bei jeder Ausgabe kontextgerecht zu entschärfen sind.

            Einspruch beim zweiten Teil, euer Ehren. Jegliche Ausgabe ist kontextgerecht zu behandeln, nicht nur die aus Benutzereingaben stammenden Werte. Der Ausgabekontext interessiert sich nicht dafür, ob ein Sonderzeichen aus einer Benutzereingabe stammt oder aus einer sicheren Quelle. Nicht behandelt gibt es in beiden Fällen Unerwünschtes.

            echo "$verabschiedung $name";