query

Tags:    php

<?
mysql_connect("localhost","","");
mysql_select_db("");
$query = mysql_query("SELECT * FROM tagwall ORDER BY id");
echo "<font color=\\"red\\"><ol>";
while($r = mysql_fetch_array($query)) {
$navn = $r["navn"];
$mail = $r["mail"];
$website = $r["website"];
$overskrift = $r["overskrift"];
$tekst = $r["tekst"];
$dato = $r["dato"];
echo "<table width\\"500\\" border\\"1\\">";
echo "<tr>";
echo "<td width=\\"100\\">$navn</td>";
echo "<td width=\\"100\\">$mail</td>";
echo "<td width=\\"100\\">$website</td>";
echo "<td width=\\"100\\">$dato</td>";
echo "<tr>";
echo "<td width=\\"200\\" colspan=\\"3\\">$overskrift</td>";
echo "<td width=\\"200\\" colspan=\\"3\\">$tekst</td>";
echo "</tr>";
echo "</table>";

}
echo "</ol></font>";
?>

den siger der er en fejl med linie 13: while($r = mysql_fetch_array($query)) { ...
fejlen: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/disk1/mortenj/2.php on line 13

hvorfor???
[Redigeret d. 22/10-02 23:12:02 af Morten Jørgensen]



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Dit problem er egentligt meget simpelt... fejlen ligger i dit SELECT query, som antaget. Du vælger her, at sortere elementerne efter record'en [id]... dit problem er bare, at sådanne en record ikke eksisterer i tabellen. Du kan altså få det til at virke på 2 måder 1) omskriv dit query således,

$query = "SELECT * FROM tagwall";


eller 2) ret i strukturen af tabellen via ALTER

$query = "ALTER TABLE tagwell ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id)";
**Skal kun køres 1 gang**

...så udfylder den selv record'en id for alle de eksisterende elementer i din nuværende tabel.

Lige for at gøre en ting 100% klart MySQL opretter aldrig "automatisk" en record i dine tabeller, som primær index, det skal du selv gøre....

...NU SKULLE DU VÆRE KØREKLAR!



Problemet med din kode er, at du ikke angiver navnet på databasen hvori tabellen "tagwall" er placeret. Resultatet af mysql_query er derfor "not a valid MySQL result resource " og der kan ikke arbejdes videre på den...

Prøv med denne omskrivning, så burde det være mere åbentlyst... men HUSK nu navnet på databasen.


<?PHP
$connection = mysql_connect("localhost","","") or die("Couldn't connect to databaseserver");
mysql_select_db("", $connection) or die("Couldn't connect to database");
$query = "SELECT * FROM tagwall ORDER BY id";
$result = mysql_query($query, $connection) or die ("Couldn't complete query");
echo "<font color=\\"red\\"><ol>";
while($r = mysql_fetch_array($result)) {
...
mysql_close($connection);





Problemet med din kode er, at du ikke angiver navnet på databasen hvori tabellen "tagwall" er placeret. Resultatet af mysql_query er derfor "not a valid MySQL result resource " og der kan ikke arbejdes videre på den...

Prøv med denne omskrivning, så burde det være mere åbentlyst... men HUSK nu navnet på databasen.


<?PHP
$connection = mysql_connect("localhost","","") or die("Couldn't connect to databaseserver");
mysql_select_db("", $connection) or die("Couldn't connect to database");
$query = "SELECT * FROM tagwall ORDER BY id";
$result = mysql_query($query, $connection) or die ("Couldn't complete query");
echo "<font color=\\"red\\"><ol>";
while($r = mysql_fetch_array($result)) {
...
mysql_close($connection);



Grunden til jeg ik havde skrevet navnet på databasen, var at jeg havde slettet mit login navn og pass, og fik oss slettet databasen. Men jeg ved godt den skal med og har hele tiden haft den med :P

jeg har prøvet at sætte det ind nu, men nu skriver den: Couldn't complete query

Ved du hvorfor den bare ikke vil connecte ?




Nedenstående script udskriver navnet på alle tabeller og deres records, som forefindes i din database.


<?PHP
mysql_connect(....dine vars...) or die("couldn't connect to server");
$dbname = "name_of_database";
$result = mysql_list_tables($dbname) or die("couldn't connect to database");

while ($row = mysql_fetch_row($result)) {
print "Table: $row[0]<br><br>";

$fields = mysql_list_fields($dbname, $row[0]);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
echo "Record: " . mysql_field_name($fields, $i) . "<br>";
}

print "<br>";

}
?>


Det burde fortælle dig om det er noget galt med dit query....



Nedenstående script udskriver navnet på alle tabeller og deres records, som forefindes i din database.


<?PHP
mysql_connect(....dine vars...) or die("couldn't connect to server");
$dbname = "name_of_database";
$result = mysql_list_tables($dbname) or die("couldn't connect to database");

while ($row = mysql_fetch_row($result)) {
print "Table: $row[0]";

$fields = mysql_list_fields($dbname, $row[0]);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
echo "Record: " . mysql_field_name($fields, $i) . "";
}

print "";

}
?>


