Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] 3 Datensätze mit einer "Weiter"-Funktion

Einklappen

Neue Werbung 2019

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

  • [Erledigt] 3 Datensätze mit einer "Weiter"-Funktion

    Hi,

    ich habe ca 100 Einträge zu je aus 3 Datensätzen (Zahlen), die ich regelmäßig der Reihe nach abhaken muss.

    Meine erste Frage dazu ist, ob sich dafür eine Datenbank lohnt, oder ob man dies über eine externe Text-Datei gestalten soll.


    Ich vermute, dass eine DB sinnvoll sein wird, da sich diese ggf. einfacher aktualisieren ließe.

    Ich denke daher, dass man in der DB eine ID (primery key) eingibt, und dort die drei Datensätze anschließt. (also dann 4 Stück)


    Nun müsste ich bei der Ausgabe den aktuellen Datensatz haben, und die ID davor und danach. Zusätzlich wäre es hilfreich, wenn ich die aktuelle ID oben in der URL drin hätte, so dass ich ggf. einige Einträge überspringen kann






    Allerdings habe ich mal wieder keine Ahnung von nichts.....


    Die Verbindung zur DB ist soweit kein Problem, bei der Abfrage des gezielten Datensatzes fängt es schon an. Die ID davor oder dahinter sollte sich von mir mit "++" oder "--" bewerkstelligen lassen...

    Folgendes habe ich bislang verzapft:


    PHP-Code:
    <?php   

    // Zugriffsdaten

    $link mysql_connect('localhost'$dbuser$passwort);
    if (!
    $link) {
        die(
    'keine Verbindung möglich: ' mysql_error());
    }

    $db_selected mysql_select_db($datenbank$link);
    if (!
    $db_selected) {
        die (
    $datenbank mysql_error());
    }


    $result mysql_query("SELECT ID, zahl1, zahl2, zahl3  FROM tabellenname WHERE ID = ******");
    if (!
    $result) {
        echo 
    'Abfrage konnte nicht ausgeführt werden: ' mysql_error();
        exit;


    while (list(
    $ID$zahl1$zahl2$zahl3) = mysql_fetch_row($result)) {
        
    $content .='
            <html>
                <textarea>' 
    $zahl1 '</textarea>
                <textarea>' 
    $zahl2 '</textarea>
                <textarea>' 
    $zahl3 '</textarea>
            </html>'
    ;
          };
    Wenn ich oben für die Sterne die entsprechende ID von Hand eintrage, dann komme ich zu einem Ergebnis. Aber wie setzte ich diese gesuchte ID über die URL?


  • #2
    Hallo,

    was meinst du mit
    Die ID davor oder dahinter sollte sich von mir mit "++" oder "--" bewerkstelligen lassen...
    ?

    Aber wie setzte ich diese gesuchte ID über die URL?
    Daten via URL
    http://hallophp.de

    Kommentar


    • #3
      Die ID davor oder dahinter sollte sich von mir mit "++" oder "--" bewerkstelligen lassen...
      Nicht wenn Du vorhast Datensätze auch mal zu löschen und/oder die Daten anders sortiert ausgeben willst.

      Aber wie setzte ich diese gesuchte ID über die URL?
      ja oder per POST.

      PHP-Code:
      $id abs((int) $_GET['id']); 
      oder statt GET halt POST
      AFFE ist nur im Dezimalsystem ein Palindrom.

      Kommentar


      • #4
        Hi

        mit dem "++" und dem "--" meinte ich, die Zahl um jeweils einen erhöhen, oder erniedrigen.
        Der Einwand von agundur ist richtig, doch ich habe nicht vor einzelne Datensätze gänzlich zu löschen.

        Was den Link von selfphp.de angeht, so funktioniert das Beispiel nicht.
        Ich habe beide Daten genauso erstellt, auch mit der Dateiendung, und beide mal im Firefox und mit Chrome geöffent.

        die Link-Weitergabe an sich funktioniert auf die Theme.php, bloß die Abfrage dort nicht....


        Edit:
        online geht es!!

        Kommentar


        • #5
          PHP Dateien werden vom Web-Server interpretiert. Machst du die einfach im Browser auf, ist da kein Web-Server. Ergo geht da auch nichts.

          Mal ganz schnell zum Grundlagen lernen....

          Kommentar


          • #6
            So ich habe nun die SQL-Abfrage so:
            PHP-Code:
            $result mysql_query('SELECT id, zahl1, zahl2, zahl3  FROM tabellenname WHERE id = ' $id ''); 
            Allerdings schmeißt er mir noch nichts raus, und ich vermute, dass die While-Schleife ungünstig ist ^^
            Das mit den Links klappt nun

            Kommentar


            • #7
              Du hast doch die ID.

              Wieso machst du dann nicht einfach where id > $id order by id limit 1
              Dann haste den Nächsten und VOrigen Eintrag

              Kommentar


              • #8
                ähm, wie meinst du das?

                in der SQL-Abfrage?

                Kommentar


                • #9
                  Meinst du das so:
                  PHP-Code:
                  $result mysql_query('SELECT id, zahl1, zahl2, zahl3  FROM tabellenname WHERE id > ' $id ' order by id limit 1'); 


                  Da meine Abfrage mir nichts ausgibt, habe ich eine andere probiert:
                  PHP-Code:
                    $ergebnis mysql_query('SELECT id, zahl1, zahl2, zahl3  FROM tabellenname WHERE id = ' $nummer '');
                    while(
                  $row mysql_fetch_object($ergebnis))
                    {
                      echo 
                  $row->id;
                      echo 
                  '|';
                      echo 
                  $row->zahl1;
                      echo 
                  '|';
                      echo 
                  $row->zahl2;
                      echo 
                  '|';
                      echo 
                  $row->zahl3;
                      echo 
                  '<br>';
                    } 


                  Das schaut zwar sehr bescheiden aus, aber würde funktionieren.

                  Aber warum wird hier nichts ausgegeben:
                  PHP-Code:
                  $result mysql_query('SELECT id, zahl1, zahl2, zahl3  FROM tabellenname WHERE id = ' $nummer '');
                  if (!
                  $result) {
                      echo 
                  'Abfrage konnte nicht ausgeführt werden: ' mysql_error();
                      exit;
                  }

                  while (list(
                  $id$zahl1$zahl2$zahl3) = mysql_fetch_row($result)) {
                      
                  $content .='
                              <textarea>' 
                  $id '</textarea>
                              <textarea>' 
                  $vz_uid '</textarea>
                              <textarea>' 
                  $farmuid '</textarea>
                              <textarea>' 
                  $secretid '</textarea>
                              '
                  ;
                        }; 

                  Kommentar


                  • #10
                    Codeoptimierung:Code-Smells - PHP.de Wiki
                    Aber warum wird hier nichts ausgegeben:
                    Weil du an dieser Stelle nichts ausgibst.

                    Außerdem sind $vz_uid, $farmuid und $secretid nicht definiert.
                    http://hallophp.de

                    Kommentar


                    • #11
                      aaaach verdammt

                      Kommentar


                      • #12
                        supi, nun funktioniert es...

                        hatte schon den echo '<b>' . $content . '<b>'; drin, aber die falschen Variablen, vom hin und her kopieren...


                        letzte Frage noch, kann man die Variablen auch außerhalb der While-Schleife überleben lassen?
                        Versuche ich das nun nach dem $content kommt da leider ncihts...

                        Kommentar


                        • #13
                          Zitat von Unregistrierter Beitrag anzeigen
                          letzte Frage noch, kann man die Variablen auch außerhalb der While-Schleife überleben lassen?
                          Zu welchem Zweck?

                          Du kannst sie bspw. in einem Array ablegen. (Dann empfiehlt sich aber der Verzicht auf list(), und stattdessen gleich das Ergebnis der mysql_fetch-Funktion als neuen Array-Eintrag abzulegen.)

                          Versuche ich das nun nach dem $content kommt da leider ncihts...
                          Natürlich - schließlich hat die mysql_fetch-Funktion nach dem letzten Datensatz false geliefert; muss sie ja auch, denn sonst würde deine While-Schleife ja gar nicht mehr aufhören.

                          Kommentar


                          • #14
                            nun ja, meine Überlegung war, damit die ganze html-Seite nicht eingebunden werden müsste...

                            Aber bevor ich da wieder was herumfuhrwerde lasse ich das lieber so...


                            Danke an allen, funktioniert nun super

                            Kommentar

                            Lädt...
                            X