Avatar billede webcreator Nybegynder
24. august 2004 - 20:18 Der er 7 kommentarer og
1 løsning

Springer post over

Hej Eksperter.

Min kode ser ud til, at springe en eller flere poster over. Er der nogen fejl i min opstilling nedenfor ?


if ($subject && $search_string) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `subject` = '$subject' AND (`headline` LIKE '%$search_string%' OR `description` LIKE '%$search_string%')") or die(mysql_error());
    $output1 = mysql_fetch_array($query1);
} elseif ($subject) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `subject` = '$subject'") or die(mysql_error());
    $output1 = mysql_fetch_array($query1);
} elseif ($search_string) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `headline` LIKE '%$search_string%' OR `description` LIKE '%$search_string%'") or die(mysql_error());
    $output1 = mysql_fetch_array($query1);
} else {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files") or die(mysql_error());
    $output1 = mysql_fetch_array($query1);
}

// Udskriver en liste med opgaver under det aktuelle fag
foreach ($subject_array as $subject_output) {
   
    if ($output1["id"]) {
       
        $i = 0;
       
        while ($output1 = mysql_fetch_array($query1)) {
           
            echo $i;
            echo " - ".$output1["id"]." <br>";
           
            $i++;
           
        }
       
    }
   
}
Avatar billede dennismp Nybegynder
24. august 2004 - 20:31 #1
Du henter første række i dine ifs.. Og så næste række i din while() så du får aldrig rigtig vist den første række.. prøv:

if ($subject && $search_string) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `subject` = '$subject' AND (`headline` LIKE '%$search_string%' OR `description` LIKE '%$search_string%')") or die(mysql_error());
} elseif ($subject) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `subject` = '$subject'") or die(mysql_error());
} elseif ($search_string) {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files WHERE `headline` LIKE '%$search_string%' OR `description` LIKE '%$search_string%'") or die(mysql_error());
} else {
    $query1 = mysql_query("SELECT `id`, `headline`, `description` FROM files") or die(mysql_error());
}

// Udskriver en liste med opgaver under det aktuelle fag
foreach ($subject_array as $subject_output) { 
    $i = 0;
       
    while ($output1 = mysql_fetch_array($query1)) {         
        echo $i;
        echo " - ".$output1["id"]." <br>";
           
        $i++;           
    }
   
}
Avatar billede erikjacobsen Ekspert
24. august 2004 - 20:32 #2
Hvad gavn gør din foreach?
Og hvorfor:
  if ($output1["id"]) {

At den springer een over er oplagt når du siger mysql_fetch_array een gang før din whileløkke.
Avatar billede webcreator Nybegynder
24. august 2004 - 20:35 #3
Ok - troede den startede forfra.
Ideen med min IF'er er at tjekke, at der er noget under det pågældende subject.

Ideen med min forearch er da oplagt - et array
Avatar billede erikjacobsen Ekspert
24. august 2004 - 20:39 #4
Ok, men drop den første mysql_fetch_array, og erstat evt din if med

  if (mysql_num_rows($query1)>0) {

selv om det ikke gør nogen forskel i dit tilfælde.

Men den foreach kan du ikke mene. Det betyder bare at de samme poster forsøges udskrivet
igen og igen, li'så mange gang som der er indgang i $subject_array.
Men de kommer kun en gang, da whileløkken bliver færdig første gang. Ik'?  ;)
Avatar billede webcreator Nybegynder
24. august 2004 - 20:56 #5
Nej, det er ikke tilfældet. Ideen var at flytte noget SQL ind i min foreeach - men som den ser ud nu, så er den ikke meget bevendt :)
Avatar billede webcreator Nybegynder
04. september 2004 - 09:25 #6
Nogen svar ?
Avatar billede erikjacobsen Ekspert
04. september 2004 - 09:51 #7
Hvad er dit problem?
Avatar billede webcreator Nybegynder
21. september 2004 - 17:41 #8
.
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