Tom: Anzahl der Datensätze ausgeben

Beitrag lesen

Hello,

was steht in db_connect.php ?
Was steht in db_disconnect.php?

das ist die Verbindung zur DB sowie die Trennung dieser Verbindung. In der 'db_connect.php' steht:

Das konnte ich mir schon dneken, aber leider nicht, ob ein Objekt erzeugt wird, oder ob klassisch mit prozeduraler Programmmierung gearbeitet wurde.

<?php
  $db=@new mysqli('Hostname','Benutzername','Benutzerkennwort','Datenbankname');
  $db->set_charset('utf8');
  if (mysqli_connect_errno())
    {
       die("<h1>Datenbank Verbindungsfehler</h1><p>Bitte entschuldigen Sie, es kann momentan keine Verbindung zur Datenbank aufgebaut werden</p><p>".mysqli_connect_error()."(".mysqli_connect_errno().")</p><p>Wenn dieses Problem weiterhin besteht, melden Sie das bitte per Mail an <a href="mailto:admin@example.net">admin@example.net</a>.</p>");
    }
?>


>   
> In der 'db\_disconnect.php' steht:  
>   
> ~~~php

<?php  

>   $db->close();  
> ?>

Außerdem ist es nicht der Code, den ich Dir gepostet hatte.

Stimmt, da hatte ich etwas übersehen.

<?php
include('db_connect.php');
$statement='SELECT COUNT(*) anzahl FROM 11\_dbtest WHERE vorname="Hans"';
$result = $db->query($statement);
$_row   = $result->fetch_assoc();
include('db_disconnect.php');
echo "<p>Insgesamt befinden sich {$_row['anzahl']} Datensätze in der Datenbank.</p>\n";
?>

Verstehe ich das richtig, Du gibst diesem Zählvorgang einen Namen?

Nicht dem Vorgang, sondern dem Ergebnis.

In dem Fall heißt der Zählvorgang also "anzahl"? Das verwirrt mich insofern, als ich auf sämtlichen themenspezifischen Seiten, die ich bisher vor mir hatte, dies nicht vorkommt. Siehe zB. das Kapitel "Zeilen zählen" im SQL Handbuch.

Das führt dazu, dass PHP dann später ein assoziatives Array abfragen kann aus dem Resultset. Wenn man die Möglichkeit hat, mit Namen zu arbeiten anstelle von nichtssagenden Nummern (hier Index [0]), dann tue ich das auch. In einer Interpretersprache kostet das auch (fast) nichts.

Wenn ich den von Dir vorgeschlagenen Code verwende, 1:1 kopiert, funktioniert es, die richtige Anzahl der betroffenen Datensätze wird ausgegeben. Nur - wie schon gesagt - ich finde nirgendwo eine Erklärung zu der Sache mit der Namensgebung für die Zählung.

Da müsstest Du Dir mal ein gutes Buch zu MySQL besorgen, in dem das auch Schritt für Schritt erklärt wird. Im MySQL-Handbuch steht auch schon sehr viel, aber leider nicht alles.

[...]

Das hat mir den Denkanstoß gegeben, meinen Code umzuschreiben und weiter zu vereinfachen. Ich habe jetzt, um mein Ziel zu erreichen, folgenden Code:

<?php

include('db_connect.php');
   $result=$db->query("SELECT COUNT(*) FROM 11_dbtest WHERE vorname='Hans'");
   $row = $result->fetch_row();

echo "<p>Insgesamt befinden sich $row[0] Datensätze in der Datenbank.</p>\n";
     include('db_disconnect.php');

?>

  
Hier besorgt sich PHP nur ein indiziertes Array, also eines, das keine Namen für seine Elemente benutzt. Das finde ich deshalb nicht gut, weil ich dann in der SQL-Abfrage die Reihenfolge der Ergebniselemente festlegen muss. Hier haben wir zwar nur einen Wert, den wir erwarten, aber wenn sich mal etwas ändert, und wir mehrere Werte zurückgeben müssen, dann muss ich die Änderungen durch mehrere Schichten hindurch beachten. Das ist verspielte Entschichtung.  
  
SQL-Abfragen gehören in die eine Schicht, Auswertung der Abfragen in die nächste und die Aufbereitung der Anzeige in noch eine andere. Und die Übergabe an der "Schnittstelle" oder ich sage lieber "Verbindungsstelle" erfolgt hier per Namen. Das Gegenteil davon wäre dann ein Positionsparameter. Der müsste dann erstens immer an der richtigen Position übergeben werden und zweitens auch immer angegeben werden, auch wenn dafür kein Wert vorliegt.  
  
Die Übergabe per Namen ist dann ein "Optionsparameter", denn der muss nur genannt werden, wenn ein Wert für ihn vorhanden ist.  
  
Wenn Du diese Trennung beachtest, kannst Du deine Programme später viel leichter ändern und pflegen und auch leichter Module unterschiedliecher Entwickler (die das auch beachten) zusammenstöpseln zu einen Gesamtkunstwerk.  
  
  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
 ☻\_  
/▌  
/ \ Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>