Ankündigung

Einklappen
Keine Ankündigung bisher.

Ganz einfaches Script nur wo ist der Fehler?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ganz einfaches Script nur wo ist der Fehler?

    Hallo,

    ich habe vor wenigen Tagen damit begonnen ein bisschen in PHP Büchern zu stöbern und wollte mir nun ein kleines ganz einfaches Script schreiben, dass über eine Formulareingabe (ist nur für Links gedacht) diese Daten in einer .txt abspeichert und dann eben als Links ausgibt.

    Das hat geklappt: Alles bis dahin, inklusive dem schreiben in die .txt Datei

    Das klappt nicht: Ich erhalte als Ausgabe nur, als normalen Text nl2br() und ausserdem bezweifle ich dass ich im Falle einer Ausgabe das ganze formatiert als klickbare Links erhalte.

    Hier das Script (Also der Ausgabe Teil, das Eingabeformular hab ich noch extra, aber das funktioniert ja, da es normales HTML ist)


    PHP-Code:
    <?php
    $rapid
    ="$_POST[link]";
    $datei fopen('links.txt''a');
    fwrite($datei"<a href=\"$rapid\" /> \n \n");
    fclose($datei);
    $datei2 fopen('links.txt''r');
    $ausgabe fread($datei2);
    $endausgabe"nl2br($ausgabe)";
    echo 
    "$endausgabe";
    fclose($datei2);
    ?>
    Bin dankbar für jede Antwort.

    (PS: Hat einer von Euch nen Tipp parat wie man PHP am besten lernt, finde es nämlich weit aus schwerer, als ich so zuvor gehört habe)

    Viele Grüße

    aerow

  • #2
    Hallo aerow90,
    Ich habe den Fehler in deinem Script gefunden aber noch eine Frage:
    Was soll denn das?
    PHP-Code:
    $rapid="$_POST[link]"
    Übersichtlicher und sinnvoller ist es doch so:
    PHP-Code:
    $rapid $_POST[link]; 

    Verbessertes script ist:
    PHP-Code:
    <?php
    $rapid 
    $_POST[link];
    $datei fopen('links.txt''a');
    fwrite($datei"<a href=\"$rapid\" />$rapid</a> \n \n");
    fclose($datei);
    $datei2 fopen('links.txt''r');
    $ausgabe fread($datei2);
    $endausgabe"nl2br($ausgabe)";
    echo 
    "$endausgabe";
    fclose($datei2);
    ?>
    Du hast den Text im <a> Tag vergessen und <a> nicht geschlossen.

    Lg Unbass

    Kommentar


    • #3
      Soar ich hab das Skript mal ins "reine" geschrieben wie es vielleicht etwas übersichtlicher wäre.

      PHP-Code:
      <?php
      $rapid 
      $_POST['link']; // ohne Anführungszeichen, dafür link in ' ' Zeichen
      $file 'links.txt'// Datei in die geschrieben werden soll

      // neuen Link schreiben
      $datei fopen($file'a');
      fwrite($datei'<a href="'.$rapid.'">'.$rapid.'</a><br />');
      fclose($file);

      // Datei auslesen und Links anzeigen
      $ausgabe file_get_contents($file); // file_get_contents() ist wesentlich einfacher zu nutzen als fopen/fread/fclose

      // Links ausgeben
      echo $ausgabe// wenn nur Variablen ausgegeben werden brauchst du ebenfalls keine Anführungszeichen
      ?>
      Das wären so die hauptsächlichen Verbesserungen. Wenn du allerdings schon den Link mit dem <a> Tag drum herum abspeicherst, dann kannst du auch gleich noch ein <br /> hinten einfügen, dann braucht man kein nl2br()!

      Außerdem wäre file_get_contents() praktisch da du dir so das "komplizierte" auslesen sparen kannst! Benötigt allerdings PHP Version > 5. Wobei du, wenn du PHP lernst, auf jeden Fall gleich mit PHP 5 anfangen solltest.

      Kommentar


      • #4
        Hallo,

        tausend dank, super Hilfe, werde das mal so versuchen. Ihr merkt die Syntax ist mir noch nicht so ganz vertraut, muss erst noch lernen ob und wann man welche Anführungszeichen braucht. Kleine Frage aber noch was bedeuten denn die Punkte und gleich die Aufeinanderfolge von " und ' hier

        '<a href="'.$rapid.'">'.$rapid.'</a><br />'

        Besten Dank

        Kommentar


        • #5
          Der Punkt verknüpft Strings/Variablen.
          PHP-Code:
          <?php
          $var 
          'Text';

          echo 
          'Dies ist ein '.$var;
          // ergibt "Dies ist ein Text"
          Und mit ' ' schließt du den Text ein, die " " gehören zu dem href=" " dazu!

          Kommentar


          • #6
            der html syntax wäre ja: <a href="abc">abc</a>
            durch das ' unterbrichst du den string um eine PHP-Variable einzufügen. Diese wird mit einem . an den String angekettet.
            Es geht auch:
            $string='test'; $string.=' test';
            $string wäre dann - testtest
            http://www.dhsmedia.de
            http://www.deutsch-im-blick.de

            Kommentar


            • #7
              Ah, allmählich verstehe ich, vielen Dank.

              Dann nehme ich bei PHP vermehrt diesen ' an Stelle von '' um zb. Variablen einen Wert zuzuweisen bzw. über echo etwas auszugeben, oder?

              Kleine Frage noch der Punkt vor .$rapid. verbindet, aber was macht der Punkt danach?

              Kommentar


              • #8
                genau
                der Punkt danach verbindet auch.
                Der Syntax ist:
                PHP-Code:
                $test='Anfang des String - ende->'.$var.'Anfang 2. String - ende';
                 
                $var='funktioniert';
                $test='es '.$var.' juhu';
                echo(
                $test);   ->es funktioniert juhu
                echo($test.' !!');   ->es funktioniert juhu !! 
                http://www.dhsmedia.de
                http://www.deutsch-im-blick.de

                Kommentar


                • #9
                  Der Punkt danach verbindet $rapid natürlich mit dem String der danach kommt. Gleiche Funktionsweise!

                  Ob du ejtzt ' ' oder " " verwendest ist fast egal. Wenn du " " nutzt kannst du in einem String Variablen nutzen. Bei ' ' nicht! Hier ein Beispiel:

                  PHP-Code:
                  <?php
                  $var 
                  'Test';

                  echo 
                  "Dies ist ein $var"// ergibt "Dies ist ein Test"
                  echo 'Dies ist ein $var'// ergibt "Dies ist ein $var"

                  Kommentar


                  • #10
                    Ihr seid echt klasse hier, vielen Dank

                    Kommentar


                    • #11
                      Kurze Ergänzung: file_get_contents gibt es ab PHP 4.3.0 - das sollte man getrost benutzen können und ggf. seinen Hoster, der Vorkriegsrechner fährt, auf den Topf setzen.
                      [PHP]if ($var != 0) {
                      $var = 0;
                      }[/PHP]

                      Kommentar

                      Lädt...
                      X