kostenloser Webspace werbefrei: lima-city


Where ohne Wirkung?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pantherstyle

    pantherstyle hat kostenlosen Webspace.

    Hallo liebe Leute,
    erneut eine Frage für die ich mich eigentlich schämen müsste, aber ich komme par-tout nicht auf den Dreh was ich falsch mache und Google ist leider wenig hilfreich. Das Phänomen ist, dass die beiden SQL Befehle die gleiche Menge an Daten aus der Datenbank ziehen, nämlich die Gesamtmenge der verfügbaren Daten (30). Ich habe entsprechend die Daten überprüft, wieviele Daten auf die Kriterien explizit zutreffen und kam dabei auf 12 Datensätze (per phpmyadmin identischer Suchstring).

    SELECT * FROM finalSteuertabelle WHERE klasse = 'Datenbank' AND modul ='Verarbeitung' AND funktion='erstelleExport'
    SELECT * FROM finalSteuertabelle

    Hier eine Testimplementierung die das falsche Resultat liefert:
    $array = mysql_fetch_array(mysql_query("SELECT * FROM finalSteuertabelle WHERE klasse = 'Datenbank' AND modul ='Verarbeitung' AND funktion='erstelleExport'"));
    return count($array);


    Ich hoffe, dass die Lösung nicht zu trivial ist ^^
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    versuchsmal mit diesen obenstrichen: `
    SELECT * FROM `finalSteuertabelle` WHERE `klasse` = 'Datenbank' AND `modul` ='Verarbeitung' AND `funktion`='erstelleExport'

    hast du schon die schreibung 1zu1 abgeglichen. ich vertipp mich oft, sodass in der datenbank vllt modlu steht oder so, dann gehts natürlich auch nicht. aber eig wenn es im phpmyadmin geht, hmm...

    probiers mal mit den tüttelchen. die machst du wenn du umschalt gedrückt hälst und dann 2 mal die taste links neben backspace drückst. eventuell ist das hier kritisch. n versuch ists wert :-D
    sonst klick dir die abfrage mal im PHPmyAdmin zusammen und kopiere 1zu1 die von dort. die sollte eig immer funzn

    liebe grüße =)
  4. Autor dieses Themas

    pantherstyle

    pantherstyle hat kostenlosen Webspace.

    Der String ist fehlerfrei, da er in meinem Script automatisiert erstellt wird (ich weiß leider etwas anmaßend). Die Gegenprüfung mit phpMYAdmin lieferte das Korrekte Ergebnis von 12 Datensätzen, leider das Programm selbst nicht. Der String muss demnach korrekt sein.
  5. g****e

    versuchs mal so:

    mysql_query( " SELECT * FROM `finalSteuertabelle` WHERE `klasse` = 'Datenbank' AND `modul` ='Verarbeitung' AND `funktion`='erstelleExport' " );
    echo mysql_errno() .' : '. mysql_error();


    ansonsten mal was anderes:
    du sagst du kriegst 12 datensätze. gehst du die denn direkt mit
    $array = mysql_fetch_array(mysql_query("SELECT * FROM finalSteuertabelle WHERE klasse = 'Datenbank' AND modul ='Verarbeitung' AND funktion='erstelleExport'"));

    an?
    wie wäre es sonst hiermit:

    $res = mysql_query("SELECT * FROM finalSteuertabelle WHERE klasse = 'Datenbank' AND modul ='Verarbeitung' AND funktion='erstelleExport'");
    while ($array = mysql_fetch_array($res) ) {
    print_r($array); 
    }

    normalerweise geht man das ganze mit ner while schleife durch. die res würd ich hier aber aus performance gründen auslagern, sonst werden das zu viele anfragen glaub ich, bin aber nciht ganz sicher.

    Beitrag zuletzt geändert: 30.3.2011 10:49:44 von ggamee
  6. Autor dieses Themas

    pantherstyle

    pantherstyle hat kostenlosen Webspace.

    Ich habe festgestellt, dass in dem jeweiligen Array jeweils 30 Datensätze angegeben werden, obwohl tatsächlich nur 12 enthalten waren (Freigeräumte Parzellen im Speicher?). Folgender Code funktioniert jedenfalls, wobei ich mir nicht sicher bin, ob er sehr performant ist, oder es evtl. bessere Lösungsmöglichkeiten gibt.

    Hier der Code für andere Dumme wie mich mit dem selben Problem:
    function GetTotalAmount() { 
    		$count;
    		$filterQuery = " klasse = '".$_SESSION['currentClass']."' AND modul ='".$_SESSION['currentModul']."' AND funktion='".$_SESSION['currentFunktion']."'";
    		$resource = $this->GetSpecificData($filterQuery, null, null, null, null, null, null, null);
    		while(mysql_fetch_row($resource)) $count ++;
    		return $count;
    	}

  7. http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

    Beitrag zuletzt geändert: 30.3.2011 15:51:48 von fabo
  8. Versuch es einmal mit mysql_num_rows(). count($array) müsste ja die Anzahl der enthaltenen Datenbankfelder liefern, nicht die der Datensätze.
  9. Autor dieses Themas

    pantherstyle

    pantherstyle hat kostenlosen Webspace.

    Danke soweit, es funktionieren beide Ansätze prächtig. Obwohl ich mich selbst etwas schäme, dass ich das Count(*) vollkommen vergessen habe^^
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!