Avatar billede zac Nybegynder
08. oktober 2003 - 21:19 Der er 19 kommentarer og
1 løsning

Ingen fejlmeddel. men heller ingen effekt af COUNT(var)

Det her giver ikke enten $hold_navn eller tekst-meddelelse om ingen forekomst - men heller ingen fejlmelding:

$result = mysql_query("SELECT id_hold,hold_navn,hold_delen,arr_slags
FROM hold
WHERE ((arr_slags = '3') && (hold_delen = '2')) ORDER by hold_navn");

  while ($row = mysql_fetch_array($result)) {

$id_hold                            = $row["id_hold"];
$arr_slags                          = $row["arr_slags"];
$hold_delen                          = $row["hold_delen"];
$hold_navn                          = $row["hold_navn"];

echo "<tr><td width='12%'><br></td>\n";
echo "<td width='25%'><br></td>\n";
echo "<td width='13%'><br></td>\n";
echo "<td width='50%'>\n";

if (mysql_result(mysql_query("SELECT COUNT(hold_navn) FROM hold"),0) > 0)
      {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
      }

else  {
        echo "Ingen ad hoc hold nu.\n";
      }
echo "<br></td>\n";
echo "</tr>\n";

}
Avatar billede detox Nybegynder
08. oktober 2003 - 21:26 #1
Prøv med:

$result = mysql_query("SELECT id_hold,hold_navn,hold_delen,arr_slags
FROM hold
WHERE ((arr_slags = '3') && (hold_delen = '2')) ORDER by hold_navn") or die(mysql_error());
Avatar billede detox Nybegynder
08. oktober 2003 - 21:27 #2
Eller:

$result = mysql_query("SELECT id_hold,hold_navn,hold_delen,arr_slags
FROM hold
WHERE arr_slags = 3 AND hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
Avatar billede zac Nybegynder
08. oktober 2003 - 23:42 #3
har prøvet med AND og error...næppe i første select problemet ligger.

Mærkeligt, at resultater mht. hold_navn virker mht. første if, men at ingen resultater ikke virker mht. andet (else)if:
------------------------------------------------
if (mysql_result(mysql_query("SELECT COUNT(hold_navn) FROM hold"),0) > 0)
      {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
      }

elseif (mysql_result(mysql_query("SELECT COUNT(hold_navn) FROM hold"),0) < 1)
      {
        echo "Ingen ad hoc hold nu.\n";
      }
---------------------------------------
Noget med COUNT(my_col) at gøre?
Specificeret COUNT(x) returnerer ifølge min bog antal non-NULL værdier - og non_NULL egenskaben i forhold til default? Noget med, at non_NULL ikke i sig selv sikrer string kolonne mod at være tom - hvordan sikre sig, at den er ikke-tom? hm... Noget med dette at gøre?
Avatar billede detox Nybegynder
09. oktober 2003 - 02:20 #4
Men måske du kan få en fejlmeddelse med denne her:

$result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    extract($row);
    echo "<tr><td width='12%'><br></td>\n";
    echo "<td width='25%'><br></td>\n";
    echo "<td width='13%'><br></td>\n";
    echo "<td width='50%'>\n";
    $res = mysql_query("SELECT COUNT(hold_navn) FROM hold") or die(mysql_error());
    if (mysql_result($res,0) > 0) {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }else{
        echo "Ingen ad hoc hold nu.\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}
Avatar billede zac Nybegynder
09. oktober 2003 - 09:42 #5
Den er mere elegant, detox - men desværre m. samme nedslående resultat.

Får igen hold navn frem, når det opfylder betingelserne, men ikke alternativ meddelse, når der ingen resultater er.
Har også prøvet med COUNT(*) og mulige kombinationer af non-NULL/ NULL og default 0 og ingenting. Mystisk.

Lader den ligge lidt...tak for forslagene!
Avatar billede detox Nybegynder
09. oktober 2003 - 10:30 #6
Måske du skal omorganisere dit script. Du udfører jo if/else inden i while-løkken og hvis der ingen hold_navn er hopper den vel ud af løkken.
Avatar billede detox Nybegynder
09. oktober 2003 - 10:38 #7
Du kunne prøve en 'do while', den burde jo mindst udføre løkken en gang:

$result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
do {
    extract($row);
    echo "<tr><td width='12%'><br></td>\n";
    echo "<td width='25%'><br></td>\n";
    echo "<td width='13%'><br></td>\n";
    echo "<td width='50%'>\n";
    $res = mysql_query("SELECT COUNT(hold_navn) FROM hold") or die(mysql_error());
    if (mysql_result($res,0) > 0) {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }else{
        echo "Ingen ad hoc hold nu.\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}
while ($row = mysql_fetch_array($result));
Avatar billede detox Nybegynder
09. oktober 2003 - 10:46 #8
På den anden side kan den jo ikke extracte en række der ikke er der. Hvad med:

$res = mysql_query("SELECT COUNT(hold_navn) FROM hold") or die(mysql_error());
if (mysql_result($res,0) > 0) {
    $result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
    WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
        extract($row);
        echo "<tr><td width='12%'><br></td>\n";
        echo "<td width='25%'><br></td>\n";
        echo "<td width='13%'><br></td>\n";
        echo "<td width='50%'>\n";
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}else{
    echo "Ingen ad hoc hold nu.\n";
}
Avatar billede zac Nybegynder
09. oktober 2003 - 23:15 #9
Sorry, den virker heller ikke, ellers godt forsøg!
Det hele forløber som tidligere, kan se hold, men ikke fraværende hold...
Avatar billede detox Nybegynder
09. oktober 2003 - 23:27 #10
Hvad så med den her:

$result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
if (mysql_num_rows($result)>0) {
    while ($row = mysql_fetch_array($result)) {
        extract($row);
        echo "<tr><td width='12%'><br></td>\n";
        echo "<td width='25%'><br></td>\n";
        echo "<td width='13%'><br></td>\n";
        echo "<td width='50%'>\n";
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}else{
    echo "Ingen ad hoc hold nu.\n";
}
Avatar billede detox Nybegynder
09. oktober 2003 - 23:29 #11
Ellers er jeg ikke sikker på hvad det er du vil.
Avatar billede detox Nybegynder
09. oktober 2003 - 23:34 #12
Er det mon sådan her du mener:

$result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    extract($row);
    echo "<tr><td width='12%'><br></td>\n";
    echo "<td width='25%'><br></td>\n";
    echo "<td width='13%'><br></td>\n";
    echo "<td width='50%'>\n";
    $res = mysql_query("SELECT COUNT($hold_navn) FROM hold") or die(mysql_error());
    if (mysql_result($res,0) > 0) {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }else{
        echo "Ingen ad hoc hold nu.\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}
Avatar billede zac Nybegynder
15. oktober 2003 - 13:38 #13
Sorry, forsinket, men - de to sidste forslag virker heller ikke - samme resultat:
Kan se når der er resultater, ingen melding, når der ikke er det.
Lader den ligge foreløbig, tak, detox, for forsøgene. Kan godt se, at det er flere forskellige angrebsvinkler, du har foreslået, tænker lidt i baggrunden...
Avatar billede detox Nybegynder
15. oktober 2003 - 21:39 #14
Jeg har en anden idé:

$result = mysql_query("SELECT id_hold, hold_navn, hold_delen, arr_slags FROM hold
WHERE arr_slags = 3 && hold_delen = 2 ORDER by hold_navn") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    extract($row);
    echo "<tr><td width='12%'><br></td>\n";
    echo "<td width='25%'><br></td>\n";
    echo "<td width='13%'><br></td>\n";
    echo "<td width='50%'>\n";
    $res = mysql_query("SELECT COUNT(*) FROM hold WHERE hold_navn='$hold_navn'") or die(mysql_error());
    if (mysql_result($res,0) > 0) {
        echo "<a href='vishold.php?id_hold=$id_hold' target=body>$hold_navn</a>\n";
    }else{
        echo "Ingen ad hoc hold nu.\n";
    }
    echo "<br></td>\n";
    echo "</tr>\n";
}
Avatar billede zac Nybegynder
17. oktober 2003 - 18:20 #15
Jeg tør jo næsten ikke fortælle dig det :) men stadig samme - manglende - resultat.
Det er lidt mærkeligt, at alle forslag fungerer fint med at finde hold, som bliver oprettet - men ikke kan se, når der ingen er, ik'?
Avatar billede detox Nybegynder
17. oktober 2003 - 22:45 #16
Jeg har indtil videre kun haft en formodning om hvad det egentlig ønsker. Kunne du evt. dumpe en tabel stuktur og muligvis data for et par rækker. Det vil gøre det lidt lettere.
Avatar billede detox Nybegynder
30. oktober 2003 - 11:46 #17
Har du fået det løst, eller har du opgivet?
Avatar billede zac Nybegynder
07. november 2003 - 13:40 #18
Sorry, ser først dit spm. nu 7.11. - har foreløbig opgivet!
Avatar billede detox Nybegynder
08. november 2003 - 00:39 #19
Måske du skulle lukke her og så evt. oprette et nyt, hvor du forklarer lidt mere i detaljer, hvad du vil opnå.
Avatar billede zac Nybegynder
21. oktober 2005 - 00:30 #20
lukker spm. for tiden - undskyld det blev lidt sent!
takker detox for kommentarerne - jeg fik vist aldrig løst det...
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
Computerworld tilbyder specialiserede kurser i database-management

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