Det burde fortælle dig om det er noget galt med dit query....


Får den her:
Table: tagwall

Record: navn
Record: mail
Record: website
Record: overskrift
Record: tekst
Record: dato

Der er vel ingen fejl ?

Selve min fil ser sådan her ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>
<body>
<?PHP
$connection = mysql_connect("localhost","","") or die("Couldn't connect to databaseserver");
mysql_select_db("", $connection) or die("Couldn't connect to database");
$query = "SELECT * FROM tagwall ORDER BY id";
$result = mysql_query($query, $connection) or die ("Couldn't complete query");
echo "<font color=\\"red\\"><ol>";
while($r = mysql_fetch_array($result)) {
mysql_close($connection);
$navn = $r["navn"];
$mail = $r["mail"];
$website = $r["website"];
$overskrift = $r["overskrift"];
$tekst = $r["tekst"];
$dato = $r["dato"];
echo "<table width\\"500\\" border\\"1\\">";
echo "<tr>";
echo "<td width=\\"100\\">$navn</td>";
echo "<td width=\\"100\\">$mail</td>";
echo "<td width=\\"100\\">$website</td>";
echo "<td width=\\"100\\">$dato</td>";
echo "<tr>";
echo "<td width=\\"200\\" colspan=\\"3\\">$overskrift</td>";
echo "<td width=\\"200\\" colspan=\\"3\\">$tekst</td>";
echo "</tr>";
echo "</table>";
echo "</ol></font>";
}
?>
</body>
</html>

OG jeg har husket mit brugernavn, pass og database :D

Men den vil stadig ik virke...






det virker desværre ikke.... den laver bare en tom side...

men tænkte på om du ikke kunne lave en?
altså bare en side hvor man kan skrive indlæg på, og en hvor det vises.
den skal indeholde:
navn.
mail.
website.
overskrift.
tekst.

og skal self være med mysql :P

hvis du gider skal du nok få flere point overført.

håber du vil!




Sorry... glemte lige at læse din kode ordentligt igennem...

Grunden til, at du får en tom side er, at du lukker mysqL-ressourcen i starten af while løkken... den skal selvfølgelig flyttes til efter while-løkken. Sålænge du ikke får en fejlbesked fungerer samarbejdet med mysql database korrekt.

---------------------------------------

Når der skal skrives til tagwell tabellen kan følgende query bruges.

"INSERT INTO tagwall SET navn = '$navn', mail = '$mail', website = '$website', overskrift = '$overskrift', tekst = '$tekst'"



Endelig noget der virkede... men tror oss en del af problemet var min "skrive" side. Men mange tak for hjælpen, og fordi du har prøvet en masse gange får du osse en gang point over overførsel :D




t