Ankündigung

Einklappen
Keine Ankündigung bisher.

Liste

Einklappen

Neue Werbung 2019

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

  • Liste

    Im Anhang ist ein Schema aufgebaut, welches ich gerne in eine Webseite integrieren möchte. Dabei möchte ich die Tabelle so ähnlich auf einer Webseite darstellen. Es sollen noch lediglich Checkboxen hinzugefügt werden. Der User soll durch das Selektieren der Checkboxen gewünschte Zeilen auswählen und anschließend soll durch ein Aktionsbutton alle ausgewählten Einträge in einer neuen Liste zusammengefasst werden (in einer neuen Seite, oder Datei).


    Die Herausforderung ist nun, wie ich die Inhalte auslesen und als Tabelle darstellen kann. Welches Konzept kann ich verwenden um diese Tabelle darzustellen (XML, Datenbanken, etc?).

    Gibt es auch einen fertigen Lösungsansatz oder so?
    Angehängte Dateien

  • #2
    Das darstellen von Daten in einer Tabelle ist auf Verschiedenen Wegen Möglich:
    • Direkte Ausgabe von HTML via PHP
    • Laden via AJAX der Reinen Daten und das rendern der Tabelle via Javascript
    • Direkte Ausgabe der Daten als XML via PHP, die XML transportiert außerdem eine XSLT, die den Client anweist die Daten entsprechend darzustellen.


    Im Grunde ist für Anfänger das simple zusammenkleben des HTML-Quellcodes für die Tabelle ( aber bitte als valides HTML-Dokument ) die einfachste Mach-Art.

    Woher PHP die Daten herholt kann mindestens doppelt soviele Quellen haben. ( aus einer XML, aus einer Datenbank, von einer API, aus einer CSV-Datei, aus einem gemeinsamen (Arbeits)Speicher, aus einem Stream oder PHP generiert diese Daten bei jedem Seitenaufruf selbst vollkommen neu... )
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Danke für deine Hilfestellung, habe so grob verstanden, was ich machen muss, da ich aber noch ein Anfänger bin, habe ich eine XML Datei erstellt.
      Nun ist meine Frage
      [PHPWIKI]<?xml version="1.0"?>
      <!DOCTYPE Eingangsdaten [
      <!ELEMENT Eingangsdaten(EINTRAGA, EINTRAGB, EINTRAGC)>

      <!ELEMENT EINTRAGA (WERTA)>
      <!ELEMENT EINTRAGB (WERTB)>
      <!ELEMENT EINTRAGC (WERTCa, WERTCb)>

      <!ELEMENT WERTA (#PCDATA)>
      <!ELEMENT WERTB (#PCDATA)>
      <!ELEMENT WERTCa (#PCDATA)>
      <!ELEMENT WERTCb (#PCDATA)>
      ]>

      <Eingangsdaten>
      <EINTRAGA><WERTA>WERTA</WERTA></EINTRAGA>
      <EINTRAGB><WERTB>WERTB</WERTB></EINTRAGB>
      <EINTRAGC><WERTCa>WERTCa</WERTCa><WERTCb>WERTCb</WERTCb></EINTRAGC>
      </Eingangsdaten>[/PHPWIKI]


      Habe auch bissl recherchiert und habe nun folgendes gefunden, um alles auszugeben.

      [PHPWIKI]$Kategorien = simplexml_load_file(Eingangsdaten.xml');

      //Alle Kategorien ausgeben
      for($i=0,$size=count($Eingangsdaten);$i<$size;$i++ )

      {
      echo $Eingangsdaten->Eingangsdaten[$i]->EINTRAGA , '<br />';
      echo $Eingangsdaten->Eingangsdaten[$i]->EINTRAGB , '<br />';
      echo $Eingangsdaten->Eingangsdaten[$i]->EINTRAGC , '<br />';;

      }[/PHPWIKI]

      und nu, wie packe ich es in eine Tabelle, und wie erstelle ich automatisiert die Checkboxen zu den Einträgen?

      Kommentar


      • #4
        Sorry, aber: http://www.php.de/php-einsteiger/489...nsammlung.html

        Du fragst jetzt wirklich nach dem Urschlamm. (Übrigens im Unterforum „Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene“, aber geschenkt. )

        Das können und wollen wir nicht immer neu erklären. Die verlinkten Ressourcen machen das ohnehin besser.

        Kommentar


        • #5
          Du solltest außerdem mit simplen HTML-generieren anfangen. XML zu basteln ist zwar quasi das selbe. XSLT allerdings nicht und schon eher "Fortgeschrittener".
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            ich würd mich freuen, wenn ich wirklich auch nur eine Zeile als Beispiel sehen könnte. Es ist schön das ihr die Alternativen aufgelistet habt.. Nur ein kleines Beispiel würde mich weiter bringen. Als Asugangspunkt habe ich das obige Bild. Wie soll ich weiter machen ?

            Kommentar


            • #7
              PHP-Code:
              <?php

              function f(SimpleXMLElement $doc)
              {
                  
              $escape = function ($s) {
                      return 
              htmlspecialchars($sENT_QUOTES'UTF-8');
                  };

                  
              $ret '';

                  
              $ret .= '<form method="post" action="/foo/bar">' "\n";
                  
              $ret .= '  <ul>' "\n";
                  foreach (
              $doc as $eintrag) {
                      
              $ret .= '    <li>' "\n";
                      
              $ret .= '      <input type="checkbox" name="entries[]" value="' $escape($eintrag->getName()) . '">' "\n";
                      
              $ret .= '      <strong>' $escape($eintrag->getName()) . '</strong>' "\n";

                      foreach (
              $eintrag->children() as $wert) {
                          
              $ret .= '      ' $wert "\n";
                      }

                      
              $ret .= '    </li>' "\n";
                  }
                  
              $ret .= '  </ul>' "\n";
                  
              $ret .= '</form>' "\n";

                  return 
              $ret;
              }

              $xmlData = <<<EOT
              <?xml version="1.0"?>
              <!DOCTYPE Eingangsdaten [
                  <!ELEMENT Eingangsdaten (EINTRAGA, EINTRAGB, EINTRAGC)>

                  <!ELEMENT EINTRAGA (WERTA)>
                  <!ELEMENT EINTRAGB (WERTB)>
                  <!ELEMENT EINTRAGC (WERTCa, WERTCb)>

                  <!ELEMENT WERTA (#PCDATA)>
                  <!ELEMENT WERTB (#PCDATA)>
                  <!ELEMENT WERTCa (#PCDATA)>
                  <!ELEMENT WERTCb (#PCDATA)>
              ]>
              <Eingangsdaten>
                  <EINTRAGA>
                      <WERTA>WERT A</WERTA>
                  </EINTRAGA>
                  <EINTRAGB>
                      <WERTB>WERT B</WERTB>
                  </EINTRAGB>
                  <EINTRAGC>
                      <WERTCa>WERT Ca</WERTCa>
                      <WERTCb>WERT Cb</WERTCb>
                  </EINTRAGC>
              </Eingangsdaten>
              EOT;

              echo 
              f(new SimpleXMLElement($xmlData));
              Liefert:

              Code:
              <form method="post" action="/foo/bar">
                <ul>
                  <li>
                    <input type="checkbox" name="entries[]" value="EINTRAGA">
                    <strong>EINTRAGA</strong>
                    WERT A
                  </li>
                  <li>
                    <input type="checkbox" name="entries[]" value="EINTRAGB">
                    <strong>EINTRAGB</strong>
                    WERT B
                  </li>
                  <li>
                    <input type="checkbox" name="entries[]" value="EINTRAGC">
                    <strong>EINTRAGC</strong>
                    WERT Ca
                    WERT Cb
                  </li>
                </ul>
              </form>

              Kommentar


              • #8
                auch spannend:

                PHP-Code:
                $data = require 'data.php';

                $impl = new DOMImplementation();
                $document $impl->createDocument(null'html'$impl->createDocumentType('html'''''));
                $document->formatOutput true;

                $doctype $impl->createDocument(nullnull$impl->createDocumentType('html'''''));
                $doctypeRendered trim($doctype->saveHTML(), PHP_EOL).PHP_EOL;

                $head $document->createElement('head');
                $body $document->createElement('body');

                $head->appendChild($document->createElement('title','foobar'));

                $css = <<<'css'

                form ul {
                    list-style: none;
                    margin:0;
                    padding:0;
                    
                    width:300px;
                    display:inline-block;
                    border-right:1px solid #eee;
                }

                form ul li {
                    margin:0;
                    padding:0;
                    
                    width:100px;
                    display:inline-block;
                    line-height:18px;
                }

                form button {
                    display:inline-block;
                }

                css;

                $head->appendChild($document->createElement('style'$css));

                $form $document->createElement('form');
                $form->setAttribute('method''POST');
                $form->setAttribute('action''');

                $list $document->createElement('ul');

                foreach ( 
                $data as $current ) {
                    
                $cLi $document->createElement('li');

                    
                $radio $document->createElement('input');
                    
                $radio->setAttribute('type','radio');
                    
                $radio->setAttribute('name''selected');
                    
                $radio->setAttribute('value'$current);
                    
                $radio->setAttribute('id'$current);

                    
                $label $document->createelement('label');
                    
                $label->setAttribute('for'$current);

                    
                $label->appendChild(new DOMText($current));
                    
                $cLi->appendChild($radio);
                    
                $cLi->appendChild($label);

                    
                $list->appendChild($cLi);
                }

                $form->appendChild($list);

                $sender $document->createElement('button');
                $sender->setAttribute('type''submit');
                $sender->appendChild(new DOMText('senden...'));

                $form->appendChild($sender);

                $body->appendChild($form);

                $document->documentElement->appendChild($head);
                $document->documentElement->appendChild($body);

                $htmlRendered $document->saveHTML();

                if ( 
                extension_loaded('tidy') ) {
                    
                $config = array(
                        
                'indent' => true,            # well
                        
                'indent-spaces' => 4,        # indented
                        
                'doctype' => 'omit',        # source
                        
                'output-html' => true,        # code
                        
                'wrap' => 120,                 # !
                    
                );

                    echo 
                $doctypeRendered.tidy_repair_string($htmlRendered$config);
                }
                else {
                    echo 
                $htmlRendered;

                data.php
                PHP-Code:
                <?php return array(

                    
                'foo',
                    
                'bar',
                    
                'baz',
                    
                'boing',
                    
                'bam',
                    
                'bash',

                );
                Resultiert in:
                HTML-Code:
                <!DOCTYPE html>
                <html>
                    <head>
                        <title>
                            foobar
                        </title>
                <style type="text/css">
                form ul {
                    list-style: none;
                    margin:0;
                    padding:0;
                    
                    width:300px;
                    display:inline-block;
                    border-right:1px solid #eee;
                }
                
                form ul li {
                    margin:0;
                    padding:0;
                    
                    width:100px;
                    display:inline-block;
                    line-height:18px;
                }
                
                form button {
                    display:inline-block;
                }
                </style>
                    </head>
                    <body>
                        <form method="post" action="">
                            <ul>
                                <li>
                                    <input type="radio" name="selected" value="foo" id="foo"><label for="foo">foo</label>
                                </li>
                                <li>
                                    <input type="radio" name="selected" value="bar" id="bar"><label for="bar">bar</label>
                                </li>
                                <li>
                                    <input type="radio" name="selected" value="baz" id="baz"><label for="baz">baz</label>
                                </li>
                                <li>
                                    <input type="radio" name="selected" value="boing" id="boing"><label for="boing">boing</label>
                                </li>
                                <li>
                                    <input type="radio" name="selected" value="bam" id="bam"><label for="bam">bam</label>
                                </li>
                                <li>
                                    <input type="radio" name="selected" value="bash" id="bash"><label for="bash">bash</label>
                                </li>
                            </ul><button type="submit">senden...</button>
                        </form>
                    </body>
                </html>
                [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                Kommentar


                • #9
                  Mann, Mann, Mann. Schon wieder so ein Ding. So etwas
                  PHP-Code:
                  $escape = function ($s) {
                          return 
                  htmlspecialchars($sENT_QUOTES'UTF-8');
                      }; 
                  kenne ich aus Javascript. Und nach jahrelangem Programmieren stellt man fest, dass das in PHP auch geht.

                  Na ja. Danke an mermshaus, dass Du das mal so nebenbei dargestellt hast.
                  [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                  Kommentar


                  • #10
                    Zitat von drsoong Beitrag anzeigen
                    Mann, Mann, Mann. Schon wieder so ein Ding. So etwas
                    PHP-Code:
                    $escape = function ($s) {
                            return 
                    htmlspecialchars($sENT_QUOTES'UTF-8');
                        }; 
                    kenne ich aus Javascript. Und nach jahrelangem Programmieren stellt man fest, dass das in PHP auch geht.

                    Na ja. Danke an mermshaus, dass Du das mal so nebenbei dargestellt hast.
                    Lambda's werden von mir aber öfter verwendet, wundert mich das dir das jetzt erst ins Gesicht springt.
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Zitat von drsoong Beitrag anzeigen
                      Mann, Mann, Mann. Schon wieder so ein Ding. So etwas
                      PHP-Code:
                      $escape = function ($s) {
                              return 
                      htmlspecialchars($sENT_QUOTES'UTF-8');
                          }; 
                      kenne ich aus Javascript. Und nach jahrelangem Programmieren stellt man fest, dass das in PHP auch geht.

                      Na ja. Danke an mermshaus, dass Du das mal so nebenbei dargestellt hast.
                      Ist aber auch erst "relativ" neu seit PHP5.3
                      Crashkurs zum Thema Rechtschreibung: [COLOR="Green"]normalerweise[/COLOR] ([COLOR="Red"]normaler weise[/COLOR] oder [COLOR="Red"]normaler weiße[/COLOR]), [COLOR="DarkGreen"]Standard[/COLOR] ([COLOR="Red"]Standart[/COLOR]), [COLOR="DarkGreen"]eben[/COLOR] ([COLOR="Red"]ebend[/COLOR])

                      Kommentar

                      Lädt...
                      X