Avatar billede xvid Seniormester
26. januar 2004 - 22:35 Der er 28 kommentarer og
2 løsninger

MySQL opsætning

er der nogen her der kan fortælle mig hvad jeg mangler for at oprette mysql korrekt

jeg får denne fejl

Fejl

SQL-forespørgsel : 

CREATE TABLE `tagwal` (

`id` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 250 ) NOT NULL ,
`email` VARCHAR( 250 ) NOT NULL ,
`time` VARCHAR( 250 ) NOT NULL ,
`text` LONGTEXT NOT NULL
) TYPE = MYISAM

MySQL returnerede:

#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key

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

CREATE TABLE tagwall (
  id int(9) NOT NULL auto_increment,
  name varchar(250) NOT NULL,
  email varchar(250) NOT NULL,
  time varchar(250) NOT NULL,
  text longtext NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede xvid Seniormester
26. januar 2004 - 22:36 #1
hvad er dette : PRIMARY KEY  (id)
Avatar billede arne_v Ekspert
26. januar 2004 - 22:42 #2
Det der gør id til primær nøgle (primary key).

Et felt (eller flere felter) som unik identificerer en record.
Avatar billede detox Nybegynder
26. januar 2004 - 22:42 #3
Der er ikke noget galt med den nederste forespørgsel. 'PRIMARY KEY' er den primære nøgle.
Avatar billede 2c Nybegynder
26. januar 2004 - 22:42 #4
Prøv:

CREATE TABLE tagwall (
  id int(9) NOT NULL auto_increment PRIMARY KEY  ,
  name varchar(250) NOT NULL,
  email varchar(250) NOT NULL,
  time varchar(250) NOT NULL,
  text longtext NOT NULL
  ) TYPE=MyISAM;
Avatar billede 2c Nybegynder
26. januar 2004 - 22:44 #5
Hver tabel skal have en primary key(PK). PK skal altid være unik, og det vil din id også være da den auto incrementes.
Avatar billede detox Nybegynder
26. januar 2004 - 22:45 #6
Som den skriver, der kan kun være et Autonummereret felt, og det skal være indekseret.
Avatar billede detox Nybegynder
26. januar 2004 - 22:46 #7
2c -> Nej, du behøver ikke have nogen Primary Key (eller nogen andre nøgler for den sags skyld).
Avatar billede xvid Seniormester
26. januar 2004 - 22:49 #8
Tabel tagwall er oprettet. :-)
Avatar billede xvid Seniormester
26. januar 2004 - 22:53 #9
jeg har lige prøvet at skrive i tagwall man der sker ikke noget, hvorfor?
Avatar billede detox Nybegynder
26. januar 2004 - 22:54 #10
Hvordan har du gjort?
Avatar billede xvid Seniormester
26. januar 2004 - 22:56 #11
et øjeblik
Avatar billede xvid Seniormester
26. januar 2004 - 23:00 #12
<html>
<head>
<style type='text/css'>
body {
  font-family: Trebuchet MS;
  color: #000000;
  font-size: 10pt;
}
INPUT {
  border: 1px solid;
  color: #000000;
}
TEXTAREA {
  border: 1px solid;
  color: #000000;
}
A {
  text-decoration: none;
  color: #000000;
}
A:hover {
  text-decoration: underline;
}
</style>
  <title>Tagwall made by Kasper Andersen</title>
</head>
<body>
<form method='post' action=''>

