Gå til innhold

Problem med mysql-gjestbok.


Anbefalte innlegg

Skrevet (endret)

Hei!

 

Eg held litt på med å lage ei gjestebok, mest for lære og kanskje legge den ut på sida mi.

Well, well...

Eg har mekka i saman noko kode, men det virkar ikkje.

Feilmelding:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/***/***/***/tom4.php on line 28

Her er koden:

<html>
<head>
<title>ACP - Gjestebok</title>
</head>
<body>
<?php
    
    
    //Lagring for evt. innlegg.
    $tilkobling = mysql_connect("busted", "busted", "busted");
    if (isset($_POST['message']) AND isset($_POST['name'])){
    $ip = $_SERVER['REMOTE_ADDR'];
    $name = htmlentities($_POST['name']);
    $message = htmlentites($_POST['massage']);
    
    
    
    mysql_select_db("div", $tilkobling);
    $query = "INSERT INTO guestbook
               (user, message, ip)
            VALUES ('$name', '$message', '$ip')";
    mysql_query($query, $tilkobling);
    }
    
     
    $query2 = "SELECT * FROM guestbook ORDER BY name";
    $result = mysql_query($query2, $tilkobling);
    while($rad = mysql_fetch_array($result)) {
    echo "<div id='guestbook'>";
    echo "<h3>" . $rad['ip'] . "</h3>";
    echo '<br><br><br>';
    echo "<p>" . $rad['message'] . "</p></div>";
    }
    echo '<br><br>';
    echo "<form action='tom4.php' method='post'>
          <input type='text' name='name'>
          <textarea name='message' cols='20' rows='4'></textarea>
          <input type='submit' value='SeNd!!'>
          </form>"
          
   ?>
   
   </body>
   </html>

 

Kva kan feilen vere?

Endret av Fjott
Videoannonse
Annonse
Skrevet

hm.. jeg er newb men..

 

du har mysql_connect("busted", "busted", "busted");

 

det skal vel være mysql_connect("host", "username", "passord");.. har du noen maskin med host 'busted'? prøv 'localhost' for host om du kjører mysql på samme server.. om brukernavn og passord er 'busted' begge to kan du vel prøve mysql_connect("localhost", "busted", "busted); ..

 

om d ikke funker prøv å echo mysql_error(); før du tar mysql_close(); og reply med feilmeldingen du får

Skrevet

Jeg er usikker, men tror du bør endre følgende linje:

 

$query2 = "SELECT * FROM guestbook ORDER BY name";

 

til:

 

$query2 = "SELECT * FROM guestbook ORDER BY name ASC";

Skrevet (endret)

Har du i det heletatt en rad i databasen som heter name?

Når jeg ser på queryen hvor du setter ting i databasen så har du en rad som heter user. Kan jo hende at du har en som heter name fordi selfølgelig men.

 

$query = "INSERT INTO guestbook
              (user, message, ip)
           VALUES ('$name', '$message', '$ip')";

Endret av 0lav
Skrevet

Mange bra svar her :D

 

Jeg stemmer på Olav sitt forslag.

 

En grei regel er å alltid kjøre en mysql_error etter en spørring, slik at du får beskjed om hva som er feil dersom noe går galt:

$query = "INSERT INTO guestbook
              (user, message, ip)
           VALUES ('$name', '$message', '$ip')";
   mysql_query($query, $tilkobling) or die("Feil i spørring: $query<br> Mysql-error: <br>".mysql_error());

Skrevet

Så da har du løst problemet, da ?

 

Forresten, så regner jeg med at du legger inn "or die(..." etter den andre mysqlquery setningen også?

Skrevet

JO! Eg har valgt ein server.

mysql_select_database("");

Er i koden min.

Hosten min (http://dcvnet.net) har nettopp bytta server og instalert ny php og programvare.

Er det ein ide å sende ein mail til han?

Viss han seier det ikkje er noko feil med programvare, så er han så god i PHP at han sikkert kan svare på problemet.

Men selfølgeleg håpar eg at de kan hjelpe meg.

Skrevet

Hmmm... Men det var jo ikke den feilmeldingen du fikk først ?

 

Logg inn i phpmyadmin og sjekk om databasenavnet er riktig (div)

 

Husk også på at du bare velger database, dersom feltene message og name er satt... Dersom disse ikke er satt, så prøver du fortsatt å kjøre spørring mot databasen (som du da ikke har valgt) med $query2 . Det er vel kanskje litt ugunstig koding , synes du ikke ?

Skrevet

Hvor kommer feilen ? Regner med at den kommer på SELECT spørringen ? Det er nok fordi at du kun velger database inni if blokken.

 

Prøv å flytt mysql_select_db til over if setningen (Den som sjekker om message og name er satt)

Skrevet

TUSEN TAKK! Dette virka som knall!

Men lurer på ein ting til...

Korleis kan eg sortere martisen(arrayet) $rad['']?

Skulle ha sortert slik at det nyaste innlegget kjem fyrst.

sort()?

Skrevet (endret)

Ok, tusen takk.

Korleis kan eg få databasen til å legge inn "neste" id?

For eksempel:

id     name    message    ip
1      idiot      hehei         197.0.197.1

Korleis kan eg berre legge til "name", "message" og "ip" slik at "id" berre blir større og større?

Slik at om eg legg til "name", "message" og "ip" så kjem "id" av seg sjølv?

Endret av Fjott
Skrevet
Hva mener du med en ny rad? Er det en ny kolonne du mener?

5636376[/snapback]

 

Satser på at det er snakk om en kolonne.

Da er det bare å velge tabellen hvor den ny kolonnen skal inn, og litt ned på siden så står det noe ala "add a new field" eller noe sånt, og der kan du legge til nye kolonner i tabellen din.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...