Ankündigung

Einklappen
Keine Ankündigung bisher.

Rückgabewerte der Datenbank "sortieren"

Einklappen

Neue Werbung 2019

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

  • Rückgabewerte der Datenbank "sortieren"

    Hallo.
    Ich lasse mir von einer Datenbank über folgendes Statement den Rückgabewert geben:

    Code:
    SELECT endgeraet.id, endgeraet_modell.Modellbezeichnung, gi_standort.ort, gi_standort.platzname, gi_standort.verband, hw_netzwerkkarte.ipadresse, gi_nutzer_mail , gi_nutzer_telefon, endgeraet_seriennr, GROUP_CONCAT( hw_sw.sw_bemerkung SEPARATOR ',<br>' ) AS software FROM endgeraet 
    LEFT JOIN hw_netzwerkkarte ON endgeraet.id = hw_netzwerkkarte.fk_endgeraet 
    LEFT JOIN software_endgeraet ON endgeraet.id = software_endgeraet.fk_endgeraet 
    INNER JOIN hw_aufstellort ON endgeraet.fk_hw_aufstellort = hw_aufstellort.id 
    INNER JOIN gi_standort ON gi_standort.id = hw_aufstellort.fk_gi_standort 
    INNER JOIN gi_nutzer ON fk_gi_nutzer = gi_nutzer.id 
    INNER JOIN endgeraet_modell ON endgeraet.fk_endgeraet_modell = endgeraet_modell.ID 
    INNER JOIN hw_sw ON software_endgeraet.fk_hw_sw = hw_sw.id
    GROUP BY endgeraet.id
    Dann habe ich mir die Werte in eine Tabelle ausgegeben lassen
    PHP-Code:
    while ( $zeile mysql_fetch_object($res) ) { 
    //BAUE TABELE MIT ERGEBNISSEN 

    Nun soll die Tabelle abhängig von bestimmten Bedingungen gegliedert werden.
    Es soll 6 Bereiche geben (5 abhängig vom Wert in gi_standort.ort und ein Bereich abhängig vom Wert in endgeraet_seriennr).

    Wie kann ich dieses Problem lösen?
    Dann bei Bedingungen wird ja immer beendet, sobald die erste Bedingung erfüllt ist. Er prüft also die 2. Bedingung ( = 2. Bereich) nicht mehr!

    Über Anregungen würde ich mich sehr freuen!


  • #2
    Dann bei Bedingungen wird ja immer beendet, sobald die erste Bedingung erfüllt ist. Er prüft also die 2. Bedingung ( = 2. Bereich) nicht mehr!
    Zeig den Code mit dem du Probleme hast... keiner kann riechen, welche Art von Bedingungen du zusammengeschraubt hast, oder wo was klemmt, wenn du nicht ein konkretes Beispiel nennst.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      PHP-Code:
      <?php
      while ( $zeile mysql_fetch_object($res) ) {
      //################ Aufteilen in Bereiche ###############
      //################ Bereich Euskirchen ##################
          
      if ($zeile->ort === "Euskirchen"){
              
      //SPALTE Ort
              
      $ort=urlencode(utf8_encode($zeile->ort));
                    echo 
      " <tr><td><a href=/geoinfo/geo_uebersicht_anzeigen.php?action=show&ort=$ort target=\"_blank\">$zeile->ort</a></td>";
              
      //SPALTE Ip-Adresse
              
      $ipadresse=$zeile->ipadresse;
              echo 
      "<td><a href=/hardware/endgeraet_anzeige?ipadresse=$ipadresse&action=none>$zeile->ipadresse</a></td>";
              
      //SPALTE Seriennummer
              
      $seriennr=$zeile->endgeraet_seriennr;
              echo 
      "<td><a href=/hardware/endgeraet_anzeige?seriennr=$seriennr>$zeile->endgeraet_seriennr</a></td>";
              
      //SPALTE NinJo-Version    
              
      echo "<td>";
              echo 
      "$zeile->software";
              echo 
      "</td>";
              
      //SPALTE Modell & Verband
              
      echo "<td>$zeile->Modellbezeichnung</td><td>$zeile->verband</td>";
              
      //SPALTE Mailadresse
              
      if ( strcmp$zeile->gi_nutzer_mail,"ohne" )) {
                              echo 
      "<td><a href=\"mailto:$zeile->gi_nutzer_mail\">$zeile->gi_nutzer_mail</a></td</td>";
                      } else {
                              echo 
      "<td>$zeile->gi_nutzer_mail</td>";
                      }
              
      //SPALTE Telefon
                      
      echo "<td>$zeile->gi_nutzer_telefon</td>";
              
      //SPALTE bearbeiten
      ?>
              <td><a target="popup" onclick="window.open ('', 'popup', 'width=580,height=360,scrollbars=no,toolbar=no,status=no,resizable=no, menubar=no,location=no,directories=no,top=10,left=10') "href="edit.php"><img src="edit-gray.png" alt="edit"></a></td></tr>
      <?php    
          
      }
      //################ Bereich Fürstenfeldbruck ############
          
      elseif ($zeile->ort === "Fürstenfeldbruck"){
                      
      //SPALTE Ort
              
      $ort=urlencode(utf8_encode($zeile->ort));
                    echo 
      " <tr><td><a href=/geoinfo/geo_uebersicht_anzeigen.php?action=show&ort=$ort target=\"_blank\">$zeile->ort</a></td>";
              
      //SPALTE Ip-Adresse
              
      $ipadresse=$zeile->ipadresse;
              echo 
      "<td><a href=/hardware/endgeraet_anzeige?ipadresse=$ipadresse&action=none>$zeile->ipadresse</a></td>";
              
      //SPALTE Seriennummer
              
      $seriennr=$zeile->endgeraet_seriennr;
              echo 
      "<td><a href=/hardware/endgeraet_anzeige?seriennr=$seriennr>$zeile->endgeraet_seriennr</a></td>";
              
      //SPALTE NinJo-Version    
              
      echo "<td>";
              echo 
      "$zeile->software";
              echo 
      "</td>";
              
      //SPALTE Modell & Verband
              
      echo "<td>$zeile->Modellbezeichnung</td><td>$zeile->verband</td>";
              
      //SPALTE Mailadresse
              
      if ( strcmp$zeile->gi_nutzer_mail,"ohne" )) {
                              echo 
      "<td><a href=\"mailto:$zeile->gi_nutzer_mail\">$zeile->gi_nutzer_mail</a></td</td>";
                      } else {
                              echo 
      "<td>$zeile->gi_nutzer_mail</td>";
                      }
              
      //SPALTE Telefon
                      
      echo "<td>$zeile->gi_nutzer_telefon</td>";
              
      //SPALTE bearbeiten
      ?>
              <td><a target="popup" onclick="window.open ('', 'popup', 'width=580,height=360,scrollbars=no,toolbar=no,status=no,resizable=no, menubar=no,location=no,directories=no,top=10,left=10') "href="edit.php"><img src="edit-gray.png" alt="edit"></a></td></tr>
      <?php    
          
      }
      }
      Der zweite Bereich wird ja gar nicht mehr ausgewertet, weil ja immer "Euskirchen" vorhanden ist.

      Kommentar


      • #4
        Der zweite Bereich wird ja gar nicht mehr ausgewertet, weil ja immer "Euskirchen" vorhanden ist.
        Ist ja auch richtig so... im nächsten Datensatz steht dann vielleicht "Fürstenfeldbruck" anstatt "Euskirchen", dann wird die erste if-Abfrage "false" liefern und die zweite "true"...

        Es kann immer nur EIN Ort gleichzeitig "richtig" sein, wie sollte eine Person gleichzeitig in Euskirchen UND in Fürstenfeldbruck wohnen?
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Zitat von lstegelitz Beitrag anzeigen
          Ist ja auch richtig so... im nächsten Datensatz steht dann vielleicht "Fürstenfeldbruck" anstatt "Euskirchen", dann wird die erste if-Abfrage "false" liefern und die zweite "true"...

          Es kann immer nur EIN Ort gleichzeitig "richtig" sein, wie sollte eine Person gleichzeitig in Euskirchen UND in Fürstenfeldbruck wohnen?
          Das hab ich mir ja auch gedacht.
          Die Ausgabe (siehe Anhang) gibt allerdings nur Werte für Euskirchen aus...
          Angehängte Dateien

          Kommentar


          • #6
            Auf dem Bild erkennt man gar nix...

            Deine Daten kommen aus einer Datenbank. Wenn dort bereits überall "Euskirchen" eingetragen ist, liegt es daran (die if-Abfrage überprüft nur, was im Feld steht)
            PHP-Code:
            while ( $zeile mysql_fetch_object($res) ) {
                if (
            $zeile->ort === "Euskirchen"){ 
            Wenn in der Datenbank auch andere Städtenamen hinterlegt sind, hat dein Script einen Fehler.
            Um den zu finden musst du debuggen.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              hab ich auch bemerkt, dass man auf dem Bild quasi nichts erkennt.
              Ohne die If-Bedingung werden ca 25 verschiedene Orte angezeigt.
              Wie gesagt, mit meinem Code nur Euskirchen.

              Scheinbar liegt das aber am Umlaut, da ich es mir einem Ort ohne Umlaut funktioniert.
              Aber auch noch nicht so, wie ich es mir gedacht hatte.
              Ich wollte ja, das Bereiche mit genau dem Suchbegriff entstehen.
              So mischt er die Suchergebnisse trotzdem.

              Kommentar


              • #8
                Zitat von Tinipieps Beitrag anzeigen
                Scheinbar liegt das aber am Umlaut, da ich es mir einem Ort ohne Umlaut funktioniert.
                Das ist ein Zeichensatzproblem oder du hast eventuell HTML Codierte Daten in der Datenbank.

                Zitat von Tinipieps Beitrag anzeigen
                Aber auch noch nicht so, wie ich es mir gedacht hatte.
                Ich wollte ja, das Bereiche mit genau dem Suchbegriff entstehen.
                So mischt er die Suchergebnisse trotzdem.

                Ja, der Code macht auch wenig sinn. Du kannst die Daten auch von der Datenbank sortieren lassen.

                PHP-Code:
                ORDER BY gi_standort.ort 

                Kommentar


                • #9
                  Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
                  Choosing an API
                  Warum man mysql* generell nicht (mehr) nutzen sollte.
                  Wie man von mysql* auf PDO umsteigt
                  Wissenswertes zum Thema SQL-Injection
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar

                  Lädt...
                  X