tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
146
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xtramen01 xtramen01 ist offline Mitglied Brokat
    Registriert seit
    Mar 2008
    Beiträge
    292
    Hallo leute,

    ich habe ein Problem mit der Bildung eines Arrays.
    Ich benötige das Array in folgender Form:

    Code :
    1
    2
    3
    4
    5
    
    Array ( [0] => Array ( [products_price_break_id] => 138 [products_id] => 28 [products_price] => 3.0000 [products_qty] => 1 [products_options_values_id] => 5 ) ) 
     
    Array ( [1] => Array ( [products_price_break_id] => 139 [products_id] => 28 [products_price] => 4.0000 [products_qty] => 2 [products_options_values_id] => 6) ) 
     
    Array ( [2] => Array ( [products_price_break_id] => 140 [products_id] => 28 [products_price] => 5.0000 [products_qty] => 3 [products_options_values_id] => 7 ) )

    Wie bilde ich so ein Array?
    Ich habe schon alles versucht, bin aber mit meinem Latein am Ende.
    Hier mein letzter Versuch.

    PHP-Code:
            $price_breaks_array = array();
            
    $pov tep_get_pov($_GET['products_id'], $languages_id);

            for (
    $i=0$n=sizeof($pov); $i<$n$i++) {

            
    $price_breaks_query tep_db_query("select * from " TABLE_PRODUCTS_PRICE_BREAK "

            where products_id = '" 
    . (int)$product_id "'
            and products_options_values_id = '"
    .$pov[$i]['products_options_values_id']."'
            order by products_qty"
    );

            while (
    $price_break tep_db_fetch_array($price_breaks_query)) {
              
    $price_breaks_array[$i] = $price_break;

            }
            echo 
    print_r($price_breaks_array).'<br><br>';
            } 
    Wäre wirklich sehr dankbar wenn mal einer drüberschauen könnte.

    Gruss
    Geändert von xtramen01 (23.07.10 um 14:12 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    die schleife ohne $i, denn $i bleibt immer gleich und somit überschreibst du immer den gleichen Eintrag
    PHP-Code:
            while ($price_break tep_db_fetch_array($price_breaks_query)) {
              
    $price_breaks_array[] = $price_break;
            } 
     
    ---------------------------------------------------------------------------------------------------
    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

  3. #3
    xtramen01 xtramen01 ist offline Mitglied Brokat
    Registriert seit
    Mar 2008
    Beiträge
    292
    Ok Danke. Aber so hatte ich es auch schon probiert.
    Ich mach mal ein anderes Beispiel das es hoffentlich genauer beschreibt was nicht klappt.

    Ich habe die besagte Abfrage:

    PHP-Code:
            $price_breaks_array = array();
            
    $pov tep_get_pov($_GET['products_id'], $languages_id);

            for (
    $i=0$n=sizeof($pov); $i<$n$i++) {

                 echo 
    $pov[$i]['products_options_values_name'] . '<br>';

                 
    $price_breaks_query tep_db_query("select * from " TABLE_PRODUCTS_PRICE_BREAK " where products_id = '" . (int)$product_id "' and products_options_values_id = '".$pov[$i]['products_options_values_id']."' order by products_qty");

                     while (
    $price_break tep_db_fetch_array($price_breaks_query)) {

                        echo 
    $price_break['products_qty'] . '<br>';

                      }

            } 
    Welche mir folgendes RICHTIGES ausgibt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Name 1
      1
      2
      3
    Name 2
      5
      6
      7
    Name 3
    Name 4

    Die echos die da stehen sind nur zum testen ob die Abfrage richtig ist.
    Nun muss ich das Array an einer anderen Stelle genau so ausgeben lassen.

    Das versuche ich mit folgender selben Abfrage, nur halt am Schluss das Array gebildet:

    PHP-Code:
    $price_breaks_array = array();
            
    $pov tep_get_pov($_GET['products_id'], $languages_id);

            for (
    $i=0$n=sizeof($pov); $i<$n$i++) {
            
    $price_breaks_query tep_db_query("select * from " TABLE_PRODUCTS_PRICE_BREAK " where products_id = '" . (int)$product_id "' and products_options_values_id = '".$pov[$i]['products_options_values_id']."' order by products_qty");

            while (
    $price_break tep_db_fetch_array($price_breaks_query)) {
              
    $price_breaks_array[$i][] = $price_break;

            }
            } 
    Und ausgeben lassen tue ich es mit:

    PHP-Code:
     $pov tep_get_pov($_GET['products_id'], $languages_id);
           for (
    $i=0$n=sizeof($pov); $i<$n$i++) {

           echo 
    $pov[$i]['products_options_values_name']. '<br>';

               foreach(
    $price_breaks_array as $price_break) {

               echo 
    $price_break[$i]['products_qty'].'<br>';

               }
           } 
    Als Ergebniss bekomme ich:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Name 1
      1
      5
    Name 2
      2
      6
    Name 3
      3
      7
    Name 4

    Das Array ist also irgendwie falsch gebildet.
    Also anders wie in der eigentliche Abfrage.

    hast Du eine Idee, warum das nicht klappen kann?

    Gruss und Danke !
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    In der Ausgabe hast du mMn das $i am falschen Ort. So sollte es glaub aussehen

    PHP-Code:
               foreach($price_breaks_array[$i] as $price_break) {
                   echo 
    $price_break['products_qty'].'<br>';
               } 
     
    ---------------------------------------------------------------------------------------------------
    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

  5. #5
    xtramen01 xtramen01 ist offline Mitglied Brokat
    Registriert seit
    Mar 2008
    Beiträge
    292
    Boahhh!!
    Das klappt tatsächlich!

    Ich hätte mir Stunden ersparen können.

    Danke dir recht herzlich!

    Gruss
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 22.06.10, 17:20
  2. array_intersect mit mehrdimensionalem Array
    Von jaegerschnitzel im Forum PHP
    Antworten: 5
    Letzter Beitrag: 20.06.08, 09:39
  3. Antworten: 1
    Letzter Beitrag: 20.02.06, 11:44
  4. Problem mit mehrdimensionalem Array
    Von timäää im Forum Flash Plattform
    Antworten: 8
    Letzter Beitrag: 15.08.05, 13:57
  5. Antworten: 7
    Letzter Beitrag: 25.04.04, 19:07