<table cellspacing='7' width="272">
  <tr>
    <td width="127"><b><font size="2" face="Arial">Dit navn</font></b></td>
    <td width="129"><b><font size="2" face="Arial">Din e-mail</font></b></td>
  </tr>
  <tr>
    <td width="127"><input type='text' name='name' onfocus="if(this.value=='Name')this.value='';" onblur="if(this.value=='')this.value='Name';" size='21' style="font-family: Arial; font-size: 10 pt; font-weight: bold"></td>
    <td width="129"><input type='text' name='email' onfocus="if(this.value=='E-mail')this.value='';" onblur="if(this.value=='')this.value='E-mail';" size='21' style="font-family: Arial; font-size: 10 pt; font-weight: bold; background-color: #FFFFFF; border-style: solid; border-width: 1"></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><b><font size="2" face="Arial">Din besked</font></b></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><textarea cols='51' rows='7' name='text' style="font-family: Arial; font-size: 10 pt; font-weight: bold"></textarea></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><input type='submit' name='send' value=' Post ' style="font-family: Arial; font-size: 10 pt; font-weight: bold; background-color: #FFFFFF; border-style: solid; border-width: 1"></form></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><b>:) <img border="0" src="glad.gif" width="20" height="20">
      :( <img border="0" src="sur.gif" width="20" height="20">
      :'( <img border="0" src="ked.gif" width="20" height="20">
      :D <img border="0" src="skratt.gif" width="20" height="20">
      :P <img border="0" src="tagwall/cool.gif" width="20" height="20">
      ;) <img border="0" src="ironi.gif" width="20" height="20"></b></td>
  </tr>
</table>
<br><br>

<?php

//MySQL server configuration
$host = "min host"; //Enter the address to your MySQL server
$user = "bruger"; //Enter the user to your MySQL server
$pass = "password"; //Enter the password to your user
$db = "min_db"; //Enter the database on your MySQL server where you created the table from the structure.sql

//Do not modify anything under this line!

//Get the input typed in the form
$name = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];
$time = date("d/m-Y H:i:s");

//If nothing was typed in the name field, then the Name will be replaced with 'anonymous'
if ($_POST['name'] == "Name") {
    $name = "Anonymous";
}

//If nothing was typed in the E-mail field, then the E-mail will be replaced with null@null
if ($_POST['email'] == "E-mail") {
    $email = "null@null";
}

//Connect to the MySQL server
mysql_connect("$host", "$user", "$pass");

//Select a database
mysql_select_db($db);

//If the text field isn't empty, then this code will be executed:
//If an URL was typed in the text field, then it will be replaced with <a href='http://somedomain.com'>http://somedomain.com</a>
//If an < or > has been typed, it will be replaced with &lt; or &gt;
//Insert the data into the MySQL database
if(!empty($_POST['text'])){
    $text = ereg_replace("<", "&lt;", $text);
    $text = ereg_replace(">", "&gt;", $text);
    $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $text);

$emotearr = array(":)",
":(",
":'(",
":D",
":P",
";)"
);
$emotetag = array("<img src='glad.gif'>",
"<img src='sur.gif'>",
"<img src='ked.gif'>",
"<img src='skratt.gif'>",
"<img src='cool.gif'>",
"<img src='ironi.gif'>"
);

$text = str_replace($emotearr, $emotetag, $text);

    $insertSQL = "insert into tagwall (name, email, time, text) values ('$name', '$email', '$time', '$text')";
    mysql_query($insertSQL);
}

//Get all the data from the MySQL database, sort by the row 'id' and limit the rows that's being printed to 20
//Make an array from the $result variable
//Convert the 'new line's to <br>
$result = mysql_query("SELECT * FROM tagwall ORDER BY id DESC LIMIT 20") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    echo "<font family='Trebuchet MS, sans-serif' size='2'><b><a href='mailto:%22.$row[' email']."'>".$row['name']."</a></b> - ".$row['time']."<br>";
    echo nl2br($row['text']);
    echo "<br><br>";
}

//Close the connection to the MySQL server
mysql_close();
?>

<br><br>

</body>
</html>
Avatar billede arne_v Ekspert
26. januar 2004 - 23:01 #13
PRIMARY KEY udfor feltet har samme effekt som en seperat til sidst.
Avatar billede xvid Seniormester
26. januar 2004 - 23:03 #14
arne v >> mener du at jeg skulle have sæt primary key i alle 5 felter?
Avatar billede detox Nybegynder
26. januar 2004 - 23:04 #15
Du skal rette disse linier til med dine egne oplysninger:

$host = "min host"; //Enter the address to your MySQL server
$user = "bruger"; //Enter the user to your MySQL server
$pass = "password"; //Enter the password to your user
$db = "min_db"; //Enter the database on your MySQL server where you created the table from the structure.sql
Avatar billede xvid Seniormester
26. januar 2004 - 23:07 #16
detox >> de er som de skal, jeg skrev det med vilje for det er ikke ret klogt at give sit bruger navn og pw ud :-)

