Mit Script Datensätze zählen und speichern

julia29

Erfahrenes Mitglied
Hallo,
ich möchte in table1 alle Datensätze einer Gruppen zählen und das Ergebnis in table 2 in einem Feld schreiben.
Habe da einen Ansatz versucht, komme jedoch nicht weiter.

für $sql schreibt er mir
Anzahl..: Resource id #3

für $gr1 findet er nichts
Anzahl..:

PHP:
<?php
//	 Datensätze zählen und in anderer Tabelle speichern

$Host = "localhost";
$User = "xxx";
$Password = "xxx";
$Database = "xxx";

    $DbPointer = mysql_connect($Host, $User, $Password);
    mysql_select_db($Database, $DbPointer);
    $sql = mysql_query("SELECT feld1, COUNT(*) FROM tab1 GROUP BY feld1");
	// Wert in Variable schreiben
	$gr1 = $sql['feld1'] ;

echo ("Anzahl..: $sql <br>");
echo ("Anzahl..: $gr1 ");

@mysql_query("UPDATE tab2 SET anzahl = '$sql' WHERE gruppe = '$gr1'");

?>

direkt in phpMyAdmin diese Zeile eingegeben bringt er auch ein Ergebnis:
SELECT feld1, COUNT(*) FROM tab1 GROUP BY feld1;
------------------------------------------
feld1 COUNT( * )
1126 97
1130 101
1170 909
1264 179
1279 79
------------------------------------------

was muss ich ändern?
Gruß
Julia
 
Zuletzt bearbeitet:
PHP:
<?php
//     Datensätze zählen und in anderer Tabelle speichern

$Host = "localhost";
$User = "xxx";
$Password = "xxx";
$Database = "xxx";

    $DbPointer = mysql_connect($Host, $User, $Password);
    mysql_select_db($Database, $DbPointer);
    $sql = mysql_query("SELECT feld1, COUNT(*) FROM tab1 GROUP BY feld1");
    // Wert in Variable schreiben
    list( $feld1, $anzahl ) = mysql_fetch_row( $sql );
    $gr1 = $anzahl ;

echo ("Anzahl..: $sql <br>");
echo ("Anzahl..: $gr1 ");

@mysql_query("UPDATE tab2 SET anzahl = '$sql' WHERE gruppe = '$gr1'");

?>

Du musst das Ergebniss erstmal aus dem Resultset auslesen. Das geht mit "mysql_fetch_..." da gibts dann ein paar möglichkeiten. Ich habe es hier mal mit list gemacht. Dabei muss man dann für jedes Feld was man ausgelesen hat eine Variable angeben.

Ich hoffe das hilft dir weiter.

mfg.Fide
 
Hallo Fide,

das sieht schon mal gut aus, für den ersten Datensatz wird nun auch der richtige Wert angezeigt. Die Anzahl der Gruppen ist unterschiedlich. Ich denke es wäre gut diese erstmal in ein Array zu setzen und aus dem Array dann die Werte herauszuziehen.
Oder ist das nicht sinnvoll?
Wie gehe ich da vor?
In table2 hat er mir dieses erste Ergebnis noch nicht gespeichert.
 
Kannst auch in einer Schleife eine Aktion für jede einzelne Zeile machen:

PHP:
while( list( $feld1, $anzahl ) = mysql_fetch_row( $sql ) )
{
    // hier kannste dann jede Zeile einzeln verarbeiten, habe es hier mal beispielweise ausgegeben
    echo "$feld: $anzahl";
}
 
Super - klappt perfekt.
Auch das Zurückschreiben in die andere Tabelle wird korrekt umgesetzt.

Vielen Dank
mfg
Julia
 
Zurück