php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-05-2013, 12:00
b1p
 Registrierter Benutzer
Links : Onlinestatus : b1p ist offline
Registriert seit: Oct 2012
Beiträge: 39
b1p befindet sich auf einem aufstrebenden Ast
Standard $result->num_rows ergibt 0

Hallo zusammen,

ich möchte per SQL Abfrage die Anzahl meiner gespeicherten tracert Routen herausfinden. Für das folgende Beispiel wäre das Ergebnis je eine Route mit mehreren Hops, zu 3 versch. Uhrzeiten = DREI Routen.




Beim klicken auf eines der Targets wird die entsprechende Route angezeigt. Falls mehrere Routen vorhanden sind (im gewünschten Zeitraum) soll diese in einer neuen Spalte angezeigt werden (nur wenn abweichend).

Daher will ich eben erst herausfinden, ob es mehrere Routen gibt, um sie dann zu vergleichen.
PHP-Code:
SELECT DISTINCT S.name AS routeS.target AS targetidS.record_timeD.idD.datetimeCOUNT(D.datetime) AS totalCountS.ipaddressS.average 
FROM tbl_tracert_significant S 
JOIN tbl_tracert_datetime D ON S
.record_time D.id 
JOIN tbl_tracert_target T ON S
.target T.id 
WHERE S
.target AND D.datetime BETWEEN '2013-04-17 12:00:00' AND '2013-04-17 12:10:00'
GROUP BY D.datetime 
Das Ergebnis sieht wie folgt aus:



Dazu der Code:
PHP-Code:
//new DB connection
    
$database = @new mysqli(MYSQL_HOSTMYSQL_USERMYSQL_PWDMYSQL_DB);
    
    
//OVERALL DB Query to find out how many routes we have 
    
$general "SELECT DISTINCT S.name AS route, S.target AS targetid, S.record_time, D.id, COUNT(D.datetime) AS totalCount, D.datetime, S.ipaddress, S.average ";
    
$general .= "FROM tbl_tracert_significant S ";
    
$general .= "JOIN tbl_tracert_datetime D ON S.record_time = D.id ";
    
$general .= "JOIN tbl_tracert_target T ON S.target = T.id ";
    
$general .= "WHERE S.target = $targetId ";
    if(
$from !== 'N/A' && $to !== 'N/A' ) {
    
$general .= "AND D.datetime BETWEEN '$from' AND '$to'";
    }

    
$general .= " GROUP BY D.datetime";
    
//echo "$general <br />";
    
    
$query $database->query($generalMYSQLI_USE_RESULT);
    
$routeCount $query->num_rows;
    echo 
"total routes: $routeCount <br />"
Komischerweise ist das Ergebnis von $query->num_rows 0 anstatt 3. Ich habs dann auch mal mit fetch_row probiert, das gibt aber jedoch nur das Ergebnis von COUNT(xxxx), welches ja nicht gewünscht ist...

Bin ich da total aufm Holzweg und es braucht eine ganz andere Herangehensweise?

Grüße,

Simon

P.S. Suche Projektpartner (StartUp) Webentwicklung
Mit Zitat antworten
  #2 (permalink)  
Alt 06-05-2013, 13:22
b1p
 Registrierter Benutzer
Links : Onlinestatus : b1p ist offline
Registriert seit: Oct 2012
Beiträge: 39
b1p befindet sich auf einem aufstrebenden Ast
Standard

GELÖST: lag nur an dem MYSQL_USE_RESULT. Weggemacht, schon funktionierts
Mit Zitat antworten
  #3 (permalink)  
Alt 06-05-2013, 15:15
b1p
 Registrierter Benutzer
Links : Onlinestatus : b1p ist offline
Registriert seit: Oct 2012
Beiträge: 39
b1p befindet sich auf einem aufstrebenden Ast
Standard

Hmm, nun komm ich trotzdem nicht weiter. Ich schaffe es inzwischen diese 3 Zeiten in einem Array zu speichern, so dass ich auf diese Zeiten zugreifen kann. Jedoch weiß ich ja nie, wieviele Ergebnisse ich geliefert bekomme, so dass ich mir nicht vorstellen kann, wie ich nun für jedes einzelnes Ergebnis ein gesondertes Query baue und das dann ausgebe.

Ich bin mal so frech und poste meine Ajax-Datei (163 Zeilen).

Bisher war es nur auf ZWEI Routen ausgelegt, weshalb ich jetzt vor dem Problem stehe, mehrere Routen miteinander zu vergleichen [z.B. Route 1 und 2 sind gleich, jedoch 2 und 3 nicht -> Warnung anzeigen(per jQ gelöst)]

PHP-Code:
<?php

require 'config.php';
include_once 
'class/Formatter.php';

$targetId $_REQUEST['tid'];
$target $_REQUEST['tname'];
$from $_REQUEST['from'];
$to $_REQUEST['to'];
    
    
//new DB connection
    