denne er også rettet
echo "<font family='Trebuchet MS, sans-serif' size='2'><b><a href='mailto:( %22 ).$row[' email']."'>".$row['name']."</a></b> - ".$row['time']."<br>";
Avatar billede 2c Nybegynder
26. januar 2004 - 23:14 #17
"mener du at jeg skulle have sæt primary key i alle 5 felter?"

Nej, det er kun id der skal være primary key.
Avatar billede xvid Seniormester
26. januar 2004 - 23:17 #18
jeg ved ikke hvad der er galt med den, den vil ikke poste online man vil godt i mysql, har ikke så meget forstand på det og hvis der er nogen det kunne hjælpe mig vil jeg være meget taknemmelig
Avatar billede arne_v Ekspert
26. januar 2004 - 23:17 #19
Du kan kun have en primary key.

Den vil normalt bestå af et felt men kan består af flere felter.

Hvis den består af et felt kan du skrive den efter feltet som 2c angav eller
til sidst som MySQL selv foreslog.
Avatar billede arne_v Ekspert
26. januar 2004 - 23:21 #20
Principielt hører dit sidste problem nok mere hjemme i PHP kategorien end
i MySQL kategorien.
Avatar billede xvid Seniormester
26. januar 2004 - 23:21 #21
kan det være at der er tilføjet smileys, at den ikke virker?
Avatar billede detox Nybegynder
26. januar 2004 - 23:22 #22
Der var osse et par andre småfejl. Prøv den nu:

<html>
<head>
<style type='text/css'>
body {
  font-family: Trebuchet MS;
  color: #000000;
  font-size: 10pt;
}
INPUT {
  border: 1px solid;
  color: #000000;
}
TEXTAREA {
  border: 1px solid;
  color: #000000;
}
A {
  text-decoration: none;
  color: #000000;
}
A:hover {
  text-decoration: underline;
}
</style>
  <title>Tagwall made by Kasper Andersen</title>
</head>
<body>
<form method='post' action=''>

<table cellspacing='7' width="272">
  <tr>
    <td width="127"><b><font size="2" face="Arial">Dit navn</font></b></td>
    <td width="129"><b><font size="2" face="Arial">Din e-mail</font></b></td>
  </tr>
  <tr>
    <td width="127"><input type='text' name='name' onfocus="if(this.value=='Name')this.value='';" onblur="if(this.value=='')this.value='Name';" size='21' style="font-family: Arial; font-size: 10 pt; font-weight: bold"></td>
    <td width="129"><input type='text' name='email' onfocus="if(this.value=='E-mail')this.value='';" onblur="if(this.value=='')this.value='E-mail';" size='21' style="font-family: Arial; font-size: 10 pt; font-weight: bold; background-color: #FFFFFF; border-style: solid; border-width: 1"></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><b><font size="2" face="Arial">Din besked</font></b></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><textarea cols='51' rows='7' name='text' style="font-family: Arial; font-size: 10 pt; font-weight: bold"></textarea></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><input type='submit' name='send' value=' Post ' style="font-family: Arial; font-size: 10 pt; font-weight: bold; background-color: #FFFFFF; border-style: solid; border-width: 1"></form></td>
  </tr>
  <tr>
    <td width="260" colspan="2"><b>:) <img border="0" src="glad.gif" width="20" height="20">
      :( <img border="0" src="sur.gif" width="20" height="20">
      :'( <img border="0" src="ked.gif" width="20" height="20">
      :D <img border="0" src="skratt.gif" width="20" height="20">
      :P <img border="0" src="tagwall/cool.gif" width="20" height="20">
      ;) <img border="0" src="ironi.gif" width="20" height="20"></b></td>
  </tr>
</table>
<br><br>

<?php
//MySQL server configuration
$host = "Din host";     //Enter the address to your MySQL server
$user = "Username";     //Enter the user to your MySQL server
$pass = "Password";     //Enter the password to your user
$db = "Database navn";     //Enter the database on your MySQL server where you created the table from the structure.sql

