Permalänk

mySQL | PHP Problem

Jag har försökt fullbordat en gästbok i php samt lite kopplingar till min mySQL server.

Jag tänker inte lägga upp koderna förns jag har fått någon seriös som vill hjälpa till.

Men kan nämna problemen så kanske någon känner igen problemen? Kan så vara kan så vara.
Hemsidan där problemen uppstår

Problem #1
Jag vill att inläggen ska hamna i en ordning tvärtom, Alltså att det nyaste kommer först och inte det äldsta först och sen att de byggs på neråt.
Alltså inlägg #20 ska hamna längst upp och #19 under. o.s.v.

Kan någon fixa detta?

Problen #2
Det här är de största problemet.
De värdena man anger i Namn,Email,Meddalande...
Det finns ju inte med i "Klotterplanket" Varför registreras inte detta.
Någon som kan lösa detta kanske?

Tack på förhand
muRum

Permalänk
Medlem
Permalänk
Medlem

Många här kommer vara ytterst seriösa, trevliga och hjälpsamma om du lägger upp din kod. Framförallt när det gäller så korta koder som ett klotterplank.

Svaren på dina frågor beror till 100% på hur din kod ser ut.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Ja lite kod skulle inte vara fel.

Sen ett litet tips. Tycker du verkligen borde kolla om alla fält är ifyllda innan du sparar nåt i databasen. Nu kan man bara trycka på submit så sparas allt som blankt. Väldigt onödigt att få massa tomma klotter.

Permalänk
Medlem

Nu är det lite svårt att hjälpa exakt utan kod men problem nummer 1 går att lösa med "Order by" SQL ORDER BY Keyword om du vill ha störst nummer först så väljer du DESC.
ex:

SELECT * FROM DinTabell ORDER BY KlotterID DESC

Problem nummer två är tyvärr helt omöjligt att lösa utan att se koden eller bara gissa.

Permalänk

Koden till klotter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Klotterplanket</title> </head> <body> <table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> <tr> <td><strong>Klottra på planket </strong></td> </tr> </table> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form id="form1" name="form1" method="post" action="add_klotter.php"> <td> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="117">Namn</td> <td width="14">:</td> <td width="357"><input name="name" type="text" id="name" size="40" /></td> </tr> <tr> <td>Email</td> <td>:</td> <td><input name="email" type="text" id="email" size="40" /></td> </tr> <tr> <td valign="top">Meddelande</td> <td valign="top">:</td> <td><textarea name="comment" cols="40" rows="3" id="comment"></textarea></td> </tr> <tr> <td> </td> <td> </td> <td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td> </tr> </table> </td> </form> </tr> </table> <table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> <tr> <td><strong><a href="kikaklotterplank.php">Kika in planket</a> </strong></td> </tr> </table> </body> </html>

koden till addklotter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Lägg till klotter</title> </head> <?php $host="korvgrafik.se.mysql"; // Host name $username="korvgrafik_se"; // Mysql username $password="********"; // Mysql password $db_name="korvgrafik_se"; // Database name $tbl_name="klotterplank"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("Får inte tag på Servern"); mysql_select_db("$db_name")or die("Får inte tag på Databasen"); $datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')"; $result=mysql_query($sql); //check if query successful if($result){ echo "Färdigt"; echo "<BR>"; echo "<a href='kikaklotterplank.php'>Kika i Klotterplanket</a>"; // link to view guestbook page } else { echo "Någonting gick snett"; } mysql_close(); ?> <body> </body> </html>

Koden till Kika klotterplanket

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Klotterplank</title> </head> <body> <table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> <tr> <td><a href="klotter.php">Klottra på planket</a></td> </tr> </table> <br> <?php $host="korvgrafik.se.mysql"; // Host name $username="korvgrafik_se"; // Mysql username $password="*******"; // Mysql password $db_name="korvgrafik_se"; // Database name $tbl_name="klotterplank"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect server "); mysql_select_db("$db_name")or die("cannot select DB"); $sql="SELECT * FROM $tbl_name"; $result=mysql_query($sql); while($rows=mysql_fetch_array($result)){ ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td>Antal Klotter</td> <td>:</td> <td><? echo $rows['id']; ?></td> </tr> <tr> <td width="117">Namn</td> <td width="14">:</td> <td width="357"><? echo $rows['name']; ?></td> </tr> <tr> <td>Email</td> <td>:</td> <td><? echo $rows['email']; ?></td> </tr> <tr> <td valign="top">Meddelande</td> <td valign="top">:</td> <td><? echo $rows['comment']; ?><br /><br /><br /><br /><br /><br /></td> </tr> <tr> <td valign="top">Tid </td> <td valign="top">:</td> <td><? echo $rows['datetime']; ?></td> </tr> </table></td> </tr> </table> <BR> <? } mysql_close(); //close database ?> </body> </html>

