Ankündigung

Einklappen
Keine Ankündigung bisher.

8 Bestimmte Datensätze pro seite anzeigen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 8 Bestimmte Datensätze pro seite anzeigen

    Hallo,

    ich brauche mal dringend eure Hilfe. Ich rufe aus dem db Datensätze und zeige pro Seite 8 Daten Sätze an.

    Jetzt möchte ich bestimmte Datensätze aufrufen und pro Seite 8 Datensätze anzeigen.

    Hier der Ansatz wie ich das realisieren wollte, denn mit alle Datensätze aufrufen und anzeigen klappt.

    PHP-Code:
    <?php
    require "databasedaten/db.php";
    list(
    $entries) = mysql_fetch_row(mysql_query("SELECT * FROM makaleler WHERE yazar_no = ' $uzmanuser '"));      
    $pages 8;                                                                             
    $count_pages ceil($entries/$pages);                                                 

    if (empty(
    $_GET['page'])) 

        
    $_GET['page'] = 1
    }
    if(!empty(
    $entries))


        
    $startbereich $pages*($_GET['page']-1);
        
    $ergebnis = @mysql_query("SELECT * FROM makaleler ORDER BY yazar_no DESC LIMIT $startbereich$pages"); 
        
    ?>


  • #2
    Hallo,

    spezifizere dein Problem? Funktioniert das Paging nicht? Debugging? Fehlermeldung? Output wenn du die $ergebnis dumpst?

    Anmerkungen:
    * mysql* ist deprecated
    * Schau dir das Thema prepared Statements an - je nachdem wo "$uzmanuser" ist eine SQL-Injection nicht ausgeschlossen!
    * "if (empty($_GET['page']))" und was ist wenn Sie garnicht gesetzt ist oder nicht numerisch?
    * $ergebnis = @mysql_query -> Tolles Error-Handling! Was kommt den für ein Fehler?

    Edit: Ich glaube auch nicht das das ein Fortgeschrittenen Problem ist
    Gruß,
    SebTM

    Kommentar


    • #3
      Hallo,

      das Problem ist, obwohl ich die bestimmten Datensätze rufe, werden alle Datensätze abgerufen und angezeigt.

      was mache ich falsch?

      Kommentar


      • #4
        Moin.

        Was meinst du mit bestimmte Datensätze? Meinst du, wenn du auf einen Seitenzahl klickst das dann z.B. die Beiträge 9-16 angezeigt werden auf Seite 2?

        Ich sehe keine Paginator Funktionalität bei dir. Google mal nach PHP Paginator.

        Gruß Litter

        Ps.: Fortgeschritten?
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          Hallo,

          genau es sollen z.B. nur die angezeigt werde, bei denen im Datensatz das Word OK vorkommt.

          Leider kriege ich das mit meinen Code nicht hin. Bei mir werden alle Datensätze angezeigt.

          Kommentar


          • #6
            hallo,

            ich habe mal jetzt die gesamte php code hierhin geschrieben...
            PHP-Code:
            <?php
            require "databasedaten/db.php";
            list(
            $entries) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM yazarlar"));      
            $pages 8;                                                                             
            $count_pages ceil($entries/$pages);                                                 

            if (empty(
            $_GET['page'])) 

                
            $_GET['page'] = 1
            }
            if(!empty(
            $entries))


                
            $startbereich $pages*($_GET['page']-1);
                
            $ergebnis = @mysql_query("SELECT * FROM yazarlar ORDER BY id DESC LIMIT $startbereich$pages"); 
                
            ?>    

            <div id="subContent">
                    
                    <?php
                        
            while($zeile mysql_fetch_array($ergebnis)) 
                        { 
                    
            ?>
                    
                        <a href="uzmanlar_profil.php?id=<?= $zeile[id?>" class="yazarBox">
                        <table width="100%" border="0" cellspacing="5" cellpadding="0">
                            <tr>
                                <td width="100" rowspan="4"><img src="<?= $zeile[yazar_resim_adr?>" width="90" height="120" border="0" align="top" alt=""></td>
                                <td><strong id="yazarisim1"><?= $zeile[yazar_ismi?></strong></td>
                            </tr>
                            <tr>
                                <td id="yazarisim2"><em>"<i><?= $zeile[yazar_meslek?></i>"</em></td>
                            </tr>
                            <tr>
                                <td id="yazarisim3">Ikametgah: <?= $zeile[ikametgah?></td>
                            </tr>
                            <tr>
                                <td id="yazarisim3">E-Mail: <?= $zeile[email?></td>
                            </tr>
                        </table>
                        </a>
                    <?php
                        
            }
                    
            ?>
                        <table width="860"  cellpadding="2" border="0">
                        <tr>
                    <?php
                        
            if ($_GET['page'] != 1
                        { 
                            
            $back $_GET['page']-1
                    
            ?>
                        <td ><a href="uzmanlar.php?page= <?= $back ?>" type="reset" >&laquo; Geri</a></td>
                    <?php
                        
            }

                        if (
            $_GET['page'] < $count_pages
                        { 
                            
            $forward $_GET['page']+1
                    
            ?>
                        <td class="exampleright"><a href="uzmanlar.php?page= <?= $forward ?>" type="reset" >Ileri &raquo;</a></td>
                    <?php
                        
            }
                    
            ?>
                        </tr>
                        </table>
            <?php
            }
            else
            {
            ?>
                    
                    <table align="center" id="content" valign="top"   cellspacing="0" cellpadding="0" border="0" >
                <tr>
                    <td   valign="top" align="center"  >
                    <table class="content_inhalt_container"  border="0" cellpadding="0" cellspacing="0" >
                        <tr>
                            <td class="content_inbox" valign="top" >
                            <!-- INHALT -->
                            <div id="zitat3" >Uzmanlar&#x131;m&#x131;z</div>
                        <table class="yazarBox" width="100%" border="0" cellspacing="5" cellpadding="0">
                            <tr>
                                <td width="30" rowspan="0"><img src="images/critik.png" width="22" height="22" border="0" align="top" alt=""></td>
                                <td><strong id="zitat1">Yazar bulunamadi</strong></td>
                            </tr>
                            
                            
                        </table>
                        
                    
                    <?php
                        
            }
                    
            ?>    
                        <!--<div id="pageNum">[ <strong> 1 </strong>]  <a href="?s=2">2</a>  <a href="?s=3">3</a> </div>-->
                        <div class="clr"></div>
                </div>


            Mit dieser code kann ich alle Datensätze aufrufen und 8 Datensätze pro Seite anzeige. Soweit funktioniert es auch.

            Ich möchte den code so abändern, so das ich aus 3 Tabellen die im selben db befinden, nach bestimmten Datensätze abfragen die z.B. in der Spalte das Word OK haben anzeigen. Natürlich soll es wieder 8 DS pro Seite erscheinen.

            ich hoffe mir kann da jemand weiter helfen
            danke im voraus

            Katip

            Kommentar


            • #7
              Hallo,

              habe dein Script mal um es überhaupt debuggen zu können formatiert und so überarbeitet das du im Zweifel nicht mit lauter deprecated Komponenten arbeitest und dir gleich mal ein Beispiel für prepared Statements eingebaut!

              PHP-Code:
              <?php
              /*
               * Pagination Example
               * for PHP.de by SebTM
              */

              //
              // Enable Error-Reporting for debugging
              //
              error_reporting(-1);
              ini_set('display_errors'1);


              //
              // Configure Script
              //
              define('DB_HOST''');
              define('DB_USERNAME''');
              define('DB_PASSWORD''');
              define('DB_DATABASE''');

              define('CONFIG_ITEMS_PER_PAGE'8);


              //
              // Script Part!
              //

              // Create Database Connection
              try {
                  
              $db = new PDO(
                      
              'mysql:dbname=' DB_DATABASE ';host=' DB_HOST,
                      
              DB_USERNAME,
                      
              DB_PASSWORD,
                      array(
                          
              PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                          
              PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
                      
              )
                  );
              } catch (
              PDOException $e) {
                  die(
              '<b>Connection failed:</b> ' $e->getMessage());
              }


              // Get count of objects & Calculate pages
              list($itemsCount) = $db->query('SELECT COUNT(*) as count FROM yazarlar');
              $pagesCount ceil($countResult['count'] / CONFIG_ITEMS_PER_PAGE);

              // Check for Parameter
              if(!isset($_GET['page']) || empty($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page'] > $pagesCount) {
                  
              $_GET['page'] = 1;
              }

              // Check for Items
              if ($itemsCount 0):
                  
              // Get Items
                  
              $itemsStm $db->prepare('SELECT * FROM yazarlar ORDER BY `id` LIMIT :limit OFFSET :offset');
                  
              $itemsStm->execute(array(':limit' => CONFIG_ITEMS_PER_PAGE':offset' => ($_GET['page'] * $_GET['page'] + 1)));
                  
              $items $itemsStm->fetchAll();
                  
              ?>

              <div id="subContent">
                  <?php foreach ($items as $item): ?>
                      <!-- 
                          Du solltest dir gedanken darüber machen ob es tatsächlich eine gute Idee ist, 
                          jedes Items als Tabelle in einem Link zu erstellen! Invalide nach HTML-Standard ist es 
                          meines Wissens nach auf jedenfall!
                      -->
                      
                      <a href="uzmanlar_profil.php?id=<?php echo $item['id']; ?>" class="yazarBox">
                          <table width="100%" border="0" cellspacing="5" cellpadding="0">
                              <tr>
                                  <td width="100" rowspan="4"><img src="<?php echo $zeile['yazar_resim_adr']; ?>" width="90" height="120" border="0" align="top" alt=""></td>
                                  <td><strong id="yazarisim1"><?php echo $zeile['yazar_ismi']; ?></strong></td>
                              </tr>
                              <tr>
                                  <td id="yazarisim2"><em>"<i><?php echo $zeile['yazar_meslek']; ?></i>"</em></td>
                              </tr>
                              <tr>
                                  <td id="yazarisim3">Ikametgah: <?php echo $zeile['ikametgah']; ?></td>
                              </tr>
                              <tr>
                                  <td id="yazarisim3">E-Mail: <?php echo $zeile['email']; ?></td>
                              </tr>
                          </table>
                      </a>
                  <?php endforeach; ?>

                  <table width="860"  cellpadding="2" border="0">
                      <tr>
                          <?php if ($_GET['page'] > 1): ?>
                              <td><a href="uzmanlar.php?page=<?php echo ($_GET['page']-1); ?>" type="reset" >&laquo; Geri</a></td>
                          <?php endif; ?>
                          <?php if ($_GET['page'] < $pagesCount): ?>
                              <td class="exampleright"><a href="uzmanlar.php?page=<?php echo ($_GET['page']+1); ?>" type="reset" >Ileri &raquo;</a></td>
                          <?php endif; ?>
                      </tr>
                  </table>
                  
              <?php else: ?>
                  <!--
                      Mach dir am besten mal gedanken darüber dein Styling in eine CSS-Datei auszulagern, 
                      das ganze Inline-Zeug ist ja grausam! Und eine Tabelle in einer Tabelle erst :O
                  -->
                  
                  <table align="center" id="content" valign="top" cellspacing="0" cellpadding="0" border="0">
                      <tr>
                          <td valign="top" align="center">
                              <table class="content_inhalt_container"  border="0" cellpadding="0" cellspacing="0" >
                                  <tr>
                                      <td class="content_inbox" valign="top">
                                          <div id="zitat3" >Uzmanlar&#x131;m&#x131;z</div>
                                          <table class="yazarBox" width="100%" border="0" cellspacing="5" cellpadding="0">
                                              <tr>
                                                  <td width="30" rowspan="0"><img src="images/critik.png" width="22" height="22" border="0" align="top" alt=""></td>
                                                  <td><strong id="zitat1">Yazar bulunamadi</strong></td>
                                              </tr>
                                          </table>
                                          <!-- Da fehlt aber irgendwie einiges?! -->

              <?php endif; ?>

                  <div class="clr"></div>
              </div>
              Tu dir uns mir ein gefallen und lies dir die Anmekungen durch, mach dir gedanken und kopiere nicht alles Hirnlos! Vorallem mach dir über den Table-Quatsch mal ordentliche gedanken.
              Gruß,
              SebTM

              Kommentar


              • #8
                Siehe auch: → http://phpforum.de/forum/showthread.php?p=1581398

                Mehr Infos zu Crosspostings: http://www.php.de/php-einsteiger/ann..._Multipostings

                Kommentar


                • #9
                  Danke,

                  ich werde es mal probieren.

                  gruß
                  katip

                  Kommentar


                  • #10
                    Zitat von katipefendi Beitrag anzeigen
                    Hallo,

                    genau es sollen z.B. nur die angezeigt werde, bei denen im Datensatz das Word OK vorkommt.

                    Leider kriege ich das mit meinen Code nicht hin. Bei mir werden alle Datensätze angezeigt.
                    In welcher Spalte deine Tabelle soll denn das Wort OK vokommen? Steht dieses Wort als einzelner Wert in einer Spalte oder ist ein Flag Feld?

                    Du musst dann natürlich noch mit einer where Clausel arbeiten, quasi als Datenfilter, die fehlt bei dir komplett.
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #11
                      Zitat von SebTM Beitrag anzeigen
                      Hallo,

                      habe dein Script mal um es überhaupt debuggen zu können formatiert und so überarbeitet das du im Zweifel nicht mit lauter deprecated Komponenten arbeitest und dir gleich mal ein Beispiel für prepared Statements eingebaut!

                      PHP-Code:
                      <?php
                      /*
                       * Pagination Example
                       * for PHP.de by SebTM
                      */

                      //
                      // Enable Error-Reporting for debugging
                      //
                      error_reporting(-1);
                      ini_set('display_errors'1);


                      //
                      // Configure Script
                      //
                      define('DB_HOST''');
                      define('DB_USERNAME''');
                      define('DB_PASSWORD''');
                      define('DB_DATABASE''');

                      define('CONFIG_ITEMS_PER_PAGE'8);


                      //
                      // Script Part!
                      //

                      // Create Database Connection
                      try {
                          
                      $db = new PDO(
                              
                      'mysql:dbname=' DB_DATABASE ';host=' DB_HOST,
                              
                      DB_USERNAME,
                              
                      DB_PASSWORD,
                              array(
                                  
                      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                  
                      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
                              
                      )
                          );
                      } catch (
                      PDOException $e) {
                          die(
                      '<b>Connection failed:</b> ' $e->getMessage());
                      }


                      // Get count of objects & Calculate pages
                      list($itemsCount) = $db->query('SELECT COUNT(*) as count FROM yazarlar');
                      $pagesCount ceil($countResult['count'] / CONFIG_ITEMS_PER_PAGE);

                      // Check for Parameter
                      if(!isset($_GET['page']) || empty($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page'] > $pagesCount) {
                          
                      $_GET['page'] = 1;
                      }

                      // Check for Items
                      if ($itemsCount 0):
                          
                      // Get Items
                          
                      $itemsStm $db->prepare('SELECT * FROM yazarlar ORDER BY `id` LIMIT :limit OFFSET :offset');
                          
                      $itemsStm->execute(array(':limit' => CONFIG_ITEMS_PER_PAGE':offset' => ($_GET['page'] * $_GET['page'] + 1)));
                          
                      $items $itemsStm->fetchAll();
                          
                      ?>

                      <div id="subContent">
                          <?php foreach ($items as $item): ?>
                              <!-- 
                                  Du solltest dir gedanken darüber machen ob es tatsächlich eine gute Idee ist, 
                                  jedes Items als Tabelle in einem Link zu erstellen! Invalide nach HTML-Standard ist es 
                                  meines Wissens nach auf jedenfall!
                              -->
                              
                              <a href="uzmanlar_profil.php?id=<?php echo $item['id']; ?>" class="yazarBox">
                                  <table width="100%" border="0" cellspacing="5" cellpadding="0">
                                      <tr>
                                          <td width="100" rowspan="4"><img src="<?php echo $zeile['yazar_resim_adr']; ?>" width="90" height="120" border="0" align="top" alt=""></td>
                                          <td><strong id="yazarisim1"><?php echo $zeile['yazar_ismi']; ?></strong></td>
                                      </tr>
                                      <tr>
                                          <td id="yazarisim2"><em>"<i><?php echo $zeile['yazar_meslek']; ?></i>"</em></td>
                                      </tr>
                                      <tr>
                                          <td id="yazarisim3">Ikametgah: <?php echo $zeile['ikametgah']; ?></td>
                                      </tr>
                                      <tr>
                                          <td id="yazarisim3">E-Mail: <?php echo $zeile['email']; ?></td>
                                      </tr>
                                  </table>
                              </a>
                          <?php endforeach; ?>

                          <table width="860"  cellpadding="2" border="0">
                              <tr>
                                  <?php if ($_GET['page'] > 1): ?>
                                      <td><a href="uzmanlar.php?page=<?php echo ($_GET['page']-1); ?>" type="reset" >&laquo; Geri</a></td>
                                  <?php endif; ?>
                                  <?php if ($_GET['page'] < $pagesCount): ?>
                                      <td class="exampleright"><a href="uzmanlar.php?page=<?php echo ($_GET['page']+1); ?>" type="reset" >Ileri &raquo;</a></td>
                                  <?php endif; ?>
                              </tr>
                          </table>
                          
                      <?php else: ?>
                          <!--
                              Mach dir am besten mal gedanken darüber dein Styling in eine CSS-Datei auszulagern, 
                              das ganze Inline-Zeug ist ja grausam! Und eine Tabelle in einer Tabelle erst :O
                          -->
                          
                          <table align="center" id="content" valign="top" cellspacing="0" cellpadding="0" border="0">
                              <tr>
                                  <td valign="top" align="center">
                                      <table class="content_inhalt_container"  border="0" cellpadding="0" cellspacing="0" >
                                          <tr>
                                              <td class="content_inbox" valign="top">
                                                  <div id="zitat3" >Uzmanlar&#x131;m&#x131;z</div>
                                                  <table class="yazarBox" width="100%" border="0" cellspacing="5" cellpadding="0">
                                                      <tr>
                                                          <td width="30" rowspan="0"><img src="images/critik.png" width="22" height="22" border="0" align="top" alt=""></td>
                                                          <td><strong id="zitat1">Yazar bulunamadi</strong></td>
                                                      </tr>
                                                  </table>
                                                  <!-- Da fehlt aber irgendwie einiges?! -->

                      <?php endif; ?>

                          <div class="clr"></div>
                      </div>
                      Tu dir uns mir ein gefallen und lies dir die Anmekungen durch, mach dir gedanken und kopiere nicht alles Hirnlos! Vorallem mach dir über den Table-Quatsch mal ordentliche gedanken.

                      Hallo SEbTm,
                      ich habe mal dein Code unter die lupe genommen und habe quer durch den code experimentiert und leider funktioniert es mit mehrere Tabellen abfrage nicht.

                      Dein code ist irgendwie nur für eine Tabelle geeignet, sobald es mehrere Tabellen sind, kann ich pro seite keine 8 datensätze anzeigen. die seite bleibt leer ohne Fehlermeldung.

                      gruß
                      katip

                      Kommentar


                      • #12
                        Hallo,

                        ich habe da was überlesen - du musst folgende Zeilen entsprechend anpassen, damit nur gewisse Resultate angezeigt werden:

                        PHP-Code:
                        // Get count of objects & Calculate pages
                        list($itemsCount) = $db->query('SELECT COUNT(*) as count FROM yazarlar'); 
                        Diese Zeile musst du von "query" auf "prepare" ändern und als prepared-Stm handeln.

                        PHP-Code:
                        $itemsStm $db->prepare('SELECT * FROM yazarlar ORDER BY `id` LIMIT :limit OFFSET :offset'); 
                        Hier musst du den "WHERE"-Teil mit entsprechenden Platzhaltern ersetzen und drunter in der "execute"-Methode dann die Paramter ergänzen.

                        Was meinst du mit mehreren Datenbanken - das erschließt sich mir nicht?
                        Gruß,
                        SebTM

                        Kommentar


                        • #13
                          Nicht mehrere Datenbanken sondern mehrere Tabellen.
                          In deiner Select ist nur eine Tabelle angegeben.
                          PHP-Code:
                          $itemsStm $db->prepare('SELECT * FROM yazarlar ORDER BY `id` LIMIT :limit OFFSET :offset'); 

                          Kommentar


                          • #14
                            In deinem Code ja auch! Ich verstehe nicht was du willst - du kannst die Pagination-Logik wenn du Sie z.B. in eine Klasse auslagerst wiederverwenden aber so wird das halt dublicated Code.

                            Erklär uns was genau du jetzt bitte willst?
                            Gruß,
                            SebTM

                            Kommentar


                            • #15
                              ich bekomme das nicht hin, ist mir einfach zu schwer. ich versuche jetzzt dasd ganze mal ander zu lösen

                              Kommentar

                              Lädt...
                              X