ID's in Reihenfolge

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

  • ID's in Reihenfolge

    Hallo,

    ich weiß wieder nicht, wie ich das bewältigen soll... deswegen Frage an euch:

    Ich habe 3 MySQL-Einträge. den ersten mit ID1, dann ID3 und ID34
    Das Problem ist, dass sie in zusammenhängender Reihenfolge angegeben werden sollen.
    Also wenn ich SUCHE und das ergebnis sehe, soll der link nicht "detail.php?id=1" und "detail.php?id=3" und "detail.php?id=34" lauten, sondern:
    "detail.php?id=1", "detail.php?id=2", "detail.php?id=3" und so weiter (je mehr einträge)

    Suche.php
    PHP-Code:
     if ($search==1
     {
        eval (
    "\$search1[nosearchword] = \"".gettemplate("search_nosearchword")."\";");
        eval (
    "\$search1[noresult] = \"".gettemplate("search_noresult")."\";");
        eval (
    "\$search1[kategorie] = \"".gettemplate("alpha_kategorie")."\";");
          
    $sqlab "select * from adressen where $radio1 LIKE '%$suche%'";
        if(
    $suche=="") { echo $search1[nosearchword]; }
         else 
        {
        
    $res mysql_query($sqlab$db) or die(mysql_error());
        
    $anz_ds mysql_num_rows($res);
        if(
    $anz_ds == 0){echo $search1[noresult];}else{
           eval (
    "\$search1[resulttext] = \"".gettemplate("search_resulttext")."\";");
           echo 
    $search1[resulttext]; echo $search1[kategorie];
           while(
    $adresse mysql_fetch_object ($res)) 
              {
               
    $rubrik[name]="<a href=detail.php?id=$adresse->id>&nbsp;$adresse->name</a>";
               
    $rubrik[plz]="$adresse->plz";
               
    $rubrik[ort]="$adresse->ort";
               eval (
    "\$search_link_anzeige = \"".gettemplate("search_link_anzeige")."\";");
               echo 
    $search_link_anzeige;
              }
      } 

    Wobei des in der detail.php schon funktioniert (ich finds aber net, warum des da funzt )

    detail.php
    PHP-Code:
    <?php
     
    include("config.php");

     eval (
    "\$header = \"".gettemplate("header")."\";");
     echo 
    $header;
     
    $rubrik = array();
     
      
    //
      //Anzahl der Eintr&auml;ge bestimmen
      //
      
      
    $maximum="0";
      
    $sql="SELECT * FROM adressen ORDER BY id";  
      
    $res=mysql_query($sql$db);
      while(
    $adresse mysql_fetch_object($res))
      {
        
    $maximum++;
      }
      
      
    $aktuelle1 $id-1;
      
    $aktuelle2 $id+1;
      
      
    $sql="SELECT * FROM adressen ORDER BY nachname LIMIT $aktuelle1,1";  
      if (
    $id==$maximum+1) die("<tr><td>Das war der letzte Eintrag</td></tr>"); 
      if (
    $id==0) die("<tr><td>Das war der erste Eintrag</td></tr>");

      
    $res=mysql_query($sql$db);
      while(
    $adresse mysql_fetch_object($res))
      {
       
    $rubrik[name] = $adresse->name;
       
    $rubrik[nachname] = $adresse->nachname;
       
    $rubrik[adresse] = $adresse->adresse;
       
    $rubrik[telefon] = $adresse->telefon;
       
    $rubrik[email] = $adresse->email;
       
    $rubrik[homepage] = $adresse->homepage;
       
    $rubrik[beruf] = $adresse->beruf;
       
    $rubrik[speziell] = $adresse->speziell;
       
    $rubrik[rubrik] = $adresse->rubrik;
       eval (
    "\$adressen = \"".gettemplate("adresse")."\";");
       echo 
    $adressen;
      }
     eval (
    "\$footer = \"".gettemplate("footer")."\";");
     echo 
    $footer;   
    ?>
    Wenns net zuviel arbeit macht, könnt ihr mir dann vieleicht noch erklären, warum des in der detail.php schon funzt?

    BIG THX

  • #2
    1.
    quasi sql. -> *VERSCHIEB*

    2.
    ist es nicht sinnvoll die ids erst einmal umzuschreiben. verwende schon die id aus der tabelle um die daten gezieht anzusprechen. wenn es dir nur um die ausgabe geht, mache innerhalb der while-ausgabe $i++ und gib $i aus. vor der while natürlich $i=0 nicht vergessen.

    3.
    suche mal im forum nach auto_increment und co. dort findest du schon ähnliche fragen. und allen habe wir eigentlich gesagt, dass es so 'mist' (nicht abwertend, sonder hilfreich, gemeint) ist, wie der gedanke ist...
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      in der detail.php
      hast du im stmt "... ORDER BY id "

      in der suche.php steht's noch nicht

      Kommentar


      • #4
        Hi,

        das eigentliche Problem (warum des so sein soll) ist, dass man die datensätze eins vorher und eins nachher bekommen soll...

        also link zum nächsten eintrag und link zum vorherigen...

        Kommentar


        • #5
          das bekommt man auch anders hin. siehe mein gb.... ;-) (siehe sig)

          und dann lösche mal ein paar einträge raus. und es geht immer noch mit back/next .....

          du musst dir eben LIMIT x,3 machen. von ersten und dritten wert merkst du dir die id für back und next und den zweiten eintrag gibst du aus. soviel dazu...
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            hmm

            blick ich jetzt zwar net so ganz, aber ich schau mal in der Suche nach auto_increment

            Kommentar


            • #7
              schau mal. du willst einen eintrag anzeigen. und einen back/next button haben.

              Code:
                   back | page | next
              id:    3   |  6  |  8
              mit dem LIMIT x,3 bekommst du von mysql nun die 3 ids. 3,6,8

              die id 3 speicherst du zwischen für den back-button ...
              die id 6 gibst du aus und ...
              die id 8 legst du auf den next button.

              jetzt besser verstanden?
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                also:

                Limit x,3

                3 = max. anzeige der einträge
                x = ab wo

                oder versteh ich was da falsch?

                und dann mit for durchlaufen lassen (3x for)
                haste zufällig nen kleinen beispielcode?

                (Bei der suche, 17 seiten, hab ich bis jetzt noch nix g'scheites)

                Kommentar


                • #9
                  das x ist ja dynamisch. irgendwie brauchst du ja immer einen anderen anfangspunkt zum blättern. wenn du next drückst, muss das x ja eines nach oben genommen werden..

                  hier ein einfachen bespiel...
                  PHP-Code:
                  <?php

                      $sql 
                  "SELECT id,text FROM tabelle LIMIT 0,3";
                      
                  $rel mysql_query($sql) or die(mysql_error());
                      
                      
                  $i=0;
                      while (
                  $z=mysql_fetch_assoc($res))
                      {
                          switch(
                  $i)
                          {
                              case 
                  $back $z['id'];   break;
                              case 
                  $text $z['text']; break;
                              case 
                  $next $z['id'];   break;
                          }
                          
                  $i++;
                      }

                      echo 
                  'back : '.$back.'<br />';
                      echo 
                  'text : '.$text.'<br />';
                      echo 
                  'next : '.$next.'<br />';

                  ?>
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Hi,

                    funktioniert...

                    Ich weiß, jetzt werde ich ein bisschen blöde, kann nix selber denken, aber trotzdem:

                    Ähm ja, wenn ich bei ID2 bin, sagt er zurück id1 und vorwärts id34.
                    das stimmt auch. aber wenn ich bei id1 oder id34 bin, sagt er das selber.

                    Habe den Code über die while-schleife in der detail.php eingebaut.

                    PHP-Code:
                      $aktuelle2 $id+1;
                      

                        
                    $sql "SELECT id FROM adressen LIMIT 0,3";
                        
                    $res mysql_query($sql) or die(mysql_error());
                        
                        
                    $i=0;
                        while (
                    $z=mysql_fetch_assoc($res))
                        {
                            switch(
                    $i)
                            {
                                case 
                    $back $z['id'];   break;
                                case 
                    $text $z['id']; break;
                                case 
                    $next $z['id'];   break;
                            }
                            
                    $i++;
                        }  

                      
                    $sql="SELECT * FROM adressen where id='$text'";  
                      if (
                    $id==0) die("<tr><td>Das war der erste Eintrag</td></tr>");

                      
                    $res=mysql_query($sql$db);
                      while(
                    $adresse mysql_fetch_object($res)) 

                    Kommentar


                    • #11
                      was soll das den bewirken?
                      PHP-Code:
                       $sql="SELECT * FROM adressen where id='$text'"
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Nuja, ich hab mir gedacht:

                        case 0 = vorherige id
                        case 1 = anzeige-id
                        case 2 = nächste id

                        und somit könnt man ja wieder ne mysql-abfrage starten, wo id=case 1 ist...

                        aber anscheinend funzt das alles net

                        Kommentar


                        • #13
                          nein. denn die 1 kommt aus $i und hat ncihts mit der DB-ID zu tun

                          und warum bitte willst du die db noch einmal abfragen? die while macht doch schon alles, was sie soll.
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar

                          Lädt...
                          X