$database = @new mysqli(MYSQL_HOSTMYSQL_USERMYSQL_PWDMYSQL_DB);
    
    
//OVERALL DB Query to find out how many routes we have 
    
$general "SELECT DISTINCT S.name AS route, S.target AS targetid, S.record_time, D.id, COUNT(D.datetime) AS totalCount, D.datetime, S.ipaddress, S.average ";
    
$general .= "FROM tbl_tracert_significant S ";
    
$general .= "JOIN tbl_tracert_datetime D ON S.record_time = D.id ";
    
$general .= "JOIN tbl_tracert_target T ON S.target = T.id ";
    
$general .= "WHERE S.target = $targetId ";
    if(
$from !== 'N/A' && $to !== 'N/A' ) {
    
$general .= "AND D.datetime BETWEEN '$from' AND '$to'";
    }
    
$general .= " GROUP BY D.datetime";
    
//echo "$general <br />";
    
    
$query $database->query($general);
    
$routeCount $query->num_rows;
    
//echo "total routes: $routeCount <br />";
    
    
$time = array();
    
$k 1;
    
//generate array and fill with found datetimes
    
for($i 0$i $routeCount$i++) {
    while(
$count $query->fetch_object())
        
$time[] = $count->datetime;
        echo 
"time" $k++ . ":" $time[$i]. '<br />';
    }
    
    
//new DB connection
    
$db = @new mysqli(MYSQL_HOSTMYSQL_USERMYSQL_PWDMYSQL_DB);

    
//FIRST DB Query to get all relevant data (Route One) 
    
$sql "SELECT DISTINCT S.name AS route, S.target AS targetid, S.record_time, D.id, D.datetime, S.ipaddress, S.average ";
    
$sql .= "FROM tbl_tracert_significant S ";
    
$sql .= "JOIN tbl_tracert_datetime D ON S.record_time = D.id ";
    
$sql .= "JOIN tbl_tracert_target T ON S.target = T.id ";
    
$sql .= "WHERE S.target = $targetId ";
    if(
$from !== '' && $from !== 'N/A') { //FIXME:replace with timestamp1
    
$sql .= "AND D.datetime = '$from' ";
    } else {
    
$sql .= 'AND S.record_time = (SELECT MAX(record_time) FROM tbl_tracert_significant WHERE target = ' $targetId ') ';
    }
    
//echo "$sql <br />";
            
    
$result $db->query($sqlMYSQLI_USE_RESULT); 
    
    
//new DB connection
    
$connection = @new mysqli(MYSQL_HOSTMYSQL_USERMYSQL_PWDMYSQL_DB);
    
     
//SECOND DB Query to get all relevant data (Route Two) 
    
$statement "SELECT DISTINCT S.name AS route, S.target AS targetid, S.record_time, D.id, D.datetime, S.ipaddress, S.average ";
    
$statement .= "FROM tbl_tracert_significant S ";
    
$statement .= "JOIN tbl_tracert_datetime D ON S.record_time = D.id ";
    
$statement .= "JOIN tbl_tracert_target T ON S.target = T.id ";
    
$statement .= "WHERE S.target = $targetId "
    if(
$to !== '' && $to !== 'N/A') { //FIXME:replace with timestamp2
    
$statement.= "AND D.datetime = '$to' ";
    } else {
    
$statement .= 'AND S.record_time = (SELECT MAX(record_time) FROM tbl_tracert_significant WHERE target = ' $targetId ') ';
    }
    
//echo $statement; 
    
    
$response $connection->query($statementMYSQLI_USE_RESULT);
    
    
$route1 $result->fetch_array(MYSQLI_BOTH);
    
$route2 $response->fetch_array(MYSQLI_BOTH);
    
//$route3 = $answer->fetch_array(MYSQLI_BOTH);
    
    //table heads
    
$headPosOne '<th style="background-color: #DFF0D8 !important">Route 1# to ' $target '</th><th class="ipaddress" style="background-color: #DFF0D8 !important">IP <small>' $from .'</small></th><th class="average" style="background-color: #DFF0D8 !important">Average Time</th>'//FIXME: change to timestamp 1
    
$headNegOne '<th style="background-color: #F2DEDE !important">Route 1# to ' $target '</th><th class="ipaddress" style="background-color: #F2DEDE !important">IP <small>' $from .'</small></th><th class="average" style="background-color: #F2DEDE !important">Average Time</th>';
    
$headPosTwo '<th style="background-color: #DFF0D8 !important">Route 2# to ' $target '</th><th class="ipaddress" style="background-color: #DFF0D8 !important">IP <small>' $to .'</small></th><th class="average" style="background-color: #DFF0D8 !important">Average Time</th>'//FIXME: change to timestamp 2
    
$headNegTwo '<th style="background-color: #F2DEDE !important">Route 2# to ' $target '</th><th class="ipaddress" style="background-color: #F2DEDE !important">IP <small>' $to .'</small></th><th class="average" style="background-color: #F2DEDE !important">Average Time</th>';
    