Permalänk
Skrivet av Pedbor:

Nu är det lite svårt att hjälpa exakt utan kod men problem nummer 1 går att lösa med "Order by" SQL ORDER BY Keyword om du vill ha störst nummer först så väljer du DESC.
ex:

SELECT * FROM DinTabell ORDER BY KlotterID DESC

Problem nummer två är tyvärr helt omöjligt att lösa utan att se koden eller bara gissa.

Skrivet av hamre:

Ja lite kod skulle inte vara fel.

Sen ett litet tips. Tycker du verkligen borde kolla om alla fält är ifyllda innan du sparar nåt i databasen. Nu kan man bara trycka på submit så sparas allt som blankt. Väldigt onödigt att få massa tomma klotter.

Skrivet av pscs3:

Många här kommer vara ytterst seriösa, trevliga och hjälpsamma om du lägger upp din kod. Framförallt när det gäller så korta koder som ett klotterplank.

Svaren på dina frågor beror till 100% på hur din kod ser ut.

Nu finns koden uppe.
Hoppas vi kan fixa till detta

Jag håller på med tabellen i phpMyAdmin. Och det funkar inte att sortera riktigt. Jag vet inte varför. När jag försöker lägga till DESC efter att den sorterar så blir det typ inte "sparat" när jag går därifrån. Vet inte varför det inte blir de. Får försöka lösa det.

Permalänk
Medlem

Hur många kolumner har du i tabellen "klotterplank" ?
Avsaknaden av ID verkar vara lite problematisk.

Permalänk
Medlem

Problem 1:
Du måste definiera vilken kolumn den ska sortera, t.ex fallande efter id, då skulle det kunna se ut något åt det här hållet

$sql="SELECT * FROM $tbl_name ORDER BY id DESC";

Problem 2:
Du hämtar aldrig upp datan du skickar. Detta gör du genom att kalla på $_POST['elementets_namn'] innan du kör queryn, t.ex

$name = $_POST['name']; $name = $_POST['email']; $name = $_POST['comment']; $datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')"; $result=mysql_query($sql);

eller direkt i queryn

$datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES($_POST['name'], $_POST['email'], $_POST['comment'], $datetime)"; $result=mysql_query($sql);

Lycka till!

Visa signatur

- MSI GX740 + Zalman NC2000 + Samsung 24" T240 Rose Black + Logitech MX518 + Logitech Illuminated
- Sennheiser HD595
- Samsung Galaxy Note 3
- Samsung Galaxy Tab 10 Pro

Permalänk
Medlem

Du postar variabler men du fångar aldrig upp dom igen på add sidan?

Permalänk

Nu är allting fixat och tänkte integrera det här till sidan det ska användas på.

Då skapas det genast fler problem
Alla filer
Hemsidan

Permalänk
Medlem
Skrivet av grinchswe:

Nu är allting fixat och tänkte integrera det här till sidan det ska användas på.

Då skapas det genast fler problem
Alla filer
Hemsidan

Och problemet är?

Visa signatur

- MSI GX740 + Zalman NC2000 + Samsung 24" T240 Rose Black + Logitech MX518 + Logitech Illuminated
- Sennheiser HD595
- Samsung Galaxy Note 3
- Samsung Galaxy Tab 10 Pro

Permalänk
Medlem
Skrivet av grinchswe:

Nu är allting fixat och tänkte integrera det här till sidan det ska användas på.

Då skapas det genast fler problem
Alla filer
Hemsidan

Andra gången du tror att Swecare är tankeläsare! Hur skall någon här kunna veta vilke fler problem som du syftar på?

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Skrivet av JesperA:

Andra gången du tror att Swecare är tankeläsare! Hur skall någon här kunna veta vilke fler problem som du syftar på?

