Avatar billede haolan Nybegynder
15. marts 2006 - 23:12 Der er 4 kommentarer og
1 løsning

Tjek om bruger eksistere

Hej eksperter..

jeg har et system der driller lidt.

Denne kode gør at man kan sende et brev til flere brugere:

$rec = $_POST['rec'];
        $split = explode(";", $rec); //SPLIT BRUGERNE MED ;
        $split = array_unique($split); //SEND KUN TIL BRUGER EN GANG
        $splitcount = count($split)-1; //TÆL HVOR MANGE DER SENDES TIL

$splitstart = 0;
do { //SEND MAILS
mysql_query("INSERT INTO mails (`mod`, `afs`, `date`, `emne`, `mail`) VALUES ('".$split["".$splitstart.""]."', '$userid', '$datenow', '".$_POST['emne']."', '".$_POST['mail']."')");
$splitstart = $splitstart+1;
} while ($splitcount >= $splitstart);
echo "<b>Din post blev sendt succesfuldt</b>";

Men den skal gerne lave et tjek der sørger for at brevet kun bliver oprettet i databasen hvis den bruger man sender til eksistere..

Jeg har inden for min do { } prøvet at indsætte:
$count = mysql_result(mysql_query("SELECT COUNT(*) AS total FROM user WHERE id = '".$split["".$splitstart.""]."'"),0);

og så lavet en if-sætning der skulle sikre at Mysql_query(Insert...  kun blev kørt hvis $count > 0.. Problemet er her at når jeg prøver at sende til en bruger der ikke eksistere går serveren i hak og jeg får en meddelelse i min browser om at tiden udløb.
Hvis jeg derimod sender til en person der eksistere køre det fint igennem..

Hvorfor kan den ikke lave denne count bare fordi der ikke er nogen?

Og kan det gøres på en anden måde?
Avatar billede zeiox Nybegynder
16. marts 2006 - 11:11 #1
$count = mysql_result(mysql_query("SELECT mod FROM user WHERE mod='$userid'"));
$row = mysql_fetch_array($count);
if ($row) {
echo \"Brugeren findes ikke.\";
}
Avatar billede haolan Nybegynder
16. marts 2006 - 21:26 #2
øhm tror du har misforstået lidt :)
mod er en del af tabellen mail.. $userid er afsenderen..
den skal kalde de felter hvor id = $split["".$splitstart.""], men det vil den ikke uden at gå i hak.. :)
Avatar billede haolan Nybegynder
16. marts 2006 - 21:37 #3
Jeg har prøver sådan:

            $err = "";
            do { //SEND MAILS
                $count = mysql_query("SELECT id FROM user WHERE id='".$split["".$splitstart.""]."'");
                $row = mysql_num_rows($count);
                if($row) {
                    $err .= "".$split["".$splitstart.""]." - ";
                } else {
                    mysql_query("INSERT INTO mails (`mod`, `afs`, `date`, `emne`, `mail`) VALUES ('".$split["".$splitstart.""]."', '$userid', '$datenow', '".$_POST['emne']."', '".$_POST['mail']."')");
                    $splitstart = $splitstart+1;
                }
            } while ($splitcount >= $splitstart);

Det har resulteret i at jeg får følgende fejl:

Fatal error: Maximum execution time of 30 seconds exceeded in c:\apache\htdocs\collection\din.vivaa.dk\inc\newpost.php on line 28

Hvad er galt?
Avatar billede haolan Nybegynder
16. marts 2006 - 21:38 #4
linie 28 er der hvor $count angives..
Avatar billede haolan Nybegynder
15. maj 2006 - 19:31 #5
svar
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