Avatar billede tcp Nybegynder
17. oktober 2010 - 19:48 Der er 5 kommentarer og
1 løsning

få COUNT ud af mysql

hej eksperten jeg har en function der udskriver en en række profiler....

henter lidt data fra forskællige tabeller
kan man tilføje at den også skal hente et count() ud fra endnu en tabel i samme sql sætning

Kode:

function profiler()
{
                    //Antal pr. side (Kan også laves til noget brugeren kan bestemme
                    $eachSide = 16;

                    //Antal pr. side (Kan også laves til noget brugeren kan bestemme
                   
                    $side = (isset($_GET['side']) && is_numeric($_GET['side']) && $_GET['side'] > 0) ? intval($_GET['side']) : 0;

           
                    $query = mysql_query("SELECT users.id, users.images, profiler.profil_navn FROM users INNER JOIN users_profiler ON users.id=users_profiler.users INNER JOIN profiler ON users_profiler.profiler=profiler.id WHERE users.user_activated='1' LIMIT ".$side.", ".$eachSide);
                    $counter = 1;
                    echo"<div class='container'>\n";
                   
                    while($row = mysql_fetch_array($query))
                    {
                    $profilnavn = $row['profil_navn'];
                   
               

                    $string = substr($profilnavn, 0, 35) . "...";

                   
                    echo"<div class='item'><a href='user.php?u=".$row['id']."' title='".$row['full_name']."'><img src='files/user/".$row['images'].".jpg' border='0' width='113' height='90'></a><br><p><a href='user.php?u=".$row['id']."' title='".$row['full_name']."' >$string </a></p></div>";   
                    }
                    echo"<div style='clear:both'></div>
</div>\n";
}


Sådan så jeg kan få et antal på hvormange poster der findes  i tabellen videos hvor user er = 1
Avatar billede webweaver Praktikant
17. oktober 2010 - 20:36 #1
Hmm ved sgu ikke rigtig, måske med UNION.

$query = mysql_query("SELECT COUNT(users) FROM videos WHERE id ='1' AS minVariabel UNION SELECT users.id, users.images, profiler.profil_navn FROM users INNER JOIN users_profiler ON users.id=users_profiler.users INNER JOIN profiler ON users_profiler.profiler=profiler.id WHERE users.user_activated='1' LIMIT ".$side.", ".$eachSide);
                    $counter = 1;

Spørgsmålet er dog om dine tabelnavne ikke skal være ens så, eller kaldes det samme via AS evt. Jeg har ikke testet det.

Nok nemmest bare at lave det i sit eget statement i virkeligheden...
Avatar billede tcp Nybegynder
17. oktober 2010 - 21:44 #2
webweaver:  union vil jeg da lige kigge nærmere på !

Nu har jeg sat SELECT COUNT(*)  ind i mit While
er det en dårlig måde at løse problemet på ?
Avatar billede tcp Nybegynder
17. oktober 2010 - 21:45 #3
$query = mysql_query("SELECT users.id, users.images, profiler.profil_navn FROM users INNER JOIN users_profiler ON users.id=users_profiler.users INNER JOIN profiler ON users_profiler.profiler=profiler.id WHERE users.user_activated='1' LIMIT ".$side.", ".$eachSide);
                    $counter = 1;
                    echo"<div class='container'>\n";
                   
                    while($row = mysql_fetch_array($query))
                        {
                            $user = $row['id'];   
                            $count_sql = "SELECT COUNT(*) as cnt FROM videos WHERE user='$user' ";
                            $count_query = mysql_query($count_sql) or die(mysql_error());
                            $count_row = mysql_fetch_array($count_query);
                            $profilnavn = $row['profil_navn'];
                            $string = substr($profilnavn, 0, 35) . "...";


                   
                            echo"<div class='item1'>";
                            echo"<div class='item2'><a href='v.php?v=".$row['file']."' title='".$row['title']."'><img src='files/user/".$row['images'].".jpg' border='0' width='113' height='85'></a></div>";
                            echo"<div class='item3'><a href='v.php?v=".$row['file']."' title='".$row['title']."' >$string</a></div>";
                            echo"<div class='item4'><div class='left'>Videoer</div><div class='right'>".$count_row['cnt']."</div></div>";
                            echo"</div>";
                        }
                    echo"<div style='clear:both'></div>
</div>\n";
Avatar billede webweaver Praktikant
17. oktober 2010 - 23:49 #4
Ved ikke om det er en dårlig måde at løse problemet på.
Det vil da virke :) Umiddelbart en løsning, jeg også godt kunne finde på at bruge, hvis jeg stod og skulle bruge det.

Men kun hvis WHERE = '$user' er variabel. Hvis det har en fast værdi, som du fx nævner i dit "hovedindlæg" hvor den skal tælle, hvis user er 1, så ville der ikke være nogen idé i at køre den igen og igen i en løkke.
Avatar billede tcp Nybegynder
18. oktober 2010 - 07:16 #5
webweaver;


Oki super,

ja variablen skifter, det er fordi jeg udskriver en bruger database, med profil navn, billeder, osv og så ville jeg også gerne have den til at tælle hvor mange film den enkelte bruger har og udskrive det sammen med resten. men det ser ud til at virke.... 


Men er lidt betænkelig ved at skulle køre sql i while da det jo bliver ret mange opslag i databasen. hvis jeg udskriver en side med 25 profiler ja så er det jo faktisk 26  opslag i databasen pr side,

Så må lige kigge lidt nærmere på union du sender bare et svar :-)
Avatar billede webweaver Praktikant
18. oktober 2010 - 12:29 #6
God arbejdslyst, og jeg takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester