Avatar billede Chup Nybegynder
27. juli 2010 - 17:53 Der er 5 kommentarer

While() + for() problem

Hej Eksperten.dk

Jeg har brug for en lille smule mere  hjælp for, at få mit script til, at køre.

Scriptet ser sådan her ud:

__________________________________________________________
//Hent data fra database
for($i=3; $i<=$count; $i=$i+8)
{
$test = preg_replace("([^0-9.])", "", $values2);
   
$query = "SELECT * from dbo.CharInfo WHERE CID ='" . $test[$i] . "'";
$result = mssql_query($query) or die("Failed, or you didnt search!");
           
while ($row = mssql_fetch_array($result)){
$CID = $row['CID'];
$name = $row['Name'];
   
}
    }
//Sammenligning af data fra txt fil & database
for($i=8; $i<=$count; $i=$i+8)           
    {
    $pieces = explode(" ", $values2[$i]);
    if($name == $pieces[0])
    {
    //SUCESS -> NO ACTION
    echo "SUCESS <BR>";   
}
    else
    {
    //FAIL -> BAN ACCOUNT
    echo "FAILED <BR>";
    mssql_select_db('GameDB');
    $query2 = "SELECT * from dbo.UserInfo where Char1 ='$CID' OR Char2 ='$CID' OR Char3 ='$CID' OR Char4 ='$CID' OR Char5 ='$CID'";
    $result = mssql_query($query2) or die("Failed, or you didnt search!2");
    while ($row = mssql_fetch_array($result)){
    $UID = $row['UID'];
    }
    mssql_select_db('youxiuser');
    $sql = "UPDATE dbo.usertbl SET passwd ='this account is banned' WHERE uid ='$UID'";
    mssql_query($sql);

   
    }
}
__________________________________________________________


Selve scriptet virker fint, men jeg har et problem omkring while().
Når jeg kører sammenligningen:if($name == $pieces[0])
Er dataene inden i $name kun et enkelt, og ikke alle navnene, som er der hvis den køres inde i while, eller før for()

Så det jeg har brug for er et lille fix til hvad jeg skal gøre for at få den til at virke :)

Jeg håber der er en der har tid & lyst til at hjælpe

Tak på forhånd,
Chup
Avatar billede majbom Novice
27. juli 2010 - 19:38 #1
alle de 8-9 gange din for-løkke kører, vil $name være det samme, indtil den starter forfra i din while

eller har jeg misforstået?
Avatar billede Chup Nybegynder
27. juli 2010 - 20:56 #2
Den måde det skal køre på er:

1)Hent data fra database
2)Hent data fra txt fil
3)Sammenlign de to med hinanden

I min while henter den data fra databasen, og i min forløkke henter/bruger den data fra txt filen.

Mit problem er bare at lige så snart jeg tager $name fra min while og kører den inde i forløkken, så viser den ikke alle den navne der er i databasen, men kun ét.

Fx:
Database info, som den vises inden i while:
1234
23423423

Database info, som den vises inden i for:
1234

Altså den henter ikke _ALLE_  navne ned fra databasen, kun den første. Derfor kører sammenligningen ikke :-)

Håber det forklarede det, synes det er lidt forvirende :p
Avatar billede ggxdg Nybegynder
29. juli 2010 - 20:28 #3
Du skal have lavet nogle af dine variabler til arrays...
f.eks.:


$NIn = 0;

...løkke...

$CID[$NIn] = $row['CID'];
$name[$NIn] = $row['Name'];
$NIn++;
Avatar billede ggxdg Nybegynder
29. juli 2010 - 20:36 #4
Du skal jo have en key till dine arrays hvor du sammenligner de to værdier også, men det kan laves på næsten samme måde som ovenstående eksempel.
Avatar billede majbom Novice
04. november 2010 - 14:21 #5
kom du videre?
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

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