Avatar billede freesoft Praktikant
17. april 2005 - 12:40 Der er 27 kommentarer og
3 løsninger

Admin system til MySQL

Hej PHP-eksperter ;)

Jeg er ved at lave et admin system til min lille hjemmeside som henter tekst m.m. fra en mysql database.
Det jeg gerne vil lave er så jeg kan ændre teksterne m.m. uden at bruge f.eks. phpMyAdmin.

<?
include "../db.php";
$foresp = mysql_query("SELECT site, text_da, text_en FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"navn\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"navn\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
}
?>

Er så meget jeg har lavet indtil vidre. Den henter bare hvad der i databasen ind i et tekst felt. Så vil jeg gerne have sådan jeg kan ændre noget i tekstfeltet og så trykke Gem.
Jeg tror det er noget med UPDATE content SET kan bare ikke lige finde ud af hvordan jeg skal gøre det.

Tabellen content har felterne: ID, site, text_da, text_en
hvis det kan hjælpe.

Håber der er nogle der kan hjælpe lidt.

Mvh. Kim/FreeSoft
Avatar billede busschou Praktikant
17. april 2005 - 12:44 #1
Du skal starte med at putte en form uden om så den indeholder alle felterne
Den skal have post som metode og samme side som action
Du skal også tilføje en submit knap
Så kan du på din side teste om formen er submittet
Hvis den er det så laver du den update
Avatar billede BTEngineer Novice
17. april 2005 - 13:00 #2
Prøv med:

<?
include "../db.php";
$foresp = mysql_query("SELECT site, text_da, text_en FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
echo "<input type='submit' value='Gem'>";
echo "</form>";
}

mysql_query("UPDATE site, text_da, text_en FROM content WHERE id = '$id');
?>
Avatar billede BTEngineer Novice
17. april 2005 - 13:05 #3
Husk lige at ændre action der står test.php, der skal stå hvad din fil hedder selvfølgelig. Har osse lige ændret et par ting, tror det virker ;).

<?
include "../db.php";
$foresp = mysql_query("SELECT site, text_da, text_en FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
echo "<input type='submit' value='Gem'>";
echo "</form>";
}

mysql_query("UPDATE content SET $_POST[site] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_da] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_en] FROM WHERE id = '$id'");
?>
Avatar billede busschou Praktikant
17. april 2005 - 13:07 #4
dounie >> Der skal lige hives id med ud
<?
include "../db.php";
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
echo "<input type='hidden' name='id' value='$data[2]'>";
echo "<input type='submit' value='Gem'>";
echo "</form>";
}
if ($_POST['id'] != ""){
mysql_query("UPDATE content SET $_POST[site] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_da] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_en] FROM WHERE id = '$id'");
}
?>
Avatar billede busschou Praktikant
17. april 2005 - 13:08 #5
og den skulle så nok hedde $data[3] og ikke $data[2] :o)
Avatar billede busschou Praktikant
17. april 2005 - 13:09 #6
og hvis du så bruger samme side og skal kunne se ændringerne så skal sletningen foretages først:
<?
include "../db.php";
if ($_POST['id'] != ""){
mysql_query("UPDATE content SET $_POST[site] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_da] FROM WHERE id = '$id'");
mysql_query("UPDATE content SET $_POST[text_en] FROM WHERE id = '$id'");
}
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
echo "<input type='hidden' name='id' value='$data[3]'>";
echo "<input type='submit' value='Gem'>";
echo "</form>";
}
?>
Avatar billede busschou Praktikant
17. april 2005 - 13:12 #7
og så er der en sneget sig en forkert sql syntaks ind i update ...den må ikke indeholde From
----
<?
include "../db.php";
if ($_POST['id'] != ""){
mysql_query("UPDATE content SET site='$_POST[site]', text_da='$_POST[text_da]', text_en='$_POST[text_en]' WHERE id = '$id'");
}
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[0]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[1]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[2]</textarea>";
    echo "</td>";
  echo "</tr>";
echo "<input type='hidden' name='id' value='$data[3]'>";
echo "<input type='submit' value='Gem'>";
echo "</form>";
}
?>
Avatar billede BTEngineer Novice
17. april 2005 - 13:14 #8
Jeg ville gøre det sådan:

