Permalänk
Medlem

mysql_fetch_array varning.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\honung\pages\myfiles.php on line 22

Får det där meddelandet när jag försöker köra denna kod

<?php //ICONS $filetypes = array ( 'jpg' => 'img.png', 'jpeg' => 'img.png', 'png' => 'img.png', 'gif' => 'img.png', 'ico' => 'img.png', 'pdf' => 'doc.png', 'psd' => 'psd.png', 'txt' => 'txt.png', 'doc' => 'doc.png', 'docx' => 'doc.png', '7z' => 'rar.png', 'rar' => 'rar.png', 'zip' => 'rar.png', ); $filesroot = 'http://localhost/choklad/'; $ip = $_SERVER['REMOTE_ADDR']; $getcount = ("SELECT count(ID) as count FROM files WHERE ip='$ip'"); $result = mysql_query($getcount); $mcount = mysql_fetch_array($result, 0); $count = $mcount['count']; if($count == '0'){ echo'Du har inte laddat upp några filer.'; } else{ $getfiles = ("SELECT name, displayName,ext,size,timestamp FROM files WHERE ip='$ip' ORDER BY timestamp DESC"); $res = mysql_query($getfiles); echo '<table class="filetable"><tr><td colspan="2"><u>Filnamn</u></td><td><u>Storlek</u></td><td><u>Datum</u></td></tr>'; while($file = mysql_fetch_array($res)){ $size = $file['size']; if(strlen($size)>3){ $size = round($size/1048576,2).' MB'; } else{ $size = $size.' B'; } echo'<tr> <td style="width:16px;"><img src="/fileicons/'.$filetypes[$file['ext']].'"/></td> <td><a href="'.$filesroot.$file['name'].'">'.$file['displayName'].'</a></td> <td>'.$size.'</td> <td style="width:105px;">'.date('Y-m-d H:i',strtotime($file['timestamp'])).'</td> </tr>'; } echo'</table>'; } ?> <?php mysql_close($db); ?>

har suttit och kollat, men hittar inget!

Permalänk
Medlem

Kollar vi i dokumentationen om mysql_query() så ser vi att den returnerar ett objekt vid success och false vid error.
Och skickar du då in false i mysql_fetch_array() så kommer du få ett sådant fel.

Skulle f.ö. rekommendera att använda mysqli istället för mysql.
Alla funktioner är i princip samma bara att det står ett "i" efter mysql och att databaskopplingen måste skickas med i dom flesta funktioner.

Visa signatur

Mina poster är en illusion. Det som står skrivet här över står i själva verket inte där så inget av det som du läser är sant. Inte ens den här texten. Jag har själv ingen kunskap om det jag skriver och ingen bör således läsa eller ta in den information som står skrivet.

Permalänk
Medlem

Jag har inte direkt tid att försöka lära mig mysqli just nu, men tack för tipset!

Så det är inget kodrelaterat fel, eller?

Permalänk
Medlem
Skrivet av pettiz:

Jag har inte direkt tid att försöka lära mig mysqli just nu, men tack för tipset!

Så det är inget kodrelaterat fel, eller?

Inte mycket mer att lära sig än en bokstav
mysqli_query() istället för mysql_query()
mysqli_fetch_array() istället för mysql_fetch_array()

Mja du har inget fel på din kod men du måste nog ta hand om resultatet från mysql_query innan du skickar in det i mysql_fetch_array.
Dvs. om mysql_query returnerar false så går du inte vidare till mysql_fetch_array utan kanske skriver ut ett felmeddelande eller något mer passande.

Visa signatur

Mina poster är en illusion. Det som står skrivet här över står i själva verket inte där så inget av det som du läser är sant. Inte ens den här texten. Jag har själv ingen kunskap om det jag skriver och ingen bör således läsa eller ta in den information som står skrivet.

Permalänk
Medlem

Antingen har du glömt öppna databaskopplingen eller så har du inte visat all kod.

Visa signatur

WS: Antec P182B | FSP Aurum 500W | Asus P8Z77-V PRO | i5 3570k | 16GB DDR3 | Intel 320 80GB SSD | HDD 5TB | Asus Xonar DX | Arch Linux (x86_64) | Eizo EV2795
HTPC: Philips 50PUS8804, Kodi samt extern usb-disk
Server: Raspberry Pi 3 model B+ | 1GB RAM | HDD 750GB | Arch Linux (armv7h)

Permalänk
Medlem

[vEX]: det stämde bra!

Men nu till ett annat problem.

<div class="upload"> <div class="uploadinfo"> <form style="margin: 0 auto;" action="uploadaction.php" method="post" enctype="multipart/form-data"> <div id="file" style="vertical-align: bottom;"> <input type="text" name="text" value="Klicka här för att välja en fil..." class="uploadboxaround"/><a href="#" id="button"></a></div> <input type="file" name="file" /> <input type="submit" id="submit" value=""/> <input type="checkbox" value="1" name="offentlig[]">Ja <input type="checkbox" value="0" name="offentlig[]">Nej </form> <br><br><br>

Hur ska jag göra för att få checkboxarna att funka? så att om jag trycker på Ja så ska en etta åka in i databasen.
Har prövat köra

$offentlig = $_POST['offentlig']; $addToDb=mysqL_query("INSERT INTO files (name, displayName, ext, size, ip, offentlig)VALUES('$filename','$displayName','$ext','$size','$ip','$offentlig')") or die (mysql_error());

men det verkar inte fungera..

Permalänk
Medlem
Skrivet av pettiz:

[vEX]: det stämde bra!

Men nu till ett annat problem.

<div class="upload"> <div class="uploadinfo"> <form style="margin: 0 auto;" action="uploadaction.php" method="post" enctype="multipart/form-data"> <div id="file" style="vertical-align: bottom;"> <input type="text" name="text" value="Klicka här för att välja en fil..." class="uploadboxaround"/><a href="#" id="button"></a></div> <input type="file" name="file" /> <input type="submit" id="submit" value=""/> <input type="checkbox" value="1" name="offentlig[]">Ja <input type="checkbox" value="0" name="offentlig[]">Nej </form> <br><br><br>

Hur ska jag göra för att få checkboxarna att funka? så att om jag trycker på Ja så ska en etta åka in i databasen.
Har prövat köra

$offentlig = $_POST['offentlig']; $addToDb=mysqL_query("INSERT INTO files (name, displayName, ext, size, ip, offentlig)VALUES('$filename','$displayName','$ext','$size','$ip','$offentlig')") or die (mysql_error());

men det verkar inte fungera..

Du saknar mellanslag. ")VALUES(" ska vara ") VALUES ("
Samt att du har SQL-injectionproblwem då du inte escapar $offentlig.

Permalänk
Medlem

nu var det inte igår jag pysslade med PHP, men iom att du använder check-boxes istället för radio-buttons (vilket känns mer logiskt i sammanhanget), så får du ju en array i $_POST['offentlig']. jag minns inte på rak arm hur den "strängifierar" en array med bara ett värde i, men det känns ändå som ett säkrare kort att inte använda en array.

testa följande istället:

<input type="radio" value="1" name="offentlig">Ja <input type="radio" value="0" name="offentlig">Nej

Visa signatur

as far as we can tell, the massacre went well...