Schleife Datenbankabfrage

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Dagtor
Mitglied
Beiträge: 36
Registriert: 11.07.2008 00:12
Wohnort: Bamberg

Schleife Datenbankabfrage

Beitrag von Dagtor »

Ich brauche mal wieder hilfe....

Ich würde gerne eine abfrage mit verschieden Werten verschiedener Datensätze starten...
Da ich aber noch vor der Übergabe ans Template mit den Daten einige berechnungen anstellen möchte, will ich die einzelnen Daten als Variablen hochzählen lassen...
Am ende werden je 6Verschiedene Daten pro Datensatz von bis zu 30 Datensätzen abgefragt.

Hier mal meine (stümperhafte) idee, die nicht funktioniert, stark vereinfacht auf 2 Daten pro Satz reduziert...

PHP-Datei:

Code: Alles auswählen

		$sql = "SELECT *
			FROM " . TVP_UNIT_TABLE . '
			WHERE tvp_unit_user = ' . (int) $user_id . '
			ORDER BY tvp_unit_date DESC';
   			$result = $db->sql_query($sql);

		while ($row = $db->sql_fetchrow($result))
		{

       		$titel_var[]	= $row['tvp_unit_titel'];
       		$date_var[]	=> $row['tvp_unit_date'];
        		
		}
		$db->sql_freeresult($result);
Jetzt würde ich gerne dies und das berechnen:
Dies sollte dann so aussehen:

Code: Alles auswählen

$titel_var[0] mache dies und jenes
          $titel_var[1] mache dies und jenes
          $titel_var[2] mache dies und jenes
          $date_var[0] mache dies und jenes
          $date_var[1] mache dies und jenes
          $date_var[2] mache dies und jenes
und am ende wirds ganz normal ans Template übergeben:

Code: Alles auswählen

			'TITEL_VAR0'	 		=> $titel_var[0],
			'TITEL_VAR1'	 		=> $titel_var[1],
			'TITEL_VAR2'	 		=> $titel_var[2],
			'DATE_VAR0'	 		=> $date_var[0],
			'DATE_VAR1'	 		=> $date_var[1],
			'DATE_VAR2'	 		=> $date_var[2],
So hatte ich mir das zumindest vorgestellt...
Versteht ihr was ich meine???
Ich wäre euch wieder einmal sehr dankbar für eure unterstützung...
Sport ist ein Privileg der Landlosen
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Schleife Datenbankabfrage

Beitrag von oxpus »

Hallo,

das geht alles in einer Abfrage direkt mit der While-Schleife:

Code: Alles auswählen

		$sql = "SELECT * FROM " . TVP_UNIT_TABLE . '
		   WHERE tvp_unit_user = ' . (int) $user_id . '
		   ORDER BY tvp_unit_date DESC';
		$result = $db->sql_query($sql);
		
		while ($row = $db->sql_fetchrow($result))
		{
			$titel_tmp = $row['tvp_unit_titel'];
			$date_tmp = $row['tvp_unit_date'];
			
			// Hier die Berechnungen/Bearbeitungen rein
			$titel_tmp = ...;
			$date_tmp = ...;
			// Berechnung/Bearbeitung ENDE
			
			$template->assign_block_vars('tvp_row', array(
				'TITEL_VAR' => $titel_tmp,
				'DATE_VAR'	=> $date_tmp,
			));
		}
		$db->sql_freeresult($result);
Und im Template hast du dann diesen Block für die Darstellung zur Verfügung (mal ohne HTML-Tags):

Code: Alles auswählen

<!-- BEGIN tvp_row -->
{tvp_row.TITEL_VAR}
{tvp_row.DATE_VAR}
<!-- END tvp_row -->
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Dagtor
Mitglied
Beiträge: 36
Registriert: 11.07.2008 00:12
Wohnort: Bamberg

Re: Schleife Datenbankabfrage

Beitrag von Dagtor »

Hallo Oxpus,

danke für deine Antwort...

Ich bin mir jetzt nicht ganz Sicher ob Du mich ganz richtig verstanden hast...
Ich muss an die Daten ran und die bearbeiten. Da ich nicht 30 Einzelne Datenbankabfragen schreiben will, die zudem (vermutlich) eine hohe Belastung darstellen würde, möchte ich alle Daten aus den "$row"[-arrays] (Das sind doch letztlich arrays???) einzeln extrahieren. Und am ende auch Einzeln bearbeiten und Einzeln ans Template senden...

Ich habe mir deinen Vorschlag etwas umgebaut. Vielleicht veranschaulicht er noch mal etwas mehr wo ich hin will. Immerhin gibts schon mal keine weisse Seite! Allerdings werden nur die ersten drei Buchstaben der Daten aus der Variable "$titel_temp1" ausgegeben. Nach einer Überprüfung kann ich immerhin auch behaupten das wenigstens diese 3Buchstaben schon einmal korrekt wären...

Hier also mein neuer Code:

Code: Alles auswählen

      $sql = "SELECT * FROM " . TVP_UNIT_TABLE . '
         WHERE tvp_unit_user = ' . (int) $user_id . '
         ORDER BY tvp_unit_date ASC';
      $result = $db->sql_query($sql);
      
      while ($row = $db->sql_fetchrow($result))
			{
			$titel_tmp 		= $row['tvp_unit_titel'];
			
			
			
			$titel_tmp1 	= $titel_tmp[0];
			$titel_tmp2 	= $titel_tmp[1];
			$titel_tmp3 	= $titel_tmp[2];
			
			
			
         
         $template->assign_vars(array(
			'TITEL_VER1'	 		=> $titel_tmp1,
			'TITEL_VER2'	 		=> $titel_tmp2,
			'TITEL_VER3'	 		=> $titel_tmp3,
         ));
      }
      $db->sql_freeresult($result);

Ich hoffe das dies überhaupt möglich ist?! Ich bin leider kein Berufsprogramierer oder Semiprofessioneler wie ihr es seid. Deshalb bin ich auf eure Hilfe angewiesen...


Edit:

Ich habe die gerade beschriebene abfrage wie folgt geändert:

Diesen Teil:

Code: Alles auswählen

$titel_tmp 		= $row['tvp_unit_titel'];
habe ich so geändert:

Code: Alles auswählen

$titel_tmp 		= explode(',', $row['tvp_unit_titel']);
Jetzt erhalte ich immerhin schon den Kompleten Spalteninhalt....
Aber es werden immer noch nicht die folgenden 2 Daten angezeigt/verarbeitet/bereit gestellt...?!?!?:

Code: Alles auswählen

			$titel_tmp2 	= $titel_tmp[1];
			$titel_tmp3 	= $titel_tmp[2];
Sport ist ein Privileg der Landlosen
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Schleife Datenbankabfrage

Beitrag von oxpus »

Hallo,

da ich ja nun nicht weis, wie die Daten in der Tabelle gespeichert sind und wie sie bearbeitet werden sollen, hatte ich alles zusammen in eine Abfrage gepackt.
Es lassen sich ja auch mehrere Tabellen miteinander in einer Abfrage aus der Datenbank holen, sofern sie logisch miteinander verknüpft werden können.
Auch dann wäre in der von mir genannten Möglichkeit die Bearbeitung in einer Schleife möglich.

Aber wie gesagt:
Solange ich nicht genau weiss, welche Daten du woher holen willst und wie diese zu bearbeiten sind, kann man hier nur raten...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“