Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortierung meiner Daten

Einklappen

Neue Werbung 2019

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

  • Sortierung meiner Daten

    Hi. Habe Probleme, meine Scripte ein zu fügen. Ich Teste mal...

  • #2
    Siehe Hilfe unter https://www.php.de/help#content_over...ntent_advanced

    Kommentar


    • #3
      Ich hatte eben Probleme meine Scripte hoch zu laden. Also werde ich nochmal beginnen und die Sachen als Textfile einfügen.

      Hallo. Ich bin im PHP-Sektor vor einigen Wochen eingestiegen und habe mir mit Hilfe von diversen PHP-Seiten und vielen Stolpersteinen meine erste Datenbank erstellt. Nun fehlt mir das Wissen, um diese zu erweitern. Zur Information. Ich erstellte eine Datenbank zum Verwalten von Büchern. Mittels Admin-Login-Rechten kann ich von der PHP-Seite dann auch Werte ändern oder auch löschen. Das funktioniert auch bestens. Da aber mittlerweile schon 800 Datensätze vorhanden sind, fehlt mir für die Übersichtlichkeit eine Sortierfunktion. Sortiert werden soll von A-Z. Die Daten ID, Titel, Autor, Sparte, Inhaltsangabe und Bemerkungen sind vorhanden. Nur wird leider immer nach ID sortiert. Wünschenswert wäre eine Sortierreihenfolge nach meinen Wünschen. Also per Klick auf einer meiner Daten zum Beispiel "Titel" oder "Autor" oder "Sparte".
      Folgende Scripte sind vorhanden.

      PHP-Code:
      <table>
      <thead>
      <tr>
      <th style="width: 147px">Nutzeraktion</th>
      <th style="width: 18px">ID</th>
      <th>Titel</th>
      <th>Autor</th>
      <th>Sparte</th>
      <th>Inhaltsangabe</th>
      <th>Bemerkungen</th>
      </tr>
      </thead>
      <tbody>


      und




      if (isset($_GET['aktion']) and $_GET['aktion'] == 'anzeigen') {
      if ( isset($_GET['id'])) {
      $id_einlesen = (INT) $_GET['id'];

      if ($id_einlesen > 0) {
      echo "<h1>Daten anzeigen von $id_einlesen</h1>";
      $dseinlesen = $db->prepare("SELECT id, titel, autor, sparte, inhaltsangabe, bemerkungen
      FROM datenfiles WHERE id = ? ");
      $dseinlesen->bind_param('i', $id_einlesen);
      $dseinlesen->execute();
      $dseinlesen->bind_result($id, $titel, $autor, $sparte, $inhaltsangabe, $bemerkungen);
      $dseinlesen->fetch();
      echo "<p>ID: <b> $id </b>$<br>";
      echo "Titel: <b> $titel </b><br>";
      echo "Autor: <b> $autor </b><br>";
      echo "Sparte: <b> $sparte </b><br>";
      echo "Inhaltsangabe: <b> $inhaltsangabe </b></p>";
      echo "Bemerkungen: <b> $bemerkungen </b></p>";

      echo '<p><a href="internal.php">Tabelle anzeigen</a>';
      $dseinlesen->close();
      include_once('inc/bereich-fuss.inc.php');
      exit;
      }
      }
      }


      Ich hoffe, das sind die 2 Sachen, die dafür benötigt werden. Falls sich jemand durchkämpfen möchte, bzw. ich etwas übersehen habe, poste ich hier die komplette Seite.

      <?php
      session_start
      ();
      ?>
      <head>
      <style type="text/css">
      .auto-style1 {
      font-size: small;
      }
      </style>
      </head>

      <?php
      session_start
      ();
      require_once(
      "inc/config.inc.php");
      require_once( 
      "inc/db.php");
      require_once(
      "inc/functions.inc.php");
      $user check_user();
      include(
      "templates/header1.inc.php");

      $ds_pro_seite 10;

      if (isset(
      $_POST['aktion']) and $_POST['aktion']=='speichern' ) {

      $titel "";
      if (isset(
      $_POST['titel'])) {
      $titel trim($_POST['titel']);
      }

      $autor "";
      if (isset(
      $_POST['autor'])) {
      $autor trim($_POST['autor']);
      }

      $sparte "";
      if (isset(
      $_POST['sparte'])) {
      $sparte trim($_POST['sparte']);
      }

      $inhaltsangabe "";
      if (isset(
      $_POST['inhaltsangabe'])) {
      $inhaltsangabe trim($_POST['inhaltsangabe']);
      }

      $bemerkungen "";
      if (isset(
      $_POST['bemerkungen'])) {
      $bemerkungen trim($_POST['bemerkungen']);
      }

      if ( 
      $titel != '' or $autor != '' or $sparte != '' or $inhaltsangabe != '' or $bemerkungen != '' )
      {

      $einfuegen $db->prepare("INSERT INTO datenfiles
      (titel, autor, sparte, inhaltsangabe, bemerkungen)
      VALUES (?, ?, ?, ?, ?)"
      );
      $einfuegen->bind_param('sssss'$titel$autor$sparte$inhaltsangabe$bemerkungen);
      if (
      $einfuegen->execute()) {
      header('Location: internal.php?aktion=feedbackgespeichert');
      die();
      }

      echo 
      "<p>Daten werden gespeichert</p>";
      }
      }

      include_once(
      'inc/bereich-kopf.inc.php');

      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'allesanzeigen') {
      unset(
      $_SESSION['suchbegriff']);
      $_SESSION['seite_nr_normal'] = 0;
      }

      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'sicherheitsabfrage') {
      if ( isset(
      $_GET['id'])) {
      $id_einlesen = (INT) $_GET['id'];
      echo 
      '<h1>Sicherheitsabfrage Loeschen</h1>';
      echo 
      '<p>Soll der folgende Datensatz unwiderruflich geloescht werden?</p>';
      echo 
      '<p><a href="?aktion=loeschen&id='$id_einlesen.'">permanently delete!!</a></p>';
      $_GET['aktion'] = 'anzeigen';
      }
      }
      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'anzeigen') {
      if ( isset(
      $_GET['id'])) {
      $id_einlesen = (INT) $_GET['id'];

      if (
      $id_einlesen 0) {
      echo 
      "<h1>Daten anzeigen von $id_einlesen</h1>";
      $dseinlesen $db->prepare("SELECT id, titel, autor, sparte, inhaltsangabe, bemerkungen
      FROM datenfiles WHERE id = ? "
      );
      $dseinlesen->bind_param('i'$id_einlesen);
      $dseinlesen->execute();
      $dseinlesen->bind_result($id$titel$autor$sparte$inhaltsangabe$bemerkungen);
      $dseinlesen->fetch();
      echo 
      "<p>ID: <b> $id </b>$<br>";
      echo 
      "Titel: <b> $titel </b><br>";
      echo 
      "Autor: <b> $autor </b><br>";
      echo 
      "Sparte: <b> $sparte </b><br>";
      echo 
      "Inhaltsangabe: <b> $inhaltsangabe </b></p>";
      echo 
      "Bemerkungen: <b> $bemerkungen </b></p>";

      echo 
      '<p><a href="internal.php">Tabelle anzeigen</a>';
      $dseinlesen->close();
      include_once(
      'inc/bereich-fuss.inc.php');
      exit;
      }
      }
      }
      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'loeschen') {
      // loeschen von Datensatz
      if (isset($_GET['id'])) {
      $id = (INT) $_GET['id'];
      if ( 
      $id 0)
      {
      $loeschen $db->prepare("DELETE FROM datenfiles WHERE id=? LIMIT 1");
      $loeschen->bind_param('i'$id);
      if (
      $loeschen->execute()) {
      echo 
      "<p>Datensatz $id wurde gelöscht</p>";
      }
      }
      }
      }

      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'feedbackgespeichert') {
      echo 
      '<p class="feedbackerfolgreich">Datensatz wurde gespeichert</p>';
      }

      $modus_aendern false;
      if (isset(
      $_GET['aktion']) and $_GET['aktion'] == 'bearbeiten') {
      $modus_aendern true;
      }

      if (isset(
      $_POST['aktion']) and $_POST['aktion'] == 'korrigieren') {
      $id "";
      if ( isset (
      $_POST['id'])) {
      $id = (INT) trim($_POST['id']);
      }

      $titel "";
      if (isset(
      $_POST['titel'])) {
      $titel trim($_POST['titel']);
      }

      $autor "";
      if (isset(
      $_POST['autor'])) {
      $autor trim($_POST['autor']);
      }

      $sparte "";
      if (isset(
      $_POST['sparte'])) {
      $sparte trim($_POST['sparte']);
      }

      $inhaltsangabe "";
      if (isset(
      $_POST['inhaltsangabe'])) {
      $inhaltsangabe trim($_POST['inhaltsangabe']);
      }

      $bemerkungen "";
      if (isset(
      $_POST['bemerkungen'])) {
      $bemerkungen trim($_POST['bemerkungen']);
      }

      if ( 
      $id != '' AND ( $titel != '' or $autor != '' or $sparte != '' or $inhaltsangabe != '' or $bemerkungen != '')) {
      $update $db->prepare("UPDATE datenfiles SET
      titel = ?, autor = ?, sparte = ?, inhaltsangabe = ?, bemerkungen = ?
      WHERE id = ? LIMIT 1"
      );
      $update->bind_param("sssssi"$titel$autor$sparte$inhaltsangabe$bemerkungen$id);
      if ( 
      $update->execute() ) {
      echo 
      '<p class="feedbackerfolg">Datensatz wurde geaendert</p>';
      $modus_aendern false;
      }
      }
      }

      ?>

      <form action="" method="get">
      suchen nach:
      <input type="hidden" name="aktion" value="suchen">
      <input type="text" name="suchbegriff" id="suchbegriff">
      <input type="submit" value="suchen">
      </form>


      <?php
      if ( $modus_aendern == false ) {
      $daten = array();

      if ( isset(
      $_GET['suchbegriff']) ) {
      $_SESSION['seite_nr_suche'] = 0;
      }

      if ( ! isset(
      $_GET['suchbegriff']) and isset($_SESSION['suchbegriff']) )
      {
      $_GET['suchbegriff'] = $_SESSION['suchbegriff'];
      }

      if ( isset(
      $_GET['suchbegriff']) and trim ($_GET['suchbegriff']) != '' )
      {
      $_SESSION['suchbegriff'] = $_GET['suchbegriff'];
      $suchbegriff trim ($_GET['suchbegriff']);
      echo 
      "<p>Gesucht wird nach: <b>$suchbegriff</b>";
      echo 
      ' - wieder <a href="?aktion=allesanzeigen">alle Daten anzeigen</a>';
      echo 
      "</p>";
      $suche_nach "%{$suchbegriff}%";
      $suche $db->prepare("SELECT id, titel, autor, sparte, inhaltsangabe, bemerkungen
      FROM datenfiles WHERE autor LIKE ? OR titel LIKE ? OR sparte LIKE ? OR inhaltsangabe LIKE ? OR bemerkungen LIKE ?"
      );
      $suche->bind_param('sssss'$suche_nach,$suche_nach,$suche_nach,$suche_nach,$s uche_nach);
      $suche->execute();


      $suche->store_result();
      echo 
      "<p>Treffer: "$suche->num_rows ."</p>";
      $ds_gesamt $suche->num_rows;


      if ( isset(
      $_GET['seite']) ) {
      $seite $_GET['seite'];
      $_SESSION['seite_nr_suche'] = $_GET['seite'];
      }
      else
      {
      if ( ! isset(
      $_SESSION['seite_nr_suche'])) {
      $_SESSION['seite_nr_suche'] = 0;
      $seite 0;
      }
      else
      {
      $seite $_SESSION['seite_nr_suche'];
      }
      }

      $suche $db->prepare("SELECT id, titel, autor, sparte, inhaltsangabe, bemerkungen
      FROM datenfiles WHERE autor LIKE ? OR titel LIKE ? OR sparte LIKE ? OR inhaltsangabe LIKE ? OR bemerkungen LIKE ?
      LIMIT 
      $seite$ds_pro_seite
      "
      );
      $suche->bind_param('sssss'$suche_nach,$suche_nach,$suche_nach,$suche_nach,$s uche_nach);
      $suche->execute();

      $suche->bind_result($id$titel$autor$sparte$inhaltsangabe$bemerkungen);
      while (
      $suche->fetch()) {
      $daten[] = (object) array('id' => $id,
      'titel' => $titel,
      'autor' => $autor,
      'sparte' => $sparte,
      'inhaltsangabe' => $inhaltsangabe,
      'bemerkungen' => $bemerkungen);
      }
      $suche->close();
      $id '';
      $titel '';
      $autor '';
      $sparte '';
      $inhaltsangabe '';
      $bemerkungen '';
      }
      else
      {
      if (
      $erg $db->query("SELECT * FROM datenfiles")) {
      if (
      $erg->num_rows) {

      $ds_gesamt $erg->num_rows;
      $erg->free();

      if ( isset(
      $_GET['seite']) ) {
      $seite $_GET['seite'];
      $_SESSION['seite_nr_normal'] = $_GET['seite'];
      }
      else
      {
      if ( ! isset(
      $_SESSION['seite_nr_normal']) )
      {
      $_SESSION['seite_nr_normal'] = 0;
      $seite 0;
      }
      else
      {
      $seite $_SESSION['seite_nr_normal'];
      }
      }

      if (
      $erg $db->query("SELECT * FROM datenfiles LIMIT $seite$ds_pro_seite ")) {
      while (
      $datensatz $erg->fetch_object()) {
      $daten[] = $datensatz;
      }


      }
      $erg->free();
      }
      }
      }

      if ( ! 
      count($daten) ) {
      echo 
      "<p>Es liegen keine Daten vor </p>";
      } else {
      ?>

      <table>
      <thead>
      <tr>
      <th style="width: 147px">Nutzeraktion</th>
      <th style="width: 18px">ID</th>
      <th>Titel</th>
      <th>Autor</th>
      <th>Sparte</th>
      <th>Inhaltsangabe</th>
      <th>Bemerkungen</th>
      </tr>
      </thead>
      <tbody>

      <?php
      foreach ($daten as $inhalt) {
      ?>
      <tr>
      <td style="width: 147px">
      <a href="?aktion=anzeigen&id=<?php echo $inhalt->id?>">show</a>

      <?php
      if ( isset($_SESSION['einloggen']['rechte']) and ($_SESSION['einloggen']['rechte'] == 'alles' OR $_SESSION['einloggen']['rechte'] == 'datenpflege') )
      {
      ?>
      <a href="?aktion=bearbeiten&id=<?php echo $inhalt->id?>">
      change</a>
      <?php
      }

      if ( isset(
      $_SESSION['einloggen']['rechte']) and $_SESSION['einloggen']['rechte'] == 'alles' )
      {
      ?>
      <a href="?aktion=sicherheitsabfrage&id=<?php echo $inhalt->id?>">
      clear</a>
      <?php
      }
      ?>
      </td>
      <td style="width: 18px"><?php echo $inhalt->id?></td>
      <td><?php echo bereinigen($inhalt->titel); ?></td>
      <td><?php echo bereinigen($inhalt->autor); ?></td>
      <td><?php echo bereinigen($inhalt->sparte); ?></td>
      <td><?php echo bereinigen($inhalt->inhaltsangabe); ?></td>
      <td><?php echo bereinigen($inhalt->bemerkungen); ?></td>

      </tr>
      <?php
      }
      ?>
      </tbody>

      </table>

      <?php
      echo "<p>Seite: ";
      $durchgang 1;
      for (
      $i 0$i $ds_gesamt$i=$i+$ds_pro_seite) {
      if ( 
      $i == $seite )
      {
      echo 
      '<span class="seite_aktuell">'$durchgang .'</span> ';
      }
      else
      {
      echo 
      '<a class="seite_nr" href="?seite='$i .'">'$durchgang .'</a> ';
      }
      $durchgang++;
      }

      }
      } else {
      echo 
      "<h1>Data change</h1>";

      if ( isset(
      $_GET['id'])) {
      $id_einlesen = (INT) $_GET['id'];

      if (
      $id_einlesen 0) {
      $dseinlesen $db->prepare("SELECT id, titel, autor, sparte, inhaltsangabe, bemerkungen
      FROM datenfiles WHERE id = ? "
      );
      $dseinlesen->bind_param('i'$id_einlesen);
      $dseinlesen->execute();
      $dseinlesen->bind_result($id$titel$autor$sparte$inhaltsangabe$bemerkungen);
      while (
      $dseinlesen->fetch()) {
      }
      }

      }

      }

      if ( ! isset(
      $titel) ) {
      $titel '';
      }

      if ( ! isset(
      $autor) ) {
      $autor '';
      }

      if ( ! isset(
      $sparte) ) {
      $sparte '';
      }

      if ( ! isset(
      $inhaltsangabe) ) {
      $inhaltsangabe '';
      }

      if ( ! isset(
      $bemerkungen) ) {
      $bemerkungen '';
      }

      ?>

      <form id="datenpflege" action="" method="post">
      <p class="auto-style1"><strong>Neuer Datensatz:</strong></p>

      <p><label><span>Titel:</span>
      <input type="text" name="titel" id="titel" value="<?php echo $titel?>">
      </label></p>

      <p><label><span>Autor:</span>
      <input type="text" name="autor" id="autor" value="<?php echo $autor?>">
      </label></p>

      <p><label><span>Sparte:</span>
      <input type="text" name="sparte" id="sparte" value="<?php echo $sparte?>">
      </label></p>

      <p><label><span>Inhaltsangabe:</span>
      <input type="text" name="inhaltsangabe" id="inhaltsangabe" value="<?php echo $inhaltsangabe?>">
      </label></p>

      <p><label><span>Bemerkungen:</span>
      <input type="text" name="bemerkungen" id="bemerkungen" value="<?php echo $bemerkungen?>">
      </label> </p>
      <?php
      if ($modus_aendern != true ) {
      echo 
      '<input type="hidden" name="aktion" value="speichern">';
      echo 
      '<p><span>&nbsp;</span><p><input type="submit" value="speichern"></p>';
      }
      else
      {
      echo 
      '<input type="hidden" name="aktion" value="korrigieren">';
      echo 
      '<input type="hidden" name="id" value="'$id .'">';
      echo 
      '<p><span>&nbsp;</span><input type="submit" value="ändern"></p>';
      }
      ?>
      </form>






      <p>&nbsp;</p>







      <p>&nbsp;</p>








      <?php
      include_once('inc/bereich-fuss.inc.php');
      ?>

      Ich habe die Befürchtung, dass ich mit diesem Scriptaufbau nicht weiter komme. Einige Internetseiten erzählten mir etwas von Array`s, wo ich aber nicht weiter komme bzw nicht weiß, wo ich das einfügen soll. Ich bin lerrnfähig, stehe aber noch am Anfang meiner Kentnisse.
      Vielen Dank schon mal im voraus

      LG Cliffi

      Kommentar


      • #4
        Was du jetzt durcharbeiten muss ist ein Tutorial für SQL.

        Code:
        SELECT `id`, `titel`, `autor`, `sparte`, `inhaltsangabe`, `bemerkungen`
        FROM `datenfiles` ORDER BY `titel` DESC Limit 30;
        Sortiert die Ausgabe nach Titel alphabetisch absteigend und gibt maximal 30 Datensätze aus.
        Kollation beachten wegen Umlauten ue ü etc.

        Kommentar


        • #5
          Das habe ich getestet. Es funktioniert. Nur wäre mir eine persönliche Auswahl lieber. Ich würde gern auf Titel oder Autor oder Sparte klicken und dann für das Selektierte die Sortierfunktion haben. Gibt es da eine Möglichkeit?

          LG Cliffi

          Kommentar


          • #6
            Ja sicher, in dem du dir das programmierst.

            Switch könnte eine Mögilchkeit sein und die Auswahl über GET.

            Kommentar


            • #7
              Oder du verwendest ein JavaScript Framework wie z.B. DataTables
              sorry, shift-taste kaputt

              Kommentar


              • #8
                Clientseitige DataTable mit OData-API im Backend währe wohl der Königsweg.

                Kommentar


                • #9
                  Cliffi Bitte hier im Forum die Code-Tags nutzen. Danke! Ich habe das oben mal nachgeholt.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar

                  Lädt...
                  X