Skrivet av Gasol:

Och problemet är?

Skrivet av grinchswe:

Nu är allting fixat och tänkte integrera det här till sidan det ska användas på.

Som jag skrev. Integrationen det ska ligga i mainrutan. Men det är bara första klotterplanket där som ligger i main rutan sen öppnas det som en helt ny sida.

Permalänk
Medlem
Skrivet av grinchswe:

Som jag skrev. Integrationen det ska ligga i mainrutan. Men det är bara första klotterplanket där som ligger i main rutan sen öppnas det som en helt ny sida.

Jaha och vilket resultat vill du ha?

Vill du använda SELF funktion med tex AJAX när någon skickar ett inlägg?
Vill du lägga in nuvarnade gästboksinläggen under "skriv kommentar"-grejen?
Vill du göra det extremt enkelt och bara gör ett till menyval för dom sidorna du hade?

Kan säkert räkna upp 20 olika sceenarion till men ja, vad vill du att slutresultatet skall vara?

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Skrivet av JesperA:

Jaha och vilket resultat vill du ha?

Vill du använda SELF funktion med tex AJAX när någon skickar ett inlägg?
Vill du lägga in nuvarnade gästboksinläggen under "skriv kommentar"-grejen?
Vill du göra det extremt enkelt och bara gör ett till menyval för dom sidorna du hade?

Kan säkert räkna upp 20 olika sceenarion till men ja, vad vill du att slutresultatet skall vara?

Jag vill att de ska komma upp under där man skriver så att man när man direkt trycker klottra kommer det upp under där

Det vore det bästa.

Permalänk
Medlem

Allt funktionalitet som rör din gästbok/klotterplank skulle enkelt kunna behandlas av en och samma PHP fil, med hjälp av ett par enkla if-satser.

Visa signatur

- MSI GX740 + Zalman NC2000 + Samsung 24" T240 Rose Black + Logitech MX518 + Logitech Illuminated
- Sennheiser HD595
- Samsung Galaxy Note 3
- Samsung Galaxy Tab 10 Pro

Permalänk
Medlem

Ett tips är att plocka bort all html från de filer som behandlar inläggen på något vis (alltså addklotter.php och kika i klotter). Då kan du, som Gasol skrev, ha all kod inkluderat på samma sida typ såhär:

<?php if(isset($_GET["submit"])) require(addform.php); $inlagg = array(); require(getforms.php); ?> <!DOCTYPE ...> <!-- så lite html --> <?php foreach($inlagg as $key) { ?> <p>Av: <?php echo $key["author"]; ?></p> <p>Datum: <?php echo $key["date"]; ?></p> <p><?php echo $key["text"]; ?></p> <?php } ?>

Nu har du allt på en sida, enkelt och strukturerat. Du skulle kunna definiera nån variabel som säger att du kommer från rätt fil också, så att du inte bara får en tom sida om du besöker addform.php:

define("I_ARE_LEGIT", 1);

Sen kollar du om requesten är legit i varje fil:

if(!defined("I_ARE_LEGIT")) header("Location: http://minsidasstartsida.mintld");

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem

Sen bör du verkligen tänka på att säkra alla indata du får från användaren.
Som koden ser ut nu så är den väldigt osäker.

Titta lite mysql_real_escape_string bland annat. Strip_tags coh stripslashes kan också vara bra att titta lite på.

Permalänk
Skrivet av pscs3:

Ett tips är att plocka bort all html från de filer som behandlar inläggen på något vis (alltså addklotter.php och kika i klotter). Då kan du, som Gasol skrev, ha all kod inkluderat på samma sida typ såhär:

<?php if(isset($_GET["submit"])) require(addform.php); $inlagg = array(); require(getforms.php); ?> <!DOCTYPE ...> <!-- så lite html --> <?php foreach($inlagg as $key) { ?> <p>Av: <?php echo $key["author"]; ?></p> <p>Datum: <?php echo $key["date"]; ?></p> <p><?php echo $key["text"]; ?></p> <?php } ?>

Nu har du allt på en sida, enkelt och strukturerat. Du skulle kunna definiera nån variabel som säger att du kommer från rätt fil också, så att du inte bara får en tom sida om du besöker addform.php:

define("I_ARE_LEGIT", 1);