<?
include "../db.php";
$foresp = mysql_query("SELECT site, text_da, text_en,ID FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){
?>

<form action='test.php' method='POST'>
<tr>
<td>
<input type="text" name="site" maxlength="12" value="<? echo $data[site]; ?>">
</td>
<td>
Dansk tekst:<br>
<textarea name="text_da" cols="55" rows="12"><? echo $data[text_da]; ?></textarea>
</td>
<td>
Engelsk tekst:
<br>
<textarea name="text_en" cols="55" rows=\"12\"><? echo $data[text_en]; ?></textarea>
</td>
</tr>
<input type='hidden' name='id' value='<? echo $data[id]; ?>'>
<input type='submit' value='Gem' onclick="location.href='test.php?gem=ja'">
</form>
<?
}
if($_GET[gem] == "ja") {

mysql_query("UPDATE content SET $_POST[site] FROM WHERE ID = '$ID'");
mysql_query("UPDATE content SET $_POST[text_da] FROM WHERE ID = '$ID'");
mysql_query("UPDATE content SET $_POST[text_en] FROM WHERE ID = '$ID'");

}
?>
Avatar billede freesoft Praktikant
17. april 2005 - 13:16 #9
Har ikke lige testet det endnu..men gør der om 2 sek.
Men hvis jeg gerne vil have et password på?
Det skal bare være helt enkelt.
Jeg har et nyheds script som gør sådan: if($kodeord == "kodeord"){...

Hvordan skal jeg sætte det ind?
Avatar billede freesoft Praktikant
17. april 2005 - 13:17 #10
busschou -> Får 3 Gem knapper øverst med den sidste du kom med.
Avatar billede busschou Praktikant
17. april 2005 - 13:24 #11
dounie >>det er nok mere korrekt som dig at hive dem ud med deres navne
Men din query er helt forkert syntaks!
Det hedder "update tabel set felt1=val1, felt2=val2 where id=id"
Du sætter ikke værdierne og du har et From midt i det hele ;o/
Avatar billede busschou Praktikant
17. april 2005 - 13:26 #12
sådan ville jeg gøre :o)
-----
<?
include "../db.php";
if ($_POST['gem'] != ""){
mysql_query("UPDATE content SET site='$_POST[site]', text_da='$_POST[text_da]', text_en='$_POST[text_en]' WHERE id = '$id'");
}
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data['site']\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data['text_da']</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data['text_en']</textarea>";
    echo "</td>";
    echo "<td>";
    echo "<input type='hidden' name='id' value='$data['id']'>";
    echo "<input type='submit' name='gem' value='Gem'>";
    echo "</td>";
  echo "</tr>";
echo "</form>";
}
?>
Avatar billede BTEngineer Novice
17. april 2005 - 13:28 #13
Jeg er meget imod at bruge alle de echo kommandoer, det er svært at finde rundt i efter min mening. Jeg fjerne alle de echo kommandoer, og så ?> efter database hentningen, og så efter formen <? } ?>
Avatar billede busschou Praktikant
17. april 2005 - 13:29 #14
det kan du så nok godt have ret i dounie :o) ville jeg nok også selv gøre egentlig
Avatar billede freesoft Praktikant
17. april 2005 - 13:43 #15
Der kommer fejl i:
echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data['site']\">";

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
Avatar billede busschou Praktikant
17. april 2005 - 13:48 #16
der skal nok ikke være plinger
sådan ville jeg gøre :o)
-----
<?
include "../db.php";
if ($_POST[gem] != ""){
mysql_query("UPDATE content SET site='$_POST[site]', text_da='$_POST[text_da]', text_en='$_POST[text_en]' WHERE id = '$id'");
}
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"12\" value=\"$data[site]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[text_da]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[text_en]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "<input type='hidden' name='id' value='$data[id]'>";
    echo "<input type='submit' name='gem' value='Gem'>";
    echo "</td>";
  echo "</tr>";
