Ankündigung

Einklappen
Keine Ankündigung bisher.

Projekt - Forum

Einklappen

Neue Werbung 2019

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

  • Projekt - Forum

    Hallo liebe Community

    Ich habe mir gerade ein Projekt vorgenommen und das lautet Forum.

    Bin gerade an einen Punkt angekommen, den ich nicht zu lösen weiß und zwar geht es ums das erstellen neuen Themen bzw. dem auslesen.

    Ich habe das so gelöst, das wenn der User ein neues Thema eröffnet, die Betreffzeile dann als Link in der Tabelle darunter gespeichert wird.

    Die Tabelle lass ich mittels der while-schleife auslesen, daß funktioniert auch wunderbar, der user erstellt ein Thema und das wird mit den entsprechenden Beidaten wie z.B. Erstellungszeit , das wievielte Thema usw eingetragem.

    Nun bin ich hingegangen und habe nach der Usereingabe für das von ihm neu gewünschte Thema wie bereits erwähnt in eine while-schleife geschickt und darin dann als Link verpackt und in die Tabelle ausgeben lassen, klappt.

    Nun kommt der Teil an dem ich hänge.

    In der while-schleife, habe ich dem Link dann einen Dateipfad mit gegeben, wohin ich dann geleitet werde, wenn ich eben auf diesen "Betreff - Link" klicke.
    Dort will ich nun die Ausgabe / n des jeweiligen Betreffs / Thread´s.

    Ich komme da nicht auf die Lösung.
    Jeder Eintrag hat eine ID .. aber ich komme nicht drauf, wie ich in der while-schleife, jedem Link die ID mit zu gebe, oder ist das der falsche Ansatz ?

    Es reicht ja, für diesen Themenbereich nur eine Datei anzulegen und wenn der User dann auf den entsprechenden Link klickt, ist ja sozusagen nur die Plattform vorhanden, in dem er Einträge posten kann usw oder muss ich für jedes erstellte Thema eine neue Datei anlegen lassen ?

    Wie gesagt, was mir wichtig ist, ist zu wissen wie ich es realisieren kann, das der User nach dem klicken auf den jeweiligen Link, auch nur die daten aus dieser Tabelenspalte " in dem Fall " sieht.


    Ich hoffe, daß ich es einigermaßen verständlich erklären konnte was ich erreichen möchte.
    hier noch paar schnipsel dazu, vll kann man damit dann schon besser etwas anfangen;

    PHP-Code:
    <?php

    # Formular zum eintragen des neuen Thema´s

                    
    if (htmlspecialchars($_POST['thema_neu']))
                    {
                        
    ?>
                            <div id="neues_thema_erstellen">
                                <form action="" method="post">
                                    Betreff: <br />
                                    <input type="text" name="betreff" maxlength="100" placeholder="Bitte ausfüllen !" > <br /> <br />
                                
                                    <textarea cols="50" rows="10px" name="eintrag"></textarea> <br />
                                    <input type="submit" name="neues_thema_senden" value="senden"/> 
                                </form>
                            </div>
                        <?php
                    
    }
                
    ?>
                    
                <div id="link_style">    
                <br />


    <! --- Hier die Tabelle in der die jeweiligen Eingaben über die while-schleife ausgegeben und in einen Link verpackt werden --->


                    <table style="margin-left: 115px; width: 725px;  text-align: center; font-size: 15px;">
                            <tr>
                                <td style="width: 50px;">
                                    Eintrag
                                </td>
                                <td style="width: 100px;">
                                    Ersteller
                                </td>
                                <td style="width: 300px;">
                                    Betreff
                                </td>
                                <td style="width: 200px;">
                                    Datum / Uhrzeit
                                </td>
                                <td style="width: 75px;">
                                    Gesehen
                                </td>
                            </tr>
                            
                                <?php
                                    
    while ($row $result->fetch_object())
                                    {
                                                
                                        echo 
    '<tr>
                                                <td>' 
    htmlspecialchars($row->id) .'                             </td>
                                                <td> <a href="">' 
    htmlspecialchars($row->ersteller) .'  </a> </td>

    <!---  Wenn ich hier dann auf den Link klicke, soll eben nur die Ausgabe vom jeweiligen Thema ausgelesen werden -->

                                                <td> <a href="http://www.php.de/thema_1_startseite/thema_1_user.php">'
    htmlspecialchars($row->betreff) .'      </a> </td> 
                                                <td>'
    htmlspecialchars($row->datum_uhrzeit) .'                   </td>
                                                <td>'
    htmlspecialchars($row->gesehen) .'                         </td>
                                              </tr>'
    ;
                                    }
                                
    ?>
                            
                        </table>
                    </div>

    PHP-Code:
    <?php

    # Hier die Logik dazu


    $eintrag_sub = isset($_POST['neues_thema_senden']);
    $thema_1_betreff = isset($_POST['betreff']) ? trim($_POST['betreff']) : false;
    $thema_1_eintrag = isset($_POST['eintrag']) ? trim($_POST['eintrag']) : false;

    $thema_1_tabelle_eintrag = <<<SQL
    INSERT INTO
        `tabelle_thema_1`
            (`ersteller` , `betreff` , `eintrag` , `datum_uhrzeit`)
    VALUES
        (? , ? , ? , NOW())
    SQL;

    $ausgabe_thema_1_tabelle = <<<SQL
    SELECT
        `id` , `ersteller` , `betreff` , `eintrag` , `datum_uhrzeit`
    FROM
        `tabelle_thema_1`
    ORDER BY
        `datum_uhrzeit`
    DESC
    SQL;

    $stmt $db_connect->prepare($ausgabe_thema_1_tabelle);
    $stmt->execute();
    $stmt->bind_result($eintrag_id $ersteller $betreff $eintrag $datum_uhrzeit);
    $stmt->fetch();
    $stmt->close();

    $result $db_connect->query($ausgabe_thema_1_tabelle);


    if (
    $eintrag_sub || $thema_1_betreff || $thema_1_eintrag)
    {
        if (
    strlen($thema_1_betreff) <= 100)
        {
            if(empty(
    $thema_1_betreff) | empty($thema_1_eintrag))
            {
                echo 
    "Bitte alle Felder ausf&uumlllen !";        
            }
            else
            {
                
    $stmt $db_connect->prepare($thema_1_tabelle_eintrag);
                
    $stmt->bind_param('sss' $user $thema_1_betreff $thema_1_eintrag);
                
    $stmt->execute();
                
    $stmt->close();    
            }    
        }
        
    }

    $db_connect->close();

    ?>

  • #2
    dein post hat im markup dieses forum die id="post817679". meiner direkt eine zahl höher und wird so verlinkt:
    http://www.php.de/php-einsteiger/111...tml#post817680.
    verstanden wo dein problem liegt hab icgh leider nicht, ein aufs wesentlicher gekürzter code mit datzugehäöriger html ausgabe würde mir helfen.

    Kommentar


    • #3
      versteanden wo dein problem liegt hab icgh leider nicht, ein aufs wesentlicher gekürzter code mit datzugehäöriger html ausgabe würde mir helfen
      @moma: Kopf auf die Tastatur gelegt?

      Ich habe mir gerade ein Projekt vorgenommen und das lautet Forum.
      Verdammt großes Projekt...

      PHP-Code:
      <br /> 
      unschön. Du solltest mit ordentlichem CSS arbeiten.

      PHP-Code:
                      <table style="margin-left: 115px; width: 725px;  text-align: center; font-size: 15px;">
                              <
      tr>
                                  <
      td style="width: 50px;">
                                      
      Eintrag
                                  
      </td>
                                  <
      td style="width: 100px;">
                                      
      Ersteller
                                  
      </td>
                                  <
      td style="width: 300px;">
                                      
      Betreff
                                  
      </td>
                                  <
      td style="width: 200px;">
                                      
      Datum Uhrzeit
                                  
      </td>
                                  <
      td style="width: 75px;">
                                      
      Gesehen
                                  
      </td>
                              </
      tr
      siehe oben -> CSS ist das Stichwort (Bsp. Klassenzuweisung und nicht jedes Element separat).

      Jeder Eintrag hat eine ID .. aber ich komme nicht drauf, wie ich in der while-schleife, jedem Link die ID mit zu gebe, oder ist das der falsche Ansatz ?
      Du könntest einen Link mit Parameter generieren und den dann abprüfen. Natürlich musst du auf SQL Injection und ähnlichem prüfen. Alternativ auch mit AJAX (JQuery) einfach einblenden.

      PHP-Code:
      echo "Bitte alle Felder ausf&uumlllen !"
      Bitte richtige Kodierung und nicht mit Html an den Umlauten rumfummeln!

      PHP-Code:
      if ($eintrag_sub || $thema_1_betreff || $thema_1_eintrag)
      {
          if (
      strlen($thema_1_betreff) <= 100)
          {
              if(empty(
      $thema_1_betreff) | empty($thema_1_eintrag)) 
      Ist ja auch nicht wirklich ne super Prüfung ehrlich gesagt. Ne Fehlermeldung bei mehr als 100 Zeichen wäre auch gut!

      usw. usw.

      Du solltest Dir mal OOP mit PHP anschauen!

      mfg wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Es reicht ja, für diesen Themenbereich nur eine Datei anzulegen und wenn der User dann auf den entsprechenden Link klickt, ist ja sozusagen nur die Plattform vorhanden, in dem er Einträge posten kann usw oder muss ich für jedes erstellte Thema eine neue Datei anlegen lassen ?
        Du solltest eigentlich dynamisch überhaupt keine derartigen Dateien anlegen, sondern das Projekt per Rewriting oder URL-Parameter alles über mehr oder weniger eine einzige PHP-Datei laufen lassen (index.php, Front-Controller), die dann – je nach nachgefragtem Inhalt (zu ermitteln aus dem URL) – weiteren Code inkludiert/nachlädt und ausführt.

        Das Prinzip kann man mit Silex glaube ich recht schnell verinnerlichen.

        - http://silex.sensiolabs.org/

        PHP-Code:
        $app->get('/hello/{name}', function($name) use($app) { 
            return 
        'Hello '.$app->escape($name); 
        }); 
        Heißt so viel wie: Alle URLs, die dem Schema '/hello/<irgendwas>' entsprechen, werden von dem Schnipsel „beantwortet“.

        Stichwort dazu ist auch Routing.

        Kommentar


        • #5
          erstmal danke für die antworten

          .. mit dieser routing, weiß ich leider nicht wie ich das umsetzen kann :/

          gibts da keine einfache lösung, daß ich jedem link in der while-schleife eine id gebe und mittels der id dann den jeweiligen inhalt ausgeben lassen kann ?

          Kommentar


          • #6
            daß ich jedem link in der while-schleife eine id gebe und mittels der id dann den jeweiligen inhalt ausgeben lassen kann ?
            Auf diesem Niveau kommst Du nicht weit mit Deinem System. Mach Dich halt mit gängigen Pattern und deren Sinn vertraut.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar

            Lädt...
            X