"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP Frage -->mysql

grOOvekill@ 29.10.2002 - 09:14 1624 38
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
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

Kitemaniac
Avatar
Registered: Sep 2001
Location: Longshore / West..
Posts: 712
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
Bearbeitet von Maxx666 am 29.10.2002, 09:46

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
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

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
i mach des immer ganz anders...

$count=mysql_numrows(mysql_query("SELECT titel from dvd"));
Bearbeitet von XeroXs am 29.10.2002, 10:29

XeLL

Big d00d
Avatar
Registered: Jun 2002
Location: linz
Posts: 263
<?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;
Bearbeitet von XeLL am 29.10.2002, 10:34

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
trotzdem bleibts mit der funktion mysql_numrows() am einfachsten ;)

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
Geht das nicht auch so:
SQL: select count(*) as anzahl from dvd

Maxx666

Kitemaniac
Avatar
Registered: Sep 2001
Location: Longshore / West..
Posts: 712
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Na zumindest geht "select count(...) ..." deutlich schneller, wenn er die Inhalte der Records gar nicht braucht.

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
@ XeroXs:

Vielen Dank! Deine Version hat funktioniert!
:)

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
sag ich ja, wobei der ringding recht hat.. effizient isses ned.. aba eigendlich wurscht bei so kleinen scripten ;)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
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

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
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
Bearbeitet von XeroXs am 29.10.2002, 14:02

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
Naja, da bekomme ich doch eine verkehrt sortierte Liste der Einträge. Ich will aber lediglich den letzten Eintrag anzeigen.

Maxx666

Kitemaniac
Avatar
Registered: Sep 2001
Location: Longshore / West..
Posts: 712
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.
Bearbeitet von Maxx666 am 29.10.2002, 12:15
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz