tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
282
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Ich habe mehrere Arrays, hier im Beispiel 4 mit verschiedenen Einträgen.
    Wie kann ich diese summieren, so dass wie hier im Beispiel als Summe 15 heraus kommt?

    Mit sum(), count(), sum_array() usw. komme ich hier nicht weiter...

    Array
    (
    [0] => 2
    )

    Array
    (
    [0] => 6
    )

    Array
    (
    [0] => 4
    )

    Array
    (
    [0] => 3
    )
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    Hi

    sind die Array selber Elemente eines Arrays?
    Oder passen sie irgendie wurch den Namen zusammen?
    Dann mach eine Schleife.

    Sonst geht nur a+b+c+d+...
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Oder mit einem array_merge() zusammenziehen und mit array_sum() die Summe bilden
    PHP-Code:
    $a = Array(=> 2);
    $b = Array(=> 6);
    $c = Array(=> 4);
    $d = Array(=> 3);

    echo 
    array_sum(array_merge($a$b$c$d)); 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Hier mal mein Konstrukt vereinfacht:
    Ich treffe eine Kundenvorauswahl in der ersten Abfrage, um in der zweiten die KFZ des jeweiligen aufzulisten.
    PHP-Code:
    <?PHP
    foreach ($_POST['auswahl'] as $nummern) {
     
    $sb mysql_query("SELECT KDNR FROM ".$kunden." WHERE KDNR = '".$nummern."');
     
    $zeile  = mysql_fetch_array($sb);

     
    $kfzz   = mysql_query("SELECT AMTKZ FROM ".$kfz." WHERE KDNR '".$zeile['KDNR']."'");
     
    $anz_kfz = mysql_num_rows($kfzz);
     echo "
    <pre>". print_r($anz_kfz, true) ."</pre>";
    }
    ?>
    Ausgabe hier:
    2

    6

    4

    3

    wenn ich es so mache:
    PHP-Code:
    <?PHP
    foreach ($_POST['auswahl'] as $nummern) {
     
    $sb mysql_query("SELECT KDNR FROM ".$kunden." WHERE KDNR = '".$nummern."');
     
    $zeile  = mysql_fetch_array($sb);

     
    $kfzz   = mysql_query("SELECT AMTKZ FROM ".$kfz." WHERE KDNR '".$zeile['KDNR']."'");
     
    $anz_kfz = mysql_num_rows($kfzz);
     
    $anz_kfz = array($anz_kfz);
     echo "
    <pre>". print_r($anz_kfz, true) ."</pre>";
    }
    ?>
    hab ich folgende Ausgabe:
    Array
    (
    [0] => 2
    )

    Array
    (
    [0] => 6
    )

    Array
    (
    [0] => 4
    )

    Array
    (
    [0] => 3
    )

    Das entspricht der Anzahl der jeweils zugehörigen Einträge (KFZ), wo ich die Summe benötige.

    Und jetzt stelle ich mich an
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du hast da eine Fehlüberlgung drin. Du machst für jeden die Anzahl in einen eigenen Array und überschreibst den alten Wert.

    Du hast 2 möglichkeiten.
    Die einfachere: Du fügst diene Werte einem Array hinzu und summierrst am schluss
    PHP-Code:
    //Array initialisieren
    $kfz = array();
    foreach (
    $_POST['auswahl'] as $nummern) {
        
    $sb mysql_query("SELECT KDNR FROM ".$kunden." WHERE KDNR = '".$nummern."'");
        
    $zeile  mysql_fetch_array($sb);

        
    $kfzz   mysql_query("SELECT AMTKZ FROM ".$kfz." WHERE KDNR = '".$zeile['KDNR']."'");
        
    $anz_kfz mysql_num_rows($kfzz);
        
    //Die Anzahl dem Array hinzufügen
        
    $kfz[] = $anz_kfz;
    }
    //Summe bilden
    $countarray_sum($kfz);

    Oder aber schöner, du packst alles in ein sauberes Query.
    Wobei ich gerade sehe, dass du das erste Query gar nicht brauchst, da $zeile['KDNR'] immer gleich $nummern ist.

    Ist KDNR eine Nummer? Sollte -also ohne die ' im SQL schreiben

    Auf alle Fälle kannst du das mit einem einzigen DB-Aufruf machen was besser für die Performance ist.
    Das Query
    Code sql:
    1
    2
    3
    4
    5
    6
    
    SELECT 
        COUNT(*) AS cnt 
    FROM 
        {$kfz} 
    WHERE
        KDNR IN ({$nummerList});
    Und in PHP umgesetzt
    PHP-Code:
    $nummerList implode(', '$_POST['auswahl']);
    $sql "
    SELECT COUNT(*) AS cnt 
    FROM 
    {$kfz} 
    WHERE KDNR IN (
    {$nummerList});
    "
    ;
    $result mysql_fetch_array($sql);
    $count mysql_result($result0); 
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Hast natürlich Recht, zweimal Kundennummer abfragen ist Unsinn.
    Hab es jetzt so:
    PHP-Code:
    <?PHP
    foreach ($_POST['auswahl'] as $nummern) {
     
    $kfzz    mysql_query("SELECT AMTKZ FROM ".$kfz.
     Inner Join "
    .$kunden." ON ".$kunden.".KDNR = ".$kfz.".KDNR
     WHERE "
    .$kfz.".KDNR = '".$nummern."' ");
     
     while (
    $kfz_zeile  mysql_fetch_array($kfzz)) {
      echo 
    $kfz_zeile['AMTKZ'].'<br>';
     }
    }
    echo 
    count($_POST['auswahl']);
    ?>
    Die Foreach Schleife wird im Beispiel 4 mal durchlaufen (4 Kunden), und die While Schleife 15 mal (15 KFZ).

    Jetzt habe ich es anders, aber immer noch nicht richtig!
    Wie komme ich an die 15?
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Dein Count() auf die Eingaebparamter bringt jetzt aber wirklich nix. Ich habe dir 2 Ansätze geliefert. Versuche einen von beiden Umzusetzen und du hast deine Summe.
    Am einfachsten du nimmst mein erstes Besipiel und deine jetztiges Script und kombinierst. Alle wichtigen Punkte zur Zählung sind dort mit Kommentaren versehen.
    Also, los von Rom!
    Registrierer bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    Registrierer Registrierer ist offline Mitglied Gold
    Registriert seit
    Mar 2009
    Beiträge
    171
    Heureka!
    Danke.
     

Ähnliche Themen

  1. Summe
    Von Flooow im Forum PHP
    Antworten: 5
    Letzter Beitrag: 30.05.11, 23:08
  2. Summe PHP aus Array
    Von thejoyride im Forum PHP
    Antworten: 3
    Letzter Beitrag: 30.03.10, 10:53
  3. Summe der Zahlen aus dem Array
    Von son gohan im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.08.06, 23:10
  4. summe aus array in einem Formularfeld
    Von skyhi im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 07.01.05, 11:59
  5. Summe
    Von Shooter2k im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 27.04.03, 17:25