PHP Frage -->mysql

Seite 1 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_frage_gtmysql_53258/page_1 - zur Vollversion wechseln!


grOOvekill@ schrieb am 29.10.2002 um 09:14

Hallo!

Folgender Code:

<?php
$db = mysql_connect("localhost","datenbank","passwort");
mysql_select_db("datenbankdb",$db);

$anz = "SELECT COUNT (titel) FROM dvd";
$result_anz = mysql_query($anz);

printf ("Anzahl Movies",$result_anz);
?>

Anzahl Movies: <?php echo $result_anz ?> //Alternative Ausgabe


sollte mir in der Variable $result_anz einen Wert speichern. Genauer gesagt, die Anzahl der DVD's in der Datenbank. Diesen Wert möchte ich dann durch ein einfaches printf oder echo ausgeben.

Es tut sich aber original gar nix. Hab ich etwas vergessen?


Maxx666 schrieb am 29.10.2002 um 09:28

naja .. $result_anz ist ein resultset keine normale variable.
die schleife brauchst zwar nicht unbedingt...aber vielleicht später mal. ;)


<?php
$db = mysql_connect("localhost","datenbank","passwort");
mysql_select_db("datenbankdb",$db);

$anz = "SELECT COUNT(titel) FROM dvd";
$result_anz = mysql_query($anz);

while ($row = mysql_fetch_array($result_anz, MYSQL_NUM)) {
echo "Anzahl Movies",$row[0]"
}
mysql_free_result($result_anz);
mysql_close($db);
?>

->http://www.php.net/manual/de/functi...fetch-array.php


grOOvekill@ schrieb am 29.10.2002 um 10:17

Hm, das funzt nicht:

Warning: Supplied argument is not a valid MySQL result resource in /home/sites/site234/xxxxxx.php on line 17

line 17 ist die Zeile mit MYSQL_NUM

Eine Schleife würde ich auch später gar nicht benötigen, gibt's eine einfachere Variante?


XeroXs schrieb am 29.10.2002 um 10:26

i mach des immer ganz anders...

$count=mysql_numrows(mysql_query("SELECT titel from dvd"));


XeLL schrieb am 29.10.2002 um 10:30

<?php
$query = "SELECT * FROM table WHERE id=$id";
$result = mysql_query ($query,$db);
$num = mysql_numrows($result);
while ($row = mysql_fetch_array ($result)) :

$var=$row["var"];

endwhile;
?>

echo $num;


XeroXs schrieb am 29.10.2002 um 10:31

trotzdem bleibts mit der funktion mysql_numrows() am einfachsten ;)


Cyberlord schrieb am 29.10.2002 um 10:41

Geht das nicht auch so:
SQL: select count(*) as anzahl from dvd


Maxx666 schrieb am 29.10.2002 um 11:02

Zitat von Cyberlord
Geht das nicht auch so:
SQL: select count(*) as anzahl from dvd

sicher gehts auch so....

alle wege führen nach rom...nur welcher ist der beste?

@grOOvekill
die query hat wahrscheinlich ein leerzeichen zuviel (zwischen count und (titel))
$anz = "SELECT COUNT(titel) FROM dvd";

aber Xerox variante ist am besten!


Ringding schrieb am 29.10.2002 um 11:05

Na zumindest geht "select count(...) ..." deutlich schneller, wenn er die Inhalte der Records gar nicht braucht.


grOOvekill@ schrieb am 29.10.2002 um 11:07

@ XeroXs:

Vielen Dank! Deine Version hat funktioniert!
:)


XeroXs schrieb am 29.10.2002 um 11:10

sag ich ja, wobei der ringding recht hat.. effizient isses ned.. aba eigendlich wurscht bei so kleinen scripten ;)


grOOvekill@ schrieb am 29.10.2002 um 11:15

Bevor ich's vergesse:
Ich möchte auch, den letzten Zugang in der Datenbank anzeigen, sprich, den Film, der zuletzt hinzugefügt wurde.
Nachdem ich ja die id als Autowert habe, ist es naheliegend, sie zu verwenden. Nur: mit welchem Argument frage ich ab, welches die größte id ist (die wäre ja dann auch automatisch der letzte Eintrag)?


XeroXs schrieb am 29.10.2002 um 11:15

select * from bla sort by id DESC limit 1

//EDIT: so hab das "limit 1" noch hinzugefügt, dadurch bekommst nur den einen eintrag und nicht die ganze liste ;) -> theoretisch sollts eh default so sortiert sein.. aba zur sicherheit halt sortieren lassen


grOOvekill@ schrieb am 29.10.2002 um 11:38

Naja, da bekomme ich doch eine verkehrt sortierte Liste der Einträge. Ich will aber lediglich den letzten Eintrag anzeigen.


Maxx666 schrieb am 29.10.2002 um 11:50

Zitat von grOOvekill@
Naja, da bekomme ich doch eine verkehrt sortierte Liste der Einträge. Ich will aber lediglich den letzten Eintrag anzeigen.

select max(id) from dvd;
oder
select * from dvd
order by id desc limit 1;

wennst die datensätze nicht auch wieder rauslöschst, sodass löcher entstehen und diese wieder befüllt werden.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025