Avatar billede findlasse Nybegynder
30. januar 2013 - 22:42 Der er 30 kommentarer og
1 løsning

Fejl ved kald af data

Hej!
Jeg har en hjemmeside kørende med fiskeri og noget fangstdata. Er ikke nogen ørn og har glemt alt om hvordan jeg fik det til at funke i sin tid. Det har fungeret fint - indtil der pludselig kommer en fejlmeddelelse. Tror de har opdateret på serveren til nyere kode eller sådan noget. Er på herrens mark!.

Jeg kalder f. eks denne side: http://www.namsen.dk/index.php?side=503

og får denne fejlmeddelelse:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/vhosts/namsendk/db/top30added.php on line 7

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/vhosts/namsendk/db/top30added.php on line 16


Koden til siden ser sådan ud:

<?
{
$connection = mysql_connect("mysql.namsen.dk","namstnok","qwr36ert"); //indstillinger omkring Mysql database
mysql_select_db("namsendk", $connection);

$result = mysql_query("select dato, vald, fisker, vekt, redskap, elv from namsen$Aar order by vekt desc limit 30");
$number = mysql_num_rows($result);

print ("<table width=100%>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Elv</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[elv]</font></td>");
print("</tr>");
}
}
print("</table>");
?>

Nogen der kan fortælle hvad der er galt med koden??

Vh

Lasse
Avatar billede erikjacobsen Ekspert
30. januar 2013 - 22:56 #1
Du kan få den til at fortælle dig hvad der er galt:

$result = mysql_query("select dato, vald, fisker, vekt, redskap, elv from namsen$Aar order by vekt desc limit 30") or die(mysql_error());
Avatar billede erikjacobsen Ekspert
30. januar 2013 - 22:56 #2
(Og hvis det faktisk er dit password til databasen, bør du nok ændre det)
Avatar billede findlasse Nybegynder
30. januar 2013 - 23:01 #3
Det er ikke det pw - prøver at køre

$result = mysql_query("select dato, vald, fisker, vekt, redskap, elv from namsen$Aar order by vekt desc limit 30") or die(mysql_error());
31. januar 2013 - 06:33 #4
Fejlbeskedder som "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ..." får jeg typisk når en query ikke giver noget resultat.  En select der ikke kan returnere et resultat (hvis der for eksempel er et problem med queryen) wil returnere false.  Undersøg hvad problemet er, som diskuteret ovenfor, og/eller sig

"if ($result) $number = mysql_num_rows($result);"
Avatar billede findlasse Nybegynder
01. februar 2013 - 00:14 #5
Hej igen!

Har lige opdaget at det er denne kode jeg skal bruge!. Men den giver samme fejl!. Her er "or die" med, men giver samme fejl med "Warning mysql ... osv!"

Går man ind på denne side: http://www.namsen.dk/index.php?side=80
og bare klikker på "Find" skulle der komme en liste med alle fangster, alle år, alle vald, alle elve.

koden ser sådan ud:

<?
if ($Vald == "Alle vald"){{
$connection = mysql_connect("mysql.namsen.dk","namvllno","xfl99iuo"); //indstillinger omkring Mysql database
mysql_select_db("namsendk", $connection) or die ("Problem connecting to DataBase");

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow = mysql_fetch_array($result1);
$avg=$myrow["avgvekt"];
$rounded = round($avg,2);

$result2 = mysql_query("select SUM(vekt) AS total from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%' 
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow1 = mysql_fetch_array($result2);
$tot=$myrow1["total"];

$result = mysql_query("select dato, vald, fisker, vekt, redskap, elv from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%' 
and vekt BETWEEN '$minVekt' AND '$maxVekt' order by vekt desc");
$number = mysql_num_rows($result);


if ($Md == ".05."){
$change_date = "Maj";
} else if ($Md == ".06."){
$change_date = "Juni";
} else if ($Md == ".07."){
$change_date = "Juli";
} else if ($Md == ".08."){
$change_date = "August";
} else if ($Md == ".09."){
$change_date = "September";
} else if ($Md == "Vælg periode"){
$change_date = "Vælg periode";
} else if ($Md == ""){
$change_date = "Hele sæsonen";
}

?>
<table width="100%" border="0">
  <tr>
    <td><form action="index.php?side=503" method="post">
     
        <div align="left">
          <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
          <input type="submit" name="<? print ($Aar); ?>3" value="Top 30 <? print ($Aar); ?>">
        </div>
    </form></td>
    <td><form action="index.php?side=502" method="post">
      <div align="right">
        <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
        <input type="submit" name="<? print ($Aar); ?>2" value="Vis fòrdeling på vald <? print ($Aar); ?>">
      </div>
    </form></td>
  </tr>
</table>
<?
print "<font face=verdana size=1>Din søgning på: - <b>$seek</b> - <b>$elv</b> - <b>$change_date - <b>$Aar</b> - <b>$Vald</b></b> med vægt mellem <b>$minVekt</b> kg og <b>$maxVekt</b> kg fandt <b>$number</b> fangster sorteret efter vægt. Gennemsnitsvægt: <b>$rounded</b> kg. Totalvægt: <b>$tot</b> kg.</font><br><br>" ;
print ("<table width=100%>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Elv</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[elv]</font></td>");
print("</tr>");
}
}
print("</table>");

}else {{
$connection = mysql_connect("mysql.namsen.dk","namsendk","uqy24jyc"); //indstillinger omkring Mysql database
mysql_select_db("namsendk", $connection) or die ("Problem connecting to DataBase");

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow = mysql_fetch_array($result1);
$avg=$myrow["avgvekt"];
$rounded = round($avg,2);

$result2 = mysql_query("select SUM(vekt) AS total from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow1 = mysql_fetch_array($result2);
$tot=$myrow1["total"];

$result = mysql_query("select fisker, vald, vekt, dato, redskap, elv from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt' order by vekt desc");
$number = mysql_num_rows($result);

if ($Md == ".05."){
$change_date = "Maj";
} else if ($Md == ".06."){
$change_date = "Juni";
} else if ($Md == ".07."){
$change_date = "Juli";
} else if ($Md == ".08."){
$change_date = "August";
} else if ($Md == ".09."){
$change_date = "September";
} else if ($Md == "Vælg periode"){
$change_date = "Vælg periode";
} else if ($Md == ""){
$change_date = "Hele sæsonen";
}
?>
<table width="100%" border="0">
  <tr>
    <td><form action="index.php?side=503" method="post">
     
        <div align="left">
          <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
          <input type="submit" name="<? print ($Aar); ?>3" value="Top 30 <? print ($Aar); ?>">
        </div>
    </form></td>
    <td><form action="index.php?side=502" method="post">
      <div align="right">
        <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
        <input type="submit" name="<? print ($Aar); ?>2" value="Vis fòrdeling på vald <? print ($Aar); ?>">
      </div>
    </form></td>
  </tr>
</table>
<?
print "<font face=verdana size=1>Din søgning på: - <b>$seek</b> - <b>$elv</b> - <b>$change_date - <b>$Aar</b> - <b>$Vald</b></b> med vægt mellem <b>$minVekt</b> kg og <b>$maxVekt</b> kg fandt <b>$number</b> fangster sorteret efter vægt. Gennemsnitsvægt: <b>$rounded</b> kg. Totalvægt: <b>$tot</b> kg.</font><br><br>" ;

print("<table width=100%>");

print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Elv</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[elv]</font></td>");
print("</tr>");
}
}
print("</table>");
}
?>

<hr align="left" color="#ABAB81" noShade size="1" width="100%">


Er på herrens mark
01. februar 2013 - 06:05 #6
Du tilføjede ...or die ("Problem connecting to DataBase") i den kode der skal forbinde dig med databasen.  Men problemet ligger næppe i forbindelsen til databasen, men, ifølge min teori,  at når du er inde i databasen og stiller en query, så giver queryen intet resultat.  Der er noget i queryen som databasen ikke kan lide.  Det var det du i #1 blev rådet til at undersøge ved i mysql_query'erne (ikke i mysql_select_db) at indsætte ...or die(mysql_error()) .  Hvis ikke du vil prøve det, så må du nok forblive på herrens mark.

Kan problemet muligvis ligge i at du placerer variablerne mellem ' og '?  Du siger, for eksempel,

...and vekt BETWEEN '$minVekt' AND '$maxVekt' 

Prøv engang med

...and vekt BETWEEN $minVekt AND $maxVekt

(I mit system, når en query er mellem " og " så bliver variablerne uden videre oversat.)

En ting jeg selv tit prøver når jeg er i samme situation er at udskrive queryen og derefter køre den direkte i phpmyadmin. Altså hvor du for eksempel i linje 87 til 92 har koden

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");

kan du midlertidigt prøve med

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'") or die(mysql_error());

var_dump($result1); die;

Den query du så får udskrevet foreslår jeg, at du kører direkte i phpmyadmin.  Så vil jeg gætte på, at du får udskrevet en fejlmelding der forhåbenligt kan lede dig til at finde og rette fejlen.

Held og lykke.
Avatar billede findlasse Nybegynder
01. februar 2013 - 09:12 #7
Hej Christian

Har prøvet at fjerne ' erne. Ingen forandring. Men det virker netop som om variablerne ikke kan læses!??

Er ikke helt med på hvad du mener her:

En ting jeg selv tit prøver når jeg er i samme situation er at udskrive queryen og derefter køre den direkte i phpmyadmin. Altså hvor du for eksempel i linje 87 til 92 har koden

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");

kan du midlertidigt prøve med

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'") or die(mysql_error());

var_dump($result1); die;

Den query du så får udskrevet foreslår jeg, at du kører direkte i phpmyadmin.  Så vil jeg gætte på, at du får udskrevet en fejlmelding der forhåbenligt kan lede dig til at finde og rette fejlen.

??

Vh

Lasse
01. februar 2013 - 09:52 #8
To spørgsmål:

1.  Prøvede du i din kode, i mysql_query'erne at indsætte ..or die(mysql_error()) ?

Hvis nej, så lad os stoppe her og nu.  Vi kommunikerer ikke.

Hvis ja, hvad var så resultatet?

2.  Prøvede du at indsætte den kode jeg foreslog?  Hvad fik du udskrevet?
06. februar 2013 - 17:49 #9
findlasse, kom du fra det igen?  Hvis spørgsmålet ikke længere er aktuelt, så luk det venligst igen, ellers kom ind og fortæl hvordan sagerne står.  Men lad os ikke blive hængende i et åbent spørgsmål.
Avatar billede findlasse Nybegynder
06. februar 2013 - 18:29 #10
Hej !

Ja jeg kom fra det - fik lige pludselig travlt - vil mægtig gerne have det til at virke igen. Har ikke så meget styr på kodning mere må jeg indse, for jeg ved ikke helt hvad du mente jeg skulle køre - helt konkret.
06. februar 2013 - 22:46 #11
Helt konkret:  Den kode du viser i #5 indeholder et antal mysql queries, såsom denne:

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");

Grunden til, at du oprettede spørgsmålet er, at disse mysql queries giver fejlmelding, såsom:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/vhosts/namsendk/db/top30added.php on line 7

Du kan få mysql til selv at fortælle hvad der er galt med queryerne ved at tilføje 'or die(mysql_error()) .

Så du ændrer midlertidigt koden fra

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");

til

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'")
or die(mysql_error());

Det skal du gøre i hvert af dine mysql queries (du har vist seks ialt.)  Kør så koden, og fortæl hvilke meldinger du nu får.

Er det konkret nok?
Avatar billede findlasse Nybegynder
09. februar 2013 - 16:03 #12
Hej!
Ja undskyld det trækker ud.
Har prøvet at indsætte "or die# som du skriver og får nu:

Parse error: syntax error, unexpected T_LOGICAL_OR in /var/www/vhosts/namsendk/db/seekresultadded.php on line 21
09. februar 2013 - 17:13 #13
Prøv at vis din kode, som du gjorde i #5, med or die(mysql_error()); indsat.
Avatar billede findlasse Nybegynder
09. februar 2013 - 17:37 #14
kommer her:


<?
if ($Vald == "Alle vald"){{
$connection = mysql_connect("mysql.namsen.dk","namsendk","dtr55res"); //indstillinger omkring Mysql database
mysql_select_db("namsendk", $connection) or die ("Problem connecting to DataBase");

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'")
or die(mysql_error());
$myrow = mysql_fetch_array($result1);
$avg=$myrow["avgvekt"];
$rounded = round($avg,2);

$result2 = mysql_query("select SUM(vekt) AS total from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%' 
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
or die(mysql_error());
$myrow1 = mysql_fetch_array($result2);
$tot=$myrow1["total"];

$result = mysql_query("select dato, vald, fisker, vekt, redskap, elv from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%' 
and vekt BETWEEN '$minVekt' AND '$maxVekt' order by vekt desc");
$number = mysql_num_rows($result);


if ($Md == ".05."){
$change_date = "Maj";
} else if ($Md == ".06."){
$change_date = "Juni";
} else if ($Md == ".07."){
$change_date = "Juli";
} else if ($Md == ".08."){
$change_date = "August";
} else if ($Md == ".09."){
$change_date = "September";
} else if ($Md == "Vælg periode"){
$change_date = "Vælg periode";
} else if ($Md == ""){
$change_date = "Hele sæsonen";
}

?>
<table width="100%" border="0">
  <tr>
    <td><form action="index.php?side=503" method="post">
     
        <div align="left">
          <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
          <input type="submit" name="<? print ($Aar); ?>3" value="Top 30 <? print ($Aar); ?>">
        </div>
    </form></td>
    <td><form action="index.php?side=502" method="post">
      <div align="right">
        <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
        <input type="submit" name="<? print ($Aar); ?>2" value="Vis fòrdeling på vald <? print ($Aar); ?>">
      </div>
    </form></td>
  </tr>
</table>
<?
print "<font face=verdana size=1>Din søgning på: - <b>$seek</b> - <b>$elv</b> - <b>$change_date - <b>$Aar</b> - <b>$Vald</b></b> med vægt mellem <b>$minVekt</b> kg og <b>$maxVekt</b> kg fandt <b>$number</b> fangster sorteret efter vægt. Gennemsnitsvægt: <b>$rounded</b> kg. Totalvægt: <b>$tot</b> kg.</font><br><br>" ;
print ("<table width=100%>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Elv</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[elv]</font></td>");
print("</tr>");
}
}
print("</table>");

}else {{
$connection = mysql_connect("mysql.namsen.dk","namsendk","aql81mip"); //indstillinger omkring Mysql database
mysql_select_db("namsendk", $connection) or die ("Problem connecting to DataBase");

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
or die(mysql_error());
$myrow = mysql_fetch_array($result1);
$avg=$myrow["avgvekt"];
$rounded = round($avg,2);

$result2 = mysql_query("select SUM(vekt) AS total from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
or die(mysql_error());
$myrow1 = mysql_fetch_array($result2);
$tot=$myrow1["total"];

$result = mysql_query("select fisker, vald, vekt, dato, redskap, elv from namsen$Aar
where vald like '$Vald'
and dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt' order by vekt desc");
$number = mysql_num_rows($result);

if ($Md == ".05."){
$change_date = "Maj";
} else if ($Md == ".06."){
$change_date = "Juni";
} else if ($Md == ".07."){
$change_date = "Juli";
} else if ($Md == ".08."){
$change_date = "August";
} else if ($Md == ".09."){
$change_date = "September";
} else if ($Md == "Vælg periode"){
$change_date = "Vælg periode";
} else if ($Md == ""){
$change_date = "Hele sæsonen";
}
?>
<table width="100%" border="0">
  <tr>
    <td><form action="index.php?side=503" method="post">
     
        <div align="left">
          <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
          <input type="submit" name="<? print ($Aar); ?>3" value="Top 30 <? print ($Aar); ?>">
        </div>
    </form></td>
    <td><form action="index.php?side=502" method="post">
      <div align="right">
        <input type="hidden" name="Aar" value="<? print ($Aar); ?>">
        <input type="submit" name="<? print ($Aar); ?>2" value="Vis fòrdeling på vald <? print ($Aar); ?>">
      </div>
    </form></td>
  </tr>
</table>
<?
print "<font face=verdana size=1>Din søgning på: - <b>$seek</b> - <b>$elv</b> - <b>$change_date - <b>$Aar</b> - <b>$Vald</b></b> med vægt mellem <b>$minVekt</b> kg og <b>$maxVekt</b> kg fandt <b>$number</b> fangster sorteret efter vægt. Gennemsnitsvægt: <b>$rounded</b> kg. Totalvægt: <b>$tot</b> kg.</font><br><br>" ;

print("<table width=100%>");

print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Elv</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[elv]</font></td>");
print("</tr>");
}
}
print("</table>");
}
?>

<hr align="left" color="#ABAB81" noShade size="1" width="100%">
09. februar 2013 - 18:00 #15
Den nye fejl skyldes, at du IKKE har gjort som jeg foreslog.

Jeg sagde:

$result1 = mysql_query("select AVG(vekt) AS avgvekt from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'")
or die(mysql_error());

Det gjorde du også første gang, men i $result2 skrev du:
$result2 = mysql_query("select SUM(vekt) AS total from namsen$Aar
where dato like '%$Md%'
and fisker like '%$seek%'
and elv like '%$elv%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
or die(mysql_error());

altso med et ; for meget, mellem '$maxVekt'") og or die(mysql_error();

Kan du se det?  I $result1= mysql_query .... er or die(mysql_error()) en del af queryen, i $result2 afslutter du queryen med ; og derefter kommer or die(mysql_error()) som så er uventet for koden, derfor fejlmelding.

Prøv igen.
Avatar billede findlasse Nybegynder
09. februar 2013 - 18:06 #16
Så giver den:

Table 'namsendk.namsen' doesn't exist

- men det gør den! ???
09. februar 2013 - 18:55 #17
Hurra!  Nu er der fremskridt!  Du startede tråden fordi du fik fejlmeldinger såsom:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/vhosts/namsendk/db/top30added.php on line 7

En sådan fejlmelding plejer at skyldes, at du ikke får noget resultat fra din query.

Nu ved vi hvorfor du ikke får resultat fra dine queries:  Din mysql kan ikke finde den tabel du forespørger.

Så næste skridt må være at finde ud af hvorfor mysql ikke kender tabellen.  Jeg har en teori, måske forkert.  Dine queryer spørger ikke på en tabel namsen, men på namsen$aar.  Kunne det være således, at du har adskillige tabeller, en for hvert år, for eksempel namsen2011 og namsen2012?  Og var det så meningen, at det relevante år skulle stå i variabelen $aar?  Men $aar synes at være tom, der står ikke noget årstal deri. Hvor forespørgslen skulle være rettet, for eksempel, mod en tabel namsen2012 bliver den derfor rettet mod namsen[ingenting] det vil sige mod namsen, og denne tabel består (ifølge mit gæt) ikke.

Kan der være noget om det jeg gætter, eller skal vi søge i andre retninger hvorfor mysql ikke kan finde tabellen?
Avatar billede findlasse Nybegynder
09. februar 2013 - 19:30 #18
Jeg tror det er det der er galt - men hvorfor er det opstået pludseligt?? - det har kørt fint. Der må være ændret noget - opdateret noget - variablen $aar ikke længere fyldes ud!?.

Det er netop som du beskriver - en tabel for hvert år på formen namsen2011, namsen 2012 osv

Enten søger den på namseningenting eller namsendk - som heller ikke eksisterer.

Men jeg er tom for løsningsmuligheder!!!!
09. februar 2013 - 20:52 #19
Ok, vi fik fastslået hvad den direkte årsag til fejlmeldingerne er, nemlig at koden genererer tabel navne som ikke består i databasen.  Du ved hvad du skal arbejde videre med.  Jeg tillader mig derfor at oprette dette som et svar.

Så kan jeg ikke dy mig:  Det er bestemt ikke en hensigtsmæssig database struktur med flere tabeller namsen2011, namsen2012, o.s.v. (eller hvad de nu hedder.)  Der burde have været en enkelt tabel, som så har et felt mere med årstallet. Det vil jeg under alle omstændigheder foreslå, at du ændrer.

Så en praktisk bemærkning:  Fjern 'or die(mysql_error()) igen, du da det har gjort sin gerning, at fortælle hvor det går galt.  Så kan vi se din webside igen.

Det er ikke særligt sandsynligt, at de manglende årstal skyldes, at der bruges en nyere version af en software.  Hvor har du fået programmet fra?  Er det noget du selv har udviklet, eller har du haft (professionel eller gratis) hjælp?  Der er nok ikke nogen anden vej frem, end at du undersøger, eller får undersøgt, hvor årstallet skulle være kommet fra og så går efter hvorfor det ikke kommer.
Avatar billede erikjacobsen Ekspert
09. februar 2013 - 22:25 #20
+1 til dig Christian for ud- og vedholdenhed ;)

$Aar variablen kan godt have virket i en gammel opsætning. I gamle dage blev $_GET['Aar'] og $_POST['Aar'] (og flere) bare leveret til PHP-siden som $Aar  -  med lidt sjove sikkerhedsmæssige konsekvenser.

Måske skal spørgeren blot i toppen af filen skrive

  $Aar = $_GET['Aar'];

(eller $_POST - hvor det nu kommer fra)
Avatar billede findlasse Nybegynder
09. februar 2013 - 22:34 #21
Hej - og ja tak for udholdenhed!

Jeg har prøvet i stedet for $Aar at skrive et af årstallene - så virker det. Så det er nok rigtigt at det er noget med 
$Aar = $_GET['Aar'];

Har dog prøvet at indsætte det uden det hjalp!?
Avatar billede erikjacobsen Ekspert
09. februar 2013 - 22:41 #22
Fortæl lige hvor du tror $Aar burde komme fra.
Avatar billede findlasse Nybegynder
09. februar 2013 - 22:50 #23
Fra en form der sender årstallet til query'en

Har prøvet med POST - så kommer der ingen fejl, den skriver 2012 hvis valgt, men trækker ingen data ud
Avatar billede findlasse Nybegynder
09. februar 2013 - 23:00 #24
Faktisk virker det i query's hvor den eneste variabel er $Aar!

Skal jeg så skrive

$xx = $_POST['xx'];

for hver variabel i queryen?
Avatar billede erikjacobsen Ekspert
09. februar 2013 - 23:09 #25
Ja
Avatar billede findlasse Nybegynder
09. februar 2013 - 23:17 #26
Ok - tak for det!
Avatar billede findlasse Nybegynder
09. februar 2013 - 23:22 #27
Christian må have points, selvom det var Erik, der på enkel vis faktisk hjalp med det samme. Tak for hjælpen, alligevel.
Avatar billede erikjacobsen Ekspert
09. februar 2013 - 23:28 #28
De er til Christian, ja ;)

Og når det så virker igen, så skal du vide, at din kode er helt åbent for SQL-injections. Og det skal du også have gjort noget ved.
Avatar billede findlasse Nybegynder
10. februar 2013 - 00:17 #29
Erik - hvordan gør jeg så det?? :-)
Avatar billede erikjacobsen Ekspert
10. februar 2013 - 15:24 #30
Der er en guide her: http://www.eksperten.dk/guide/1480
Avatar billede findlasse Nybegynder
10. februar 2013 - 16:24 #31
Tak for 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