Har precis börjat komma igång med php och skulle testa ett nyhetsscript som jag hittade här följde anvisningarna och sparade allt i localhost men när jag skulle köra scriptet fick jag ett fel medelande: "Couldn't select table" och jag antar att denna kodsnutt
CREATE TABLE `tabell` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`writer` VARCHAR( 50 ) NOT NULL ,
`title` VARCHAR( 50 ) NOT NULL ,
`text` TEXT NOT NULL ,
`date` DATETIME NOT NULL ,
PRIMARY KEY ( `id` )
);
har något med det att göra.
hjälp tack! :)
PeddaMedlem sedan juni 20006 032 inlägg Har du skapat en databas som du har lagt in tabellen i?
nej det har jag inte gjort.. hur gör jag det?
PeddaMedlem sedan juni 20006 032 inlägg Logga in på phpMyAdmin
http://localhost/phpmyadmin/
Fyll i valfritt namn på databasen du vill skapa och klicka på Skapa
Nu har du skapat en databas.
Klicka på fliken SQL och klistra in koden i det översta fältet och klicka på Kör.
Tabellen skapas nu i databasen.
Klart.
inga privilegier står det med röd text och skapa ny databas är inte klickbar.
hur ändrar man rättigheterna?
så här här ser det ut:
PeddaMedlem sedan juni 20006 032 inlägg Verkar som att kontot du loggade in med inte har rättigheter att skapa databaser.
Har du skapat nytt konto eller använde du uppgifterna i read_me filen?
men va fan, installerade om det precis men nu kommer jag inte ens in på programmet.. vad kan det vara för default lösenord?! och användarnamn?
problem igen :)
så här ser filen conn.php ut.
<?php
$server = "localhost"; # MySQL servern
$dbuser = "root"; # MySQL användaren
$dbpass = "ex1234"; # MySQL lösenord
$dbname = "nyheter"; # Databasens namn
$dbtable = "janne"; # Nyhets tabellen
/* Anslut till MySQL databasen */
mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($dbname);
?>
Förstår att det är här inställningarna görs för anropen till mySQL serven.
jag har ändrat på $dbuser, $dbpass och $dbname men så kommer jag till:
$dbtable = "janne"; # Nyhets tabellen
det finns inget ställe i de andra filerna (admin.php, news.php) som kallar på janne vad ska jag ändra nånstanns eller döpa om för att få det fungera?
får fortfarande felmedelandet: Couldn't select table
PeddaMedlem sedan juni 20006 032 inlägg Kolla på koden som du använde när du skapade tabellen. Den börjar med:
CREATE TABLE `tabell` (
Alltså heter tabellen i ditt fall tabell om du inte döpte om den.
Mitt förslag är att du döper tabellerna till något vettigt, i det här fallet t.ex nyheter eftersom det är ett nyhetsskript.
Antingen ändrar du värdet på din variabel till tabell, alltså:
$dbtable = "tabell"; # Nyhets tabellen
eller loggar in i phpMyAdmin och döper om tabellen du har skapat.
ok, men hur många fält ska det vara? och sen när man kommer till nästa sida finns det en uppsjö inställningar man kangöra med värden och sånt..
pedda har du testat detta skriptet hos dig?
skulle va schysst att få nått att fungera så här i början.. ;)
filipbhMedlem sedan juli 2002405 inlägg Antal fält i databasen beror på vad du vill spara för uppgifter. Men id, rubrik och nyhetstext kanske kan vara något. ID = mediumint auto_increment primary key. RUBRIK = char(30). NYHETSTEXT = longtext.
ok men hur vet man det och var lär man sig detta? verkade vara en ganska självklar grej för det står inget om detta här http://www.phpportalen.net/viewtopic.php?t=24931
filipbhMedlem sedan juli 2002405 inlägg Det vet man bara ;) Annars lär man sig det efter hand... Auto_increment gör att id i detta fall alltid adderas med 1 när en ny rad läggs till i databasen. Mediumint behöver man inte använda. Kan lika gärna använda int. Primary key är den primära posten i tabellen, eller hur man nu ska förklara. Longtext är obegränsat med tecken. Char är ju för att man ska kunna skriva olika tecken i fältet och 30 för att man inte kan skriva in mer än 30 tecken. Vill du ha längre rubriker än 30 tecken får du ju ändra det...
tack tack, då har man lärt sig något nytt :D
filipbhMedlem sedan juli 2002405 inlägg Så lite så ;) Använd de formaten på kolumnerna i tabellen som passar bäst.
Fanken också, har stött på patrull igen :/
en skärmdump:
http://www.oldoakdesign.se/wf/dump2.jpg
filen conn.php ser ut enligt följande:
<?php
$server = "localhost"; # MySQL servern
$dbuser = "root"; # MySQL användaren
$dbpass = "hemligt"; # MySQL lösenord
$dbname = "nyheter"; # Databasens namn
$dbtable = "nyheter"; # Nyhets tabellen
/* Anslut till MySQL databasen */
mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($dbname);
?>
Kan det strula om exempelvis $dbname och $dbtable har samma namn?!
MeleaMedlem sedan juli 20033 147 inlägg Nix, det där ser rätt ut. :)
PeddaMedlem sedan juni 20006 032 inlägg Du måste ju ha samma namn på fälten som i koden på phpportalen.
Där var ju databasstrukturen med.
CREATE TABLE `nyheter` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`writer` VARCHAR( 50 ) NOT NULL ,
`title` VARCHAR( 50 ) NOT NULL ,
`text` TEXT NOT NULL ,
`date` DATETIME NOT NULL ,
PRIMARY KEY ( `id` )
);
(Döpte om tabellen till nyheter som du ser)
Tycker att du raderar tabellen som du har gjort och lägger in koden ovan istället så ska det nog fungera.
Nu är det fixat tabellen heter nyheter. men det står fortfarande Couldn't select table.. Så här ser det ut nu. https://www.oldoakdesign.se/wf/dump3.jpg
resterande kod:
admin.php:
<?php
/*
Admin för News v 1.1
Skapat den 24/8 2005 kl 19:56 av Andreas Falck
raider [at] theriddle [dot] net
Hjälp och idéer har tagits ifrån @nders skript @news v1.0 på
adressen http://www.phpportalen.net/viewtopic.php?t18405&highlight=
Ett tack även till folket på #php.se @ freenode som hjälpt
mig när jag har kört fast och missat olika saker Wink
Att göra: Fixa ett system för visning av flera sidor
Inloggningssystem med stöd för flera användare
*/
session_start();
# Variabler
$page_title = "Admin för News v 1.1";
$self = $_SERVER['PHP_SELF'];
$pass = "pass"; # Lösenordet för att logga in
# Inkludera filen conn.php
require("conn.php");
/* Inloggningen */
/* Logga in */
if (isset($_POST['login'])){
if ($_POST['pass']==$pass){
$_SESSION['online'] = "online";
header("Location: $self");
exit;
}
else{
echo "<script language='Javascript'>";
echo "alert('Fel lösenord!');";
echo "</script>";
}
}
/* Logga ut */
elseif (isset($_GET['logout']) && isset($_SESSION['online'])){
unset($_SESSION['online']);
session_destroy();
header("Location: $self");
exit;
}
/* Slut inloggning */
/* MySQL */
/* Radera nyheter */
elseif (isset($_GET['delete']) && isset($_SESSION['online'])){
$sql = "DELETE FROM $dbtable WHERE id={$_GET['delete']}";
mysql_query($sql);
header("Location: $self");
exit;
}
/* Skriv in nya nyheter */
elseif (isset($_POST['send']) && isset($_SESSION['online'])){
$sql = "INSERT INTO $dbtable VALUES ('','".$_POST['writer']."', '".$_POST['title']."', '".$_POST['text']."', now())";
mysql_query($sql) or die ("ERROR");
header("Location: $self");
exit;
}
/* Spara ändringen av nyheter */
elseif (isset($_POST['saveedit']) && isset($_SESSION['online'])){
$sql = "UPDATE $dbtable SET writer='".$_POST['writer']."', title='".$_POST['title']."', text='".$_POST['text']."' WHERE id={$_GET['id']}";
mysql_query($sql) or die ("ERROR");
header("Location: $self");
exit;
}
/* Slut MySQL */
# Sidans titel och CSS fil
echo "<title>$page_title</title>";
/* Länkarna */
if (isset($_SESSION['online'])){
echo "<table width=\"100%\" cellspacing=\"0\" border=\"0\">";
echo "<tr>";
echo "<td><a href=\"$self?write=\">Lägg till en nyhet</a> <a href=\"$self?logout=\">Logga ut</a>";
echo "</tr>";
echo "</table>";
}
else{
echo "<table width=\"100%\" cellspacing=\"0\" border=\"0\">";
echo "<tr>";
echo "<td><a href=\"$self?login=\">Logga in</a>";
echo "</tr>";
echo "</table>";
}
echo "<hr>";
/* Slut Länkarna */
/* Tabeller */
/* Inloggningsformulär */
if (isset($_GET['login'])){
echo "<form action='$self' method='post'>";
echo "<TABLE border='0' cellpadding='4'>";
echo "<TR>";
echo "<TD><big>Logga in</big></TD>";
echo "</TR>";
echo "<TR>";
echo "<TD><input type='password' name='pass'></TD>";
echo "</TR>";
echo "<TR>";
echo "<TD><input type='submit' name='login' value='Logga in'></TD>";
echo "</TR>";
echo "</TABLE>";
echo "</form>";
}
/* Tabell för att skriva in nyheterna */
elseif (isset($_GET['write']) && isset($_SESSION['online'])){
echo "<form action=\"$self\" method=\"post\">";
echo "<table width=\"100%\" cellspacing=\"0\" border=\"0\">";
echo "<tr>";
echo "<td>Skriv in nyheten:</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Namn:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"text\" name=\"writer\"></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Rubrik:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"text\" name=\"title\"></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Nyhet:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><textarea name=\"text\" rows=\"7\" cols=\"70\"></textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"submit\" name=\"send\" value=\"Skicka\"> <input type=\"reset\" value=\"Rensa\"></td>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
/* Ändra nyhet */
elseif (isset($_GET['edit']) && isset($_SESSION['online'])){
$sql = "SELECT * FROM $dbtable WHERE id={$_GET['edit']}";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$writer = $row['writer'];
$title = $row['title'];
$text = $row['text'];
echo "<form action=\"$self?id={$_GET['edit']}\" method=\"post\">";
echo "<table width=\"100%\" cellspacing=\"0\" border=\"0\">";
echo "<tr>";
echo "<td>Ändra vald nyhet:</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Nyhetens författare:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"text\" name=\"writer\" value=\"$writer\"></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Nyhetens rubrik:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"text\" name=\"title\" value=\"$title\"></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Nyhetens text:</td>";
echo "</tr>";
echo "<tr>";
echo "<td><textarea name=\"text\" rows=\"7\" cols=\"70\">$text</textarea></td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type=\"submit\" name=\"saveedit\" value=\"Skicka\"> <input type=\"reset\" value=\"Rensa\"></td>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
/* Visa nyheterna */
else{
$sql = "SELECT * FROM $dbtable ORDER BY date DESC";
$result = mysql_query($sql) or die ("Couldn't select table");
while ($row = mysql_fetch_assoc($result)) {
echo "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
echo "<tr>";
echo "<td style=\"border-bottom: 1px solid gray;\">".$row["title"]."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>".$row["writer"]." ".$row["date"]."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>".nl2br($row['text'])."</td>";
echo "</tr>";
if (isset($_SESSION['online'])){
echo "<tr>";
echo "<td><a href=\"$self?delete={$row['id']}\">Radera</a> | <a href=\"$self?edit={$row['id']}\">Ändra</a></td>";
echo "</tr>";
}
echo "</table>";
echo "<br>";
}
/* Slut Tabeller */
mysql_free_result($result);
}
/* Slut */
?>
news.php
<?php
/*
News v 1.0
Skapat den 24/3 2004 klockan 18:00 av Andreas Falck
raider [at] theriddle [dot] net
Hjälp och idéer har tagit ifrån @nders skript @news v1.0 på
adressen http://www.phpportalen.net/viewtopic.php?t=18405&highlight=
Ett tack även till folket på #php.se @ freenode som hjälpt
mig när jag har kört fast och missat olika saker
Att göra: Fixa ett system för visning av flera sidor
*/
# Variabler
$page_title = "News v 1.0";
$css = "style.css";
# Inkludera filen conn.php
require("conn.php");
# Sidans titel samt stilmall
echo "<title>$page_title</title>";
#echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$css\">";
/* Visa nyheterna */
$sql = "SELECT * FROM $dbtable ORDER BY datum DESC limit 0, 10";
$result = mysql_query($sql) or die ("Couldn't select table");
while ($row = mysql_fetch_assoc($result)) {
/* Utskrift av nyheterna */
echo "<table width=\"100%\" cellspacing='0' cellpadding='0' border='0'>";
echo "<tr>";
echo "<td style=\"border-bottom: 1px solid gray;\">".$row["rubrik"]."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>"."Inskrivet av: ".$row["namn"]." "."Datum: ".$row["datum"]."</td>";
echo "</tr>";
echo "<tr>";
echo "<td>".nl2br($row["nyhet"])."</td>";
echo "</tr>";
echo "</table>";
echo "<br>";
}
/* Slut */
mysql_free_result($result);
?>
conn.php
<?php
$server = "localhost"; # MySQL servern
$dbuser = "root"; # MySQL användaren
$dbpass = "*******"; # MySQL lösenord
$dbname = "nyheter"; # Databasens namn
$dbtable = "nyheter"; # Nyhets tabellen
/* Anslut till MySQL databasen */
mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($dbname);
?>
PeddaMedlem sedan juni 20006 032 inlägg I news.php ändra raden
$result = mysql_query($sql) or die ("Couldn't select table");
till
$result = mysql_query($sql) or die (mysql_error());
och posta felmeddelandet du får nu.