webForumDet fria alternativet

Hjälp med nyhetsscript!

32 svar · 785 visningar · startad av richardjoha

richardjohaMedlem sedan okt. 2005787 inlägg
#1

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
#2

Har du skapat en databas som du har lagt in tabellen i?

richardjohaMedlem sedan okt. 2005787 inlägg
#3

nej det har jag inte gjort.. hur gör jag det?

PeddaMedlem sedan juni 20006 032 inlägg
#4

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.

richardjohaMedlem sedan okt. 2005787 inlägg
#5

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
#6

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?

richardjohaMedlem sedan okt. 2005787 inlägg
#7

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?

richardjohaMedlem sedan okt. 2005787 inlägg
#8

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
#9

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.

richardjohaMedlem sedan okt. 2005787 inlägg
#10

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
#11

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.

richardjohaMedlem sedan okt. 2005787 inlägg
#12

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
#13

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...

richardjohaMedlem sedan okt. 2005787 inlägg
#14

tack tack, då har man lärt sig något nytt :D

filipbhMedlem sedan juli 2002405 inlägg
#15

Så lite så ;) Använd de formaten på kolumnerna i tabellen som passar bäst.

richardjohaMedlem sedan okt. 2005787 inlägg
#16

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
#17

Nix, det där ser rätt ut. :)

PeddaMedlem sedan juni 20006 032 inlägg
#18

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.

richardjohaMedlem sedan okt. 2005787 inlägg
#19

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
#20

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.

142 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)