//Do not modify anything under this line!
//Connect to the MySQL server
mysql_connect("$host", "$user", "$pass");

//Select a database
mysql_select_db($db);

if (isset($_POST['send'])) {
//Get the input typed in the form
$name = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];
$time = date("d/m-Y H:i:s");

//If nothing was typed in the name field, then the Name will be replaced with 'anonymous'
if ($_POST['name'] == "Name") {
    $name = "Anonymous";
}

//If nothing was typed in the E-mail field, then the E-mail will be replaced with null@null
if ($_POST['email'] == "E-mail") {
    $email = "null@null";
}

//If the text field isn't empty, then this code will be executed:
//If an URL was typed in the text field, then it will be replaced with <a href='http://somedomain.com'>http://somedomain.com</a>
//If an < or > has been typed, it will be replaced with &lt; or &gt;
//Insert the data into the MySQL database
if(!empty($_POST['text'])){
    $text = $_POST['text'];
    $text = ereg_replace("<", "&lt;", $text);
    $text = ereg_replace(">", "&gt;", $text);
    $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $text);

$emotearr = array(":)",
":(",
":'(",
":D",
":P",
";)"
);
$emotetag = array("<img src='glad.gif'>",
"<img src='sur.gif'>",
"<img src='ked.gif'>",
"<img src='skratt.gif'>",
"<img src='cool.gif'>",
"<img src='ironi.gif'>"
);
$text = str_replace($emotearr, $emotetag, $text);
    $insertSQL = "insert into tagwall (name, email, time, text) values ('$name', '$email', '$time', '$text')";
    mysql_query($insertSQL);
}
}
//Get all the data from the MySQL database, sort by the row 'id' and limit the rows that's being printed to 20
//Make an array from the $result variable
//Convert the 'new line's to <br>
$result = mysql_query("SELECT * FROM tagwall ORDER BY id DESC LIMIT 20") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    echo "<font family='Trebuchet MS, sans-serif' size='2'><b><a href='mailto:".$row['email']."'>".$row['name']."</a></b> - ".$row['time']."<br>";
    echo nl2br($row['text']);
    echo "<br><br>";
}
//Close the connection to the MySQL server
mysql_close();
?>
</body>
</html>
Avatar billede xvid Seniormester
26. januar 2004 - 23:23 #23
jeg prøver lige
Avatar billede 2c Nybegynder
26. januar 2004 - 23:26 #24
Det er svært at fejl rette, når man ikke ved hvor det går galt.
Prøv at sætte en or die efter dine sql forespørgsler.

eksempel:

mysql_query($insertSQL) or die("Kunne ikke indsætte");;
Avatar billede xvid Seniormester
26. januar 2004 - 23:30 #25
har lige prøvet og fik denne fejl

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
Avatar billede xvid Seniormester
26. januar 2004 - 23:32 #26
2c >> jeg kan godt skrive i falterne og når jeg trykker på post så sker der ingenting. jeg prøver lige dit forslag.
Avatar billede xvid Seniormester
26. januar 2004 - 23:41 #27
der får jeg også en fejl

der vel ikke nogen af jer der har en tagwall/weblog med smileys som I ikke bruger??
Avatar billede detox Nybegynder
26. januar 2004 - 23:59 #28
Har du prøvet den jeg postede. Der er fx rettet 2 fejl i denne linie:

echo "<font family='Trebuchet MS, sans-serif' size='2'><b><a href='mailto:%22.$row[' email']."'>".$row['name']."</a></b> - ".$row['time']."<br>";

%22 skal rettes til: "
$row[' email'] skal rettes til: $row['email']
Avatar billede xvid Seniormester
27. januar 2004 - 00:11 #29
detox >> vil du komme med hele filen så jeg ikke gøre noget forkert?
Avatar billede xvid Seniormester
27. januar 2004 - 00:29 #30
detox >> det lykkedes mig at poste med uden smileys, når jeg prøver at skrive en tekst + :) sker der ikke noget, ved du hvorfor?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester