Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4901 > unrolled thread

while

Started bySigbert Helle <pc@sigbert.de>
First post2023-02-12 17:37 +0100
Last post2023-02-12 17:23 +0000
Articles 2 — 2 participants

Back to article view | Back to de.comp.lang.php


Contents

  while Sigbert Helle <pc@sigbert.de> - 2023-02-12 17:37 +0100
    Re: while Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2023-02-12 17:23 +0000

#4901 — while

FromSigbert Helle <pc@sigbert.de>
Date2023-02-12 17:37 +0100
Subjectwhile
Message-ID<k4siu1FbotdU1@mid.individual.net>
Hallo Leute,
mir fehlt mal wieder die richtige Idee:
Aus einer Datenbank lese ich Datensätze aus und will die Anzahlen 
wissen, die zu bestimmten Jahren gehören. Das klappt auch:
========
$Jahr = 1827;
while($Jahr < 1913)
{
		$statement = $daba->prepare("SELECT COUNT(*) AS anzahl FROM lit1 WHERE 
Jahr = $Jahr");
		$statement->execute();
		$row = $statement->fetch();
		if ($row['anzahl'] > 0)
		{
			echo "<span class=\"wichtig\">".$Jahr.": </span>";
			echo "<span class=\"wichtig\">".$row['anzahl']."</span><br />";
		}
		$Jahr++;
}
============
In einem Verzeichnis liegen zu jedem Datensatz passende Dateien, deren 
Namen sich aus den IDs herleiten, also z.B. 564.jpg, 564-D.pdf etc.
Ich bräuchte nun zu jedem Jahr die Anzahl der Datensätze, zu denen solch 
eine (oder mehrere) Datei(en) existieren. Die Anzahl der Dateien selbst 
interessiert mich nicht.
Ich hab rumexperimentiert mit while($ID > 0) komme da aber nicht weiter. 
Also konkreter: Welche while-Schleife muss ich wo in die obere Schleife 
einbauen? Oder ist dieser Ansatz schon Blödsinn?

Gruß
Sigbert

[toc] | [next] | [standalone]


#4902

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2023-02-12 17:23 +0000
Message-ID<1t63e91ecci18c9b8n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4901
On Sun, 12 Feb 2023 17:37:22 Sigbert Helle wrote:
> Aus einer Datenbank lese ich Datensätze aus und will die Anzahlen 
> wissen, die zu bestimmten Jahren gehören. Das klappt auch:
> ========
> $Jahr = 1827;
> while($Jahr < 1913)
> {
>                $statement = $daba->prepare("SELECT COUNT(*) AS anzahl FROM lit1 WHERE 
> Jahr = $Jahr");
>                $statement->execute();
>                $row = $statement->fetch();
>                if ($row['anzahl'] > 0)
>                {
>                        echo "<span class=\"wichtig\">".$Jahr.": </span>";
>                        echo "<span class=\"wichtig\">".$row['anzahl']."</span><br />";
>                }
>                $Jahr++;
> }
> ============

Das ist zwar jetzt nicht Deine Frage, aber ich würde das
(teure) SQL-Statement nicht in einer Schleife ausführen, sondern
statt dessen die WHILE-Bedingung als GROUP formulieren; ungetestet:

#v+
$statement = $daba->prepare("SELECT Jahr, COUNT(*) AS anzahl FROM
lit1 GROUP BY Jahr ORDER BY Jahr");
#v-

Iterieren kannst Du dann auch (billig) über die Ergebnisse.

> In einem Verzeichnis liegen zu jedem Datensatz passende Dateien,
> deren Namen sich aus den IDs herleiten, also z.B. 564.jpg,
> 564-D.pdf etc.  Ich bräuchte nun zu jedem Jahr die Anzahl der
> Datensätze, zu denen solch eine (oder mehrere) Datei(en)
> existieren. Die Anzahl der Dateien selbst interessiert mich nicht.

Was sind "die IDs"? Ein Attribut in Deiner Tabelle, das im obigen
Beispiel noch nicht enthalten ist?

In diesem Fall wirst Du mit den Aggregatfunktionen nicht
weiterkommen, sondern wohl oder übel zuerst alle IDs ermitteln und
dann das Verzeichnis auf passende Dateinamen durchsuchen müssen.

> Ich hab rumexperimentiert mit while($ID > 0) komme da aber nicht
> weiter.  Also konkreter: Welche while-Schleife muss ich wo in die
> obere Schleife einbauen? Oder ist dieser Ansatz schon Blödsinn?

Es wird am Ende ziemlich sicher nur eine Schleife sein.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Murklig? Murkliger als Stefan!? Wer's glaubt!
(Sloganizer)

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web