echo "</form>";
}
?>
Avatar billede busschou Praktikant
17. april 2005 - 14:00 #17
hvis du i øvrigt vil have en simpel kode på som gør at kun dem med den kode kan gemme rettelser, så kan det gøres i javascript
---
function kode(){
var kode = promt("Indtast kode for rettelse!","");
if (kode == null || kode != "kodeord"){
  return false;
}else{
  return true;
}
}
---
din knap laver du så som
---
echo "<input type='submit' name='gem' value='Gem' onclick="return kode();">";
Avatar billede freesoft Praktikant
17. april 2005 - 14:00 #18
Det virker nu ;)
Er det ikke muligt at sætte et felt ind hvor man skal skrive et password? Før den gemmer i db'en.
Avatar billede busschou Praktikant
17. april 2005 - 14:03 #19
prøv ad om det jeg skrev virker?
Avatar billede freesoft Praktikant
17. april 2005 - 14:05 #20
Ja så det først da jeg havde skrevet det ;)
Avatar billede busschou Praktikant
17. april 2005 - 14:06 #21
funktionen skal ind i <head> sektionen på din side og ind under et <script> tag for at virke
Men skriv lige om det virker...tror jeg nok det gør
Avatar billede freesoft Praktikant
17. april 2005 - 14:16 #22
Jeg kan ikke få det til at virke..
Der sker ikke noget når jeg trykker på Gem
Avatar billede busschou Praktikant
17. april 2005 - 14:18 #23
må jeg se hele din kode som den er nu
Avatar billede freesoft Praktikant
17. april 2005 - 14:20 #24
<html>
  <head>
  <script type="text/javascript">
function kode(){
var kode = prompt("Indtast kode for rettelse!","");
if (kode == null || kode != "kodeord"){
return false;
}else{
return true;
}
}
</script>
    <title>Admin</title>
  </head>
  <body>
<table>
<?
include "../db.php";
if ($_POST[gem] != ""){
mysql_query("UPDATE content SET site='$_POST[site]', text_da='$_POST[text_da]', text_en='$_POST[text_en]' WHERE id = '$id'");
}
$foresp = mysql_query("SELECT site, text_da, text_en,id FROM content ORDER BY id DESC");
while($data = mysql_fetch_array($foresp)){

echo "<form action='test.php' method='POST'>";
  echo "<tr>";
    echo "<td>";
    echo "<input type=\"text\" name=\"site\" maxlength=\"9\" value=\"$data[site]\">";
    echo "</td>";
    echo "<td>";
    echo "Dansk tekst:<textarea name=\"text_da\" cols=\"55\" rows=\"12\">$data[text_da]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "Engelsk tekst:<textarea name=\"text_en\" cols=\"55\" rows=\"12\">$data[text_en]</textarea>";
    echo "</td>";
    echo "<td>";
    echo "<input type='hidden' name='id' value='$data[id]'>";
    echo "<input type='submit' name='gem' value='Gem' onclick=return kode();>";
    echo "</td>";
  echo "</tr>";
echo "</form>";
}
?>
</table>
</body>
</html>
Avatar billede busschou Praktikant
17. april 2005 - 14:21 #25
prøv rette
onclick=return kode();
til enten
onclick='return kode();'
eller
onclick='kode();'
og se om en af dem virker
Avatar billede freesoft Praktikant
17. april 2005 - 14:22 #26
Har fået det til at virke nu..
Rettet
echo "<input type='submit' name='gem' value='Gem' onclick='return kode();'>"; og prompt ;-)
Avatar billede busschou Praktikant
17. april 2005 - 14:23 #27
ok og den virker også med at det kun gemmer hvis der tastes rigtig?
I funktionen kan du jo rette "kodeord" til dit eget kodeord
Avatar billede freesoft Praktikant
17. april 2005 - 14:27 #28
Ja..der sker ingen ting når man skriver forkert..

Læg et svar hvis du vil ha' lidt point.
Avatar billede busschou Praktikant
17. april 2005 - 14:31 #29
troede jeg at jeg havde gjort :o) .. men jo tak.. godt det virker :o)
Avatar billede freesoft Praktikant
17. april 2005 - 16:19 #30
Lavde lidt om så det med kodeordet er i PHP:
if (($_POST[gem] != "") && ($kodeord == "kodeord")){
og
echo "Password:<input type='password' name='kodeord' />";
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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