AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Array mit einer Art Index ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Array mit einer Art Index ansprechen

Ein Thema von Matze · begonnen am 12. Apr 2006 · letzter Beitrag vom 12. Apr 2006
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:38
Hi,

ich muss mal wieder ein wenig mit PHP nerven. Im Folgenden ist ein Code-Ausschnitt zu sehen. Dort benötige ich in der foreach-Schleife den Wert der Spalte 'prod_img' aus dem $arr_products_single_data-Array mit der zugehörigen 'prod_id'.

Das Array sieht so aus (es wird später deutlich mehr Einträge enthalten):

Code:
Array ( [prod_id] => 14 [prod_img] => product_1.jpg )
Anhand der 'prod_id', die ich habe, möchte ich nun auf diesen Array-Eintrag zugreifen können, nur weiß ich absolut nicht, wie ich das bewerkstelligen soll. Schön wäre natürlich etwas wie

Code:
$arr_products_single_data[14]
Natürlich geht es so nicht, da sist klar. Und das Array kann ich nicht ändern, das muss so aufgebaut sein, wie es aktuell der Fall ist.

Hier nun der Code. Mein Problem liegt in der Zeile, in der ich 'IMAGE' das Bild zuweisen muss:

Code:
[color=#11117F]$arr_products_single_data[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT prod_id, prod_img FROM "[/color] .
   [color=#11117F]PRODUCTS_DATA[/color] . [color=#E60000]" WHERE prod_cat_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$id[/color]), 0);
   
[color=#11117F]$arr_products[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT id, prod_title, prod_subtitle,
   prod_short_desc FROM "[/color] . [color=#11117F]PRODUCTS[/color] .
    [color=#E60000]" WHERE id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$arr_products_single_data[/color][[color=#E60000]'prod_id'[/color]]) .
   [color=#E60000]" AND lang_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$site_lang[/color][[color=#E60000]'id'[/color]]));
                
[color=#11117F]$prod_cat[/color] = [color=#11117F]get_sql_array[/color]([color=#E60000]"SELECT id, prod_cat_title,
   prod_cat_description FROM "[/color] . [color=#11117F]PRODUCT_CATEGORIES[/color] . [color=#E60000]" WHERE id = "[/color] .
   [color=#11117F]sqlval[/color]([color=#11117F]$id[/color]) . [color=#E60000]" AND lang_id = "[/color] . [color=#11117F]sqlval[/color]([color=#11117F]$site_lang[/color][[color=#E60000]'id'[/color]]), 0);

[color=#FFA200]// show each product[/color]
[color=#2B8E10]foreach[/color] ([color=#11117F]$arr_products as $product[/color])
{
   [color=#11117F]$template[/color]->[color=#11117F]set_block[/color]([color=#E60000]'products_overview'[/color], [color=#2B8E10]array[/color](
      [color=#E60000]'IMAGE'[/color] => [color=#FFA200]// <== Hier ;-)[/color]
      [color=#E60000]'TITLE'[/color] => [color=#11117F]$product[/color][[color=#E60000]'prod_title'[/color]],
      [color=#E60000]'SUBTITLE'[/color] => [color=#11117F]$product[/color][[color=#E60000]'prod_subtitle'[/color]],
      [color=#E60000]'SHORT_DESC'[/color] => [color=#11117F]nl2br[/color]([color=#11117F]$product[/color][[color=#E60000]'prod_short_desc'[/color]]),
      [color=#E60000]'PROD_LINK'[/color] => [color=#11117F]$config_main[/color][[color=#E60000]'domain'[/color]] . [color=#E60000]'index.php?page=product_show&amp;id='[/color] .
         [color=#11117F]$product[/color][[color=#E60000]'id'[/color]] . [color=#11117F]$link_lang_param[/color]
      )
   );
}
Ich könnte natürlich auch die SQL-Abfrage für 'prod_img' in die Schleife packen, doch ist das ganze dann nicht mehr so performant, denke ich mal, wenn ich hunderte EInträge in der Datenbank habe. Wie würdet ihr das lösen?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:40
Hmm...mit einer Schleife:
Code:
$newar = array();
foreach ($ar as $id => $val)
{
  $newar[$id] = $val;
}


Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:41
Hi

Zitat von alcaeus:
Hmm...mit einer Schleife
Meinst du nicht, dass das Ganze dann sehr langsam wird?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:47
Zitat von Matze:
Hi

Zitat von alcaeus:
Hmm...mit einer Schleife
Meinst du nicht, dass das Ganze dann sehr langsam wird?
Nicht wirklich; um wieviel Datensaetze geht es denn?

Ausserdem hatte mein Code einen Fehler
Code:
$newar = array();
for ($i = 0, $count = count($ar); $i < $count; $i++)
{
  $newar[$ar[$i]['prod_id']] = $ar[$i];
}
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:49
Zitat von alcaeus:
Nicht wirklich; um wieviel Datensaetze geht es denn?
Wie viele produkte die Firma anbietet weiß ich nicht. Angenommen, es wären 10000 (so viele werden es wohl nicht sein, denke ich), dann wäre eine SQL-Abfrage vielleicht doch geeigneter, sonst habe ich ja gigantische Arrays. Aber wenn ich ständig DB-Abfragen schicke, ist das vielleicht auch nicht so der Hit
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:51
Zitat von Matze:
Wie viele produkte die Firma anbietet weiß ich nicht. Angenommen, es wären 10000 (so viele werden es wohl nicht sein, denke ich), dann wäre eine SQL-Abfrage vielleicht doch geeigneter, sonst habe ich ja gigantische Arrays. Aber wenn ich ständig DB-Abfragen schicke, ist das vielleicht auch nicht so der Hit
Definitiv nicht. Ausserdem bezweifle ich, dass alle 10000 Datensaetze auf einmal angezeigt werden muessen, oder auch nur auf die Art und Weise benoetigt werden. Das waere ja mal ein Krasser Produktkatalog

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:53
Zitat von alcaeus:
Ausserdem bezweifle ich, dass alle 10000 Datensaetze auf einmal angezeigt werden muessen, oder auch nur auf die Art und Weise benoetigt werden. Das waere ja mal ein Krasser Produktkatalog
*rofl* Ne, da kommt schon noch eine Pagination rein, doch wie ich es gerade habe, müsste ich immer alle Datensätze in das Array einlesen. Irgendwie ne blöde Lösung. *g*
Wenn das mit der Datenbank wirklich nichts ausmacht (Ich möchte keine Page-Gen-Time über 0.006 Sekunden, die gefallen mir grad so ), dann werde ich das so machen, danke.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 14:56
Zitat von Matze:
Wenn das mit der Datenbank wirklich nichts ausmacht (Ich möchte keine Page-Gen-Time über 0.006 Sekunden, die gefallen mir grad so ), dann werde ich das so machen, danke.
Wie meinen? Der Datenbank macht dein zweites Array gewiss nichts aus. Anschliessend kommt es ja nur noch auf die Anzahl der Felder pro Row an...evtl. koennte das Script etwas viel Speicher benoetigen. Aber mal ehrlich, auch wenn du ne Pagination hast wirst du wohl kaum alle 10000 Artikel auf einmal benoetigen? Ich sag nur
LIMIT Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 15:04
Ja, das ist mir klar. Würde ich es mit einer Datenbankabfrage lösen, kann ich ja direkt in der foreach-Schleife 'prod_img' ermitteln. Dann habe ich halt pro Schleifen durchlauf nochmals eine Datenbankabfrage. Wenn das nichts ausmacht (ich habe keine Ahnung, wie robust so 'ne Datenbank ist), dann ist das wohl die beste möglichkeit. LIMIT kommt dann zur Abfrage von $arr_products, das würde dann eigentlich passen.
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#10

Re: [PHP] Array mit einer Art Index ansprechen

  Alt 12. Apr 2006, 18:40
Ähm, bitte keine Datenbankabfragen (zumindest keine SELECTs) in Schleifen, das ist nicht gut... Verbinde die verschiedenen Tabellen mit JOINs.
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz