Avatar billede smeier Nybegynder
03. april 2008 - 19:50 Der er 9 kommentarer og
1 løsning

Warning mysql_fetch_array supplied argument is not a valid My

Hej eksperter. Jeg kan simpelthen ikke slippe af den med her fejl Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/trmeier/public_html/6_aflevering/index.php on line 59
Linje 59 er denne
----
while($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $row[2] . "</td></tr>";
//$row['count(iid)']
-----
Poster lige sammenhængen nedenfor. Er der nogen der har mod på at hjælpe? Det er muligt der er flere fejl.




//Vælg hvilken database der skal bruges
$databasetabel = $_POST['database_tabel'];
$db_select=mysql_select_db($databasetabel,$connection);//Opbyg et SELECT udtryk

$sogeord = $_POST['sogeord'];


$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE \"%$sogeord%\") OR (virksomhed LIKE \"%$sogeord%\")) AND (p.pid = ip.pid) GROUP BY p.navn";



$result = mysql_query($query,$connection);
//$numrows = mysql_num_rows($result);
$numrows = "1";
 

if ($numrows == 0)
  {


  echo "<p>din søgning på databasen &quot;" . $databasetabel . "&quot; med søgeordene&quot;" . $sogeord . "&quot; fandt ingen resultater</p>";

}
else
{

echo "<p>din søgning på databasen &quot;" . $databasetabel . "&quot; med søgeordene&quot;" . $sogeord . "&quot; fandt &quot;" . $numrows . "&quot; resultat(er)</p>";


while($row = mysql_fetch_array($result))
{
echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $row[2] . "</td></tr>";
//$row['count(iid)']
}

}
Avatar billede nielle Nybegynder
03. april 2008 - 22:05 #1
Man bruger ikke "-tegn i en SQL, men derimod '-tegn.

Ret:

$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE \"%$sogeord%\") OR (virksomhed LIKE \"%$sogeord%\")) AND (p.pid = ip.pid) GROUP BY p.navn";

- til:

$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE '%$sogeord%') OR (virksomhed LIKE '%$sogeord%')) AND (p.pid = ip.pid) GROUP BY p.navn";
Avatar billede nielle Nybegynder
03. april 2008 - 22:06 #2
Et gidt råd til en anden gang kunne være at udvide dine database-kald med lidt fejlhåndtering:

$result = mysql_query($query, $connection) or die(mysql_error());
Avatar billede smeier Nybegynder
04. april 2008 - 08:55 #3
Har fulgt begge dine råd og det hjalp da.
Nu har jeg fået gjort således at det virker korrekt. Nu er mit problem at det bruger usansynligt man ressourser. Når den skal køre en ekstra query sålænge den stadig finder resultater. Er der nogen der kan se hvordan jeg kan skrive nedenstående så det ikke tager en evighed for hver søgning. Evt. nøjes med en enkelt query.

$query = "SELECT p.navn, p.virksomhed, p.pid FROM p,i,ip WHERE ((p.navn LIKE '%$sogeord%') OR (p.virksomhed LIKE '%$sogeord%')) GROUP BY p.navn";
//  AND (p.pid = 'ip.pid')


$result = mysql_query($query,$connection) or die(mysql_error());

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

$result2 = mysql_query("SELECT count(iid) FROM ip WHERE ip.pid = '$row[2]'");

$rowto = mysql_fetch_row($result2);

echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $rowto[0] . "</td></tr>";


}
Avatar billede nielle Nybegynder
05. april 2008 - 08:17 #4
> Har fulgt begge dine råd og det hjalp da.

Rådet mht. at udskrive eventuelle SQL fejl er nu mere tænkt til at hjælpe med at finde fejl i fremtiden. Det ændre derudover ikke ved funktionaliteten.

> ... Evt. nøjes med en enkelt query.

F.eks. sådan?

$query = "
SELECT p.navn, p.virksomhed, count(ip.pid)
FROM p, ip
WHERE (p.navn LIKE '%$sogeord%' OR p.virksomhed LIKE '%$sogeord%') AND
    AND p.pid = ip.pid
GROUP BY p.navn";

$result = mysql_query($query, $connection) or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $row[2] . "</td></tr>";
}


PS: Du bør vælge nogle mere sigende navne for dine tabeller. Det er ret svært at gnenemskue hvad det er for en slags data der er i "p". "i" og "ip".
Avatar billede nielle Nybegynder
14. april 2008 - 07:49 #5
Har du fået kigget på det?
Avatar billede nielle Nybegynder
21. april 2008 - 17:02 #6
??
Avatar billede smeier Nybegynder
22. april 2008 - 11:09 #7
Sorry ja troede jeg havde skrevet et svar. Men det blev glemt.
Fandt frem til et brugbart resultatet ud fra dit sidste svar. Ja ved godt at tabelnavnene er et irritationsmoment men det var et krav på mit uddannelsessted at tabellerne skulle være navngivet sådan i denne opgave. Fik løst opgaven med din query tror jeg faktisk. Ser lige om jeg kan finde det endelige resultat og poste det.
Smid meget gerne et svar. Beklager ventetiden og tusind tak for din hjælp.
Avatar billede nielle Nybegynder
22. april 2008 - 17:11 #8
Svar :^)
Avatar billede nielle Nybegynder
28. april 2008 - 19:29 #9
Så mangler du bare at acceptere mit svar :^)
Avatar billede nielle Nybegynder
13. maj 2008 - 22:51 #10
??
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