Permalänk
Avstängd

Gästbok problem

Hej

Har en gästbok i PHP koden är

Jag vill kunna ta bort ett inlägg beroende på vilket id texten har i databasen.
Jag vill ta bor inlägget genom att jag trycker på ta bort knappen bre vid meddelandet. Har gjort en submitknapp på rad 72. Kör mysql_query för att ta bort inlägget på rad 47 (den är inte färdigkodad)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang ="sv"> <head> <link rel="stylesheet" type="text/css" href="style.css"/> <title> Gästbok </title> </head> <body> <?php include('geshi.php'); if (mysql_connect('localhost','root','') && mysql_select_db('guestbook')){ $time = time(); $errors = array(); if (isset($_POST['guestbook_name'], $_POST['guestbook_message'])){ $name = mysql_real_escape_string($_POST['guestbook_name']); $message = mysql_real_escape_string($_POST['guestbook_message']); $kode = mysql_real_escape_string($_POST['kode']); $value = mysql_real_escape_string($_POST['value']); if(empty($name) || empty($message)){ $errors[] = 'Fyll i alla fält!'; } if(empty ($errors)){ $insert ="INSERT INTO `entries` VALUES ('','$time','$name','$message','$kode','$value')"; if(mysql_query($insert)){ header('Location: '. $_SERVER['PHP_SELF']); }else{ $errors[] = 'Något gick fel.'; } }else{ foreach($errors as $error){ echo '<div class=error>' . $error . '</div>'; } } } $entries = mysql_query("SELECT `timestamp`,`name`,`message`,`kode`,`value` FROM `entries` ORDER BY `timestamp` DESC"); /*----------------------------------------------------------------------------------------------------------------------------- $delete_message = mysql_query("DELETE `timestamp`,`name`,`message`,`kode`,`value` FROM `entries` WHERE "); ------------------------------------------------------------------------------------------------------------------------------*/ if (mysql_num_rows($entries)==0){ echo 'Inga medelanden'; }else{ while($entries_row = mysql_fetch_assoc($entries)){ $entries_timestamp = date('Y-m-d H:i',$entries_row['timestamp']); $entries_name = $entries_row['name']; $entries_message = $entries_row['message']; $entries_kode = $entries_row['kode']; $entries_value = $entries_row['value']; echo '<p><div id="text"><b><u>'.$entries_name ." ". $entries_timestamp.'</u> </b><br></div>'. nl2br(htmlspecialchars ($entries_message)).'<br><p>'; if($entries_value != 'nothing'){ // Make a new GeSHi object, with the source, language and path set $source = $entries_kode; $language = $entries_value; $path = 'geshi/'; $geshi = new GeSHi($source, $language, $path); //submit knapp. echo '<i>Kod '.$language.'</i>' ?> <input type="submit" value="tabort"> <?php echo $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS).$geshi->set_line_style('background: #eeeeee;', 'background: #eeeeee;', false) . $geshi->parse_code(); } } } }else{ echo 'Could not connect'; } ?> <hr> <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="POST"> Name:<br><input type="text" name="guestbook_name" maxlength="25"><br> Message:<br><textarea name="guestbook_message" rows="5" cols="50"></textarea><br> Kod: <select name="value"> <option value="nothing">Inget</option> <option value="C++">C++</option> <option value="java5">Java</option> <option value="php">PHP</option> <option value="css">CSS</option> <option value="html4strict">HTML</option> </select> <br><textarea name="kode" rows="5" cols="50"></textarea><br> <input type="submit" value="Ny"> </form> </body> </html>

Visa signatur

CPU: AMD Phenom2 X4 955 3,2GHz| RAM: Kingston 2x2048MB| HDD: WD Caviar® Black 1TB 3,5| ASUS M4A87TD/USB3| PSU: Corsair 650W| GPU: XFX Radeon HD 5770 1GB| OS: Windows 7| Chassi: Antec Three Hundred

Permalänk
Medlem

Vad är problemet?

Om det är sql-koden du undrar över kan det se ut såhär:

$sql = mysql_query("DELETE FROM table WHERE id = '$id'");

Visa signatur

Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB

Permalänk
Avstängd

Nej problemet är hur jag ska göra så att bara det inlägget jag vill ta bor försvinner inta alla

Skickades från m.sweclockers.com

Visa signatur

CPU: AMD Phenom2 X4 955 3,2GHz| RAM: Kingston 2x2048MB| HDD: WD Caviar® Black 1TB 3,5| ASUS M4A87TD/USB3| PSU: Corsair 650W| GPU: XFX Radeon HD 5770 1GB| OS: Windows 7| Chassi: Antec Three Hundred

Permalänk
Medlem
Skrivet av pandy24:

Nej problemet är hur jag ska göra så att bara det inlägget jag vill ta bor försvinner inta alla

Skickades från m.sweclockers.com

Du måste köra en koll när man trycker på ta bort knappen och skicka med id för att kunna matcha id mot databasen så att du tar bort rätt meddelande.

Visa signatur

Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB

Permalänk
Avstängd

Det var ungefär så jag också hade tänkt men hur ska jag göra så att knappen och just det meddelandet vet att de hör ihop? Det är ju bara en loop som körs.
Koden ser ut såhär nu:

<link rel="stylesheet" type="text/css" href="style.css"/> <?php include('geshi.php'); if (mysql_connect('localhost','root','') && mysql_select_db('guestbook')){ $time = time(); $errors = array(); if(isset($_POST['delete'])){ mysql_query("DELETE FROM `entries`"); } if (isset($_POST['guestbook_name'], $_POST['guestbook_message'])){ $name = mysql_real_escape_string($_POST['guestbook_name']); $message = mysql_real_escape_string($_POST['guestbook_message']); $kode = mysql_real_escape_string($_POST['kode']); $value = mysql_real_escape_string($_POST['value']); if(empty($name) || empty($message)){ $errors[] = 'Fyll i alla fält!'; } if(empty ($errors)){ $insert ="INSERT INTO `entries` VALUES ('','$time','$name','$message','$kode','$value')"; if(mysql_query($insert)){ header('Location: '. $_SERVER['PHP_SELF']); }else{ $errors[] = 'Något gick fel.'; } }else{ foreach($errors as $error){ echo '<div class=error>' . $error . '</div>'; } } } $entries = mysql_query("SELECT `timestamp`,`name`,`message`,`kode`,`value` FROM `entries` ORDER BY `timestamp` DESC"); if (mysql_num_rows($entries)==0){ echo 'Inga medelanden'; }else{ while($entries_row = mysql_fetch_assoc($entries)){ $entries_timestamp = date('Y-m-d H:i',$entries_row['timestamp']); $entries_name = $entries_row['name']; $entries_message = $entries_row['message']; $entries_kode = $entries_row['kode']; $entries_value = $entries_row['value']; echo '<p><div id="message_head">'.$entries_name ." ". $entries_timestamp; $id = '67'; ?> <form action="index.php" method="POST"> <input name="delete" type="submit" value="tabort" > </form> <?php echo '</div>'; echo nl2br(htmlspecialchars ($entries_message)).'<br><p>'; if($entries_value != 'nothing'){ // Make a new GeSHi object, with the source, language and path set $source = $entries_kode; $language = $entries_value; $path = 'geshi/'; $geshi = new GeSHi($source, $language, $path); echo '<i>Kod '.$language.'</i>'; echo $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS).$geshi->set_line_style('background: #eeeeee;', 'background: #eeeeee;', false) . $geshi->parse_code(); } } } }else{ echo 'Could not connect'; } ?>

Visa signatur

CPU: AMD Phenom2 X4 955 3,2GHz| RAM: Kingston 2x2048MB| HDD: WD Caviar® Black 1TB 3,5| ASUS M4A87TD/USB3| PSU: Corsair 650W| GPU: XFX Radeon HD 5770 1GB| OS: Windows 7| Chassi: Antec Three Hundred

Permalänk
Medlem

Du kan ha en input som är hidden och har value där du har id. Sen gör du ju bara en koll om man har tryckt på ta bort knappen och hämtar id från post. Typ såhär:

if(isset($_POST['delete'])) { $id = $_POST['id']; $sql = mysql_query("DELETE * FROM entries WHERE id = '$id'"); } echo '<form action="index.php" method="POST"> <input name="id" type="hidden" value="'.$entries_row['id'].'" > <input name="delete" type="submit" value="tabort" > </form>'

Visa signatur

Intel i7 2600K @ 4.5GHz | GeForce GTX 680 | ASUS P8P67 PRO | Corsair Dominator 16GB 1600MHz | Samsung 830 256GB

Permalänk
Avstängd

Tack det fungerar nu.
Men har ett till problem.
Problemet är att jag vill att formuläret som är i edit.php ska få ett standardvärde. Standardvärdet ska vara detsamma som redan står i meddelandet. Så om namnet var typ Pandy så ska det stå Pandy i guestbook_name_edit fältet. Har försökt göra för guestbook_name_edit fältet men det fungerar inte.

edit.php

<?php $id = $_POST['id']; $name_chosen = mysql_query("SELECT `name` FROM `entries` WHERE id = '$id'"); echo '<form action="index.php" method="POST"> Name:<br><input type="text" value="'.$name_chosen.'" name="guestbook_name_edit" maxlength="25"><br> Message:<br><textarea name="guestbook_message_edit" rows="5" cols="50"></textarea><br> Kod: <select name="value_edit"> <option value="nothing">Inget</option> <option value="C++">C++</option> <option value="java5">Java</option> <option value="php">PHP</option> <option value="css">CSS</option> <option value="html4strict">HTML</option> </select> <br><textarea name="kode_edit" rows="5" cols="50"></textarea><br> <input name="id_edit" type="hidden" value="'.$id.'" > <input name="save_edit" type="submit" value="Spara ändring"> </form>'; ?>

guestbook.php

<link rel="stylesheet" type="text/css" href="style.css"/> <?php include('geshi.php'); if (mysql_connect('localhost','root','') && mysql_select_db('guestbook')){ $time = time(); $errors = array(); if(isset($_POST['delete'])){ $id = $_POST['id']; mysql_query("DELETE FROM entries WHERE id = '$id'"); } if(isset($_POST['save_edit'])) { $id = $_POST['id_edit']; if(isset($_POST['save_edit'])){ $name_edit = $_POST['guestbook_name_edit']; $message_edit = $_POST['guestbook_message_edit']; $value_edit = $_POST['value_edit']; $kode_edit = $_POST['kode_edit']; mysql_query("UPDATE entries SET name = '$name_edit', message = '$message_edit', kode = '$kode_edit', value ='$kode_edit' WHERE id = '$id'"); } } if (isset($_POST['guestbook_name'], $_POST['guestbook_message'])){ $name = mysql_real_escape_string($_POST['guestbook_name']); $message = mysql_real_escape_string($_POST['guestbook_message']); $kode = mysql_real_escape_string($_POST['kode']); $value = mysql_real_escape_string($_POST['value']); if(empty($name) || empty($message)){ $errors[] = 'Fyll i alla fält!'; } if(empty ($errors)){ $insert ="INSERT INTO `entries` VALUES ('','$time','$name','$message','$kode','$value')"; if(mysql_query($insert)){ header('Location: '. $_SERVER['PHP_SELF']); }else{ $errors[] = 'Något gick fel.'; } }else{ foreach($errors as $error){ echo '<div class=error>' . $error . '</div>'; } } } $entries = mysql_query("SELECT * FROM `entries` ORDER BY `timestamp` DESC"); if (mysql_num_rows($entries)==0){ echo 'Inga medelanden'; }else{ while($entries_row = mysql_fetch_assoc($entries)){ $entries_timestamp = date('Y-m-d H:i',$entries_row['timestamp']); $entries_name = $entries_row['name']; $entries_message = $entries_row['message']; $entries_kode = $entries_row['kode']; $entries_value = $entries_row['value']; echo '<p><div id="message_head">'.$entries_name ." ". $entries_timestamp; $id = '67'; echo '<form action="index.php" method="POST"> <input name="id" type="hidden" value="'.$entries_row['id'].'" > <input name="delete" type="submit" value=" " class="submit_delete"> </form> <form action="edit.php" method="POST"> <input name="id" type="hidden" value="'.$entries_row['id'].'" > <input name="edit" type="submit" value=" " class="submit_edit"> </form>'; echo '</div>'; echo nl2br(htmlspecialchars ($entries_message)).'<br><p>'; if($entries_value != 'nothing'){ // Make a new GeSHi object, with the source, language and path set $source = $entries_kode; $language = $entries_value; $path = 'geshi/'; $geshi = new GeSHi($source, $language, $path); echo '<i>Kod '.$language.'</i>'; echo $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS).$geshi->set_line_style('background: #eeeeee;', 'background: #eeeeee;', false) . $geshi->parse_code(); } } } }else{ echo 'Could not connect'; } ?>

Visa signatur

CPU: AMD Phenom2 X4 955 3,2GHz| RAM: Kingston 2x2048MB| HDD: WD Caviar® Black 1TB 3,5| ASUS M4A87TD/USB3| PSU: Corsair 650W| GPU: XFX Radeon HD 5770 1GB| OS: Windows 7| Chassi: Antec Three Hundred