//$headPosThree = '<th style="background-color: #DFF0D8 !important">Route 2# to ' . $target . '</th><th class="ipaddress" style="background-color: #DFF0D8 !important">IP <small>' . $timeThree .'</small></th><th class="average" style="background-color: #DFF0D8 !important">Average Time</th>';
    //$headNegThree = '<th style="background-color: #F2DEDE !important">Route 2# to ' . $target . '</th><th class="ipaddress" style="background-color: #F2DEDE !important">IP <small>' . $timeThree .'</small></th><th class="average" style="background-color: #F2DEDE !important">Average Time</th>';
    
    //check if querys return the same result
    
if($route1 === $route2) { 
    
    
//check response for being empty
    
if(empty($route1) && empty($route2)) { ?>
        <table class="table table-striped route-table empty">
        <?= $headNegOne ?>
            <tr><strong><td>No Entries found!</td><td class="ipaddress" id="ipaddress">--</td><td class="average">--</td></strong></tr>
        </table>
    <!-- else print positive table -->
<?php    } else { ?>
        <table class="table table-striped route-table positive">
        <?= $headPosOne ?>
    <?php while($row $result->fetch_object()) { ?>
        <tr><td><?= Formatter::CheckForTimeOut($row->route?></td><td class="ipaddress" id="ipaddress"><?= $row->ipaddress ?></td><td class="average"><?= Formatter::MillisecondToSecond($row->average?> ms</td></tr>

<?php          
    } 
?>
        </table>
    
<!-- check if second query returns null or empty -->
<?php  } elseif(empty($route2) || is_null($route2)) { ?>
    <span>
    <table class="table table-striped route-table negative">
        <?= $headNegOne ?>
    <?php   while($row $result->fetch_object()) { ?>
            <tr><td><?= Formatter::CheckForTimeOut($row->route?></td><td class="ipaddress" id="ipaddress"><?= $row->ipaddress ?></td><td class="average"><?= Formatter::MillisecondToSecond($row->average?> ms</td></tr>
  
<?php          ?>
    </table>
    <table class="table table-striped route-table2 negative empty">
        <?= $headNegTwo ?>
        <tr><strong><td>No Entries found!</td><td class="ipaddress" id="ipaddress">--</td><td class="average">--</td></strong></tr>
    </table>
    </span>


<!-- check if first query returns null or empty -->
<?php } elseif(empty($route1) || is_null($route1)) { ?>
        <span>
    <table class="table table-striped route-table negative empty">
        <?= $headNegOne ?>
        <tr><strong><td>No Entries found!</td><td class="ipaddress" id="ipaddress">--</td><td class="average">--</td></strong></tr>
    </table>
    <table class="table table-striped route-table2 negative">
        <?= $headNegTwo ?>
    <?php while($res $response->fetch_object()) { ?>
      <tr><td><?= Formatter::CheckForTimeOut($res->route?></td><td class="ipaddress" id="ipaddress"><?= $res->ipaddress ?></td><td class="average"><?= Formatter::MillisecondToSecond($res->average?> ms</td></tr>
  
<?php          ?>
    </table>
    </span>

<!-- Routes differ, so show both routes -->
<?php } else { ?>
    <span>
        <table class="table table-striped route-table negative">
        <?= $headNegOne ?>
        <?php   while($row $result->fetch_object()) { ?>
                <tr><td><?= Formatter::CheckForTimeOut($row->route?></td><td class="ipaddress" id="ipaddress"><?= $row->ipaddress ?></td><td class="average"><?= Formatter::MillisecondToSecond($row->average?> ms</td></tr>

    <?php          ?>
        </table>
        <table class="table table-striped route-table2 negative">
        <?= $headNegTwo ?>
        <?php while($res $response->fetch_object()) { ?>
        <tr><td><?= Formatter::CheckForTimeOut($res->route?></td><td class="ipaddress" id="ipaddress"><?= $res->ipaddress ?></td><td class="average"><?= Formatter::MillisecondToSecond($res->average?> ms</td></tr>

    <?php          ?>
        </table>
    </span>

<?php    }  
    
    
$database->close();
    
$connection->close(); 
    
$db->close();?>
Bin für jede/n Kritik, Hinweis, Tip, Wegweiser dankbar!

P.S. könnte ein Mod netterweise das Thema ins PHP Developer Forum verschieben?

Geändert von b1p (06-05-2013 um 15:31 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysqli num_rows Marcoru PHP Developer Forum 1 18-12-2012 07:46
$num_rows verpacken escape PHP Developer Forum 3 01-06-2006 08:23
result = mysql_query(UPDATE.. --> ergibt immer 1 Daniela SQL / Datenbanken 3 09-02-2006 13:27
meine sql-abfrage ergibt ein sehr seltsames result sandra2000 SQL / Datenbanken 5 12-01-2005 13:18
Fehler mit num_rows netleader PHP Developer Forum 6 29-01-2003 16:03

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:53 Uhr.