Sen kollar du om requesten är legit i varje fil:

if(!defined("I_ARE_LEGIT")) header("Location: http://minsidasstartsida.mintld");

if(!defined("I_ARE_LEGIT")) header("Location: http://minsidasstartsida.mintld");

Ska detta ligga i getforms.php då?

Permalänk

Addklotter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Language" content="sv" /> <title>Lägg till klotter</title> </head> <?php $host="korvgrafik.se.mysql"; // Host name $username="korvgrafik_se"; // Mysql username $password="CENSUR"; // Mysql password $db_name="korvgrafik_se"; // Database name $tbl_name="klotterplank"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("Får inte tag på Servern"); mysql_select_db("$db_name")or die("Får inte tag på Databasen"); $timezone_identifier=date_default_timezone_set('Europe/Stockholm'); $datetime=date("y-m-d H:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('{$_POST['name']}', '{$_POST['email']}', '{$_POST['comment']}', '$datetime')"; $result=mysql_query($sql); //check if query successful if($result){ echo "Färdigt"; echo "<BR><BR>"; echo "<a href='kikaklotterplank.html.php'>Kika i Klotterplanket</a>"; // link to view guestbook page } else { echo "Någonting gick snett"; } mysql_close(); ?> <body> </body> </html>

Kikaklotter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Language" content="sv" /> <title>Klotterplank</title> </head> <body> <br> <?php $host="korvgrafik.se.mysql"; // Host name $username="korvgrafik_se"; // Mysql username $password="CENSUR"; // Mysql password $db_name="korvgrafik_se"; // Database name $tbl_name="klotterplank"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("kommer ej i kontakt med servern"); mysql_select_db("$db_name")or die("Får inte tag på databasen"); $sql="SELECT * FROM $tbl_name ORDER BY id DESC"; $result=mysql_query($sql); while($rows=mysql_fetch_array($result)){ ?> <?php if(isset($_GET["submit"])) require(addform.php); $inlagg = array(); require(getforms.php); ?> <?php foreach($inlagg as $key) { ?> <p>Klotter# <?php echo $key['id']; ?></p> <p>Av: <?php echo $key['name']; ?></p> <p>Datum: <?php echo $key['datetime']; ?></p> <p><?php echo $key['comment']; ?></p> <?php mysql_close(); //close database ?> </body> </html>

Jag är ny på PHP så ursäkta om det blir lite konstiga saker här och var

Man jag förstår inte varför jag får de error jag får i kikaklotter.php

Permalänk
Medlem

Ska vi gissa oss fram till vilka felmeddelanden du får?

Att infoga pscs3s kod i mitten av din gamla är fel. Vad han menar är att du kan bygga en liknande struktur för att så långt som möjligt separera HTML-koden från PHP:n.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Ska vi gissa oss fram till vilka felmeddelanden du får?

Att infoga pscs3s kod i mitten av din gamla är fel. Vad han menar är att du kan bygga en liknande struktur för att så långt som möjligt separera HTML-koden från PHP:n.

Jasså okej.
Då ska vi mixtra lite mer då

Det gick som det gick. Fattar ingenting av vad jag ska göra

Permalänk
Medlem

Om jag vore dig skulle jag använda mig av den nyligen publicerade guiden: Simple AJAX Commenting System – Tutorialzine

Tutorialzine gör riktigt bra grejer och den är sjukt nice dendär!

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem
Skrivet av grinchswe:

if(!defined("I_ARE_LEGIT")) header("Location: http://minsidasstartsida.mintld");

Ska detta ligga i getforms.php då?

Ja, tanken är att du har koden:

define("I_ARE_LEGIT", "1");

I den filen som besökaren tillåts besöka. Sedan inkluderar du koden:

if(!defined("I_ARE_LEGIT")) header("Location: http://minsidasstartsida.mintld");

I varje fil som inte i sig är en egen hemsida, utan bara gör något, som ex. fyller upp en $inlagg-variabel eller kollar om en form har skickats. Om besökaren försöker komma åt ex. addcomment.php så går inte det då konstanten I_ARE_LEGIT inte är definerad, så besökaren skickas till startsidan istället. Lite snyggare än att bara visa en vit sida.

Som Teknocide påpekade så var det alltså ett förslag på en helt (någorlunda i varje fall) ny struktur på din kod.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<