14. maj 2010 - 22:11
Der er
6 kommentarer og 1 løsning
Slet fra MySQL med PHP??
Hej Jeg er absolut PHP begynder og følger en bog om emnet. Dog er det noget kode som ikke virker som det skal! Nedenstående kode logger fint ind i min database og jeg kan også indtaste data i formularen som gemmes korrekt, men jeg kan ikke slette noget igen via knappen "DELETE RECORD". Kan I gennemskue hvorfor? (det virker fint via CMD!) KODEN: <?php // sqltest.php require_once 'login.php'; $db_server = mysql_connect($db_hostname, $db_username, $db_password); if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); mysql_select_db($db_database, $db_server) or die("Unable to select database: " . mysql_error()); if (isset($_POST['author']) && isset($_POST['title']) && isset($_POST['category']) && isset($_POST['year']) && isset($_POST['isbn'])) { $author = get_post('author'); $title = get_post('title'); $category = get_post('category'); $year = get_post('year'); $isbn = get_post('isbn'); if (isset($_POST['delete']) && $isbn != "") { $query = "DELETE FROM classics WHERE isbn='$isbn'"; if (!mysql_query($query, $db_server)) echo "DELETE failed: $query<br />" . mysql_error() . "<br /><br />"; } else { $query = "INSERT INTO classics VALUES" . "('$author', '$title', '$category', '$year', '$isbn')"; if (!mysql_query($query, $db_server)) echo "INSERT failed: $query<br />" . mysql_error() . "<br /><br />"; } } echo <<<_END <form action="sqltest.php" method="post"><pre> Author <input type="text" name="author" /> Title <input type="text" name="title" /> Category <input type="text" name="category" /> Year <input type="text" name="year" /> ISBN <input type="text" name="isbn" /> <input type="submit" value="ADD RECORD" /> </pre></form> _END; $query = "SELECT * FROM classics"; $result = mysql_query($query); if (!$result) die ("Database access failed: " . mysql_error()); $rows = mysql_num_rows($result); for ($j = 0 ; $j < $rows ; ++$j) { $row = mysql_fetch_row($result); echo <<<_END <pre> Author $row[0] Title $row[1] Category $row[2] Year $row[3] ISBN $row[4] </pre> <form action="sqltest.php" method="post"> <input type="hidden" name="delete" value="yes" /> <input type="hidden" name="isbn" value="$row[4]" /> <input type="submit" value="DELETE RECORD" /></form> _END; } mysql_close($db_server); function get_post($var) { return mysql_real_escape_string($_POST[$var]); } ?>
Annonceindlæg fra QNAP
jeg tror $isbn er dit problem --> $query = "DELETE FROM classics WHERE isbn='$isbn'"; if (!mysql_query($query, $db_server)) echo "DELETE failed: $query<br />" . mysql_error() . "<br /><br />"; smid evtl. en extract($_POST); lige oven over den der og prøv igen - for eller fanger du ik den POST
eller sludder - tror bare det er alt det sludder kodning der forvirrer mig --> prøv det her: <?php // sqltest.php require_once 'login.php'; $db_server = mysql_connect($db_hostname, $db_username, $db_password); if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); mysql_select_db($db_database, $db_server) or die("Unable to select database: " . mysql_error()); if (isset($_POST['author']) && isset($_POST['title']) && isset($_POST['category']) && isset($_POST['year']) && isset($_POST['isbn'])) { $author = get_post('author'); $title = get_post('title'); $category = get_post('category'); $year = get_post('year'); $isbn = get_post('isbn'); if (isset($_POST['delete']) && $isbn != "") { $query = "DELETE FROM classics WHERE isbn='$isbn'"; if (!mysql_query($query, $db_server)) echo "DELETE failed: $query<br />" . mysql_error() . "<br /><br />"; } else { $query = "INSERT INTO classics VALUES" . "('$author', '$title', '$category', '$year', '$isbn')"; if (!mysql_query($query, $db_server)) echo "INSERT failed: $query<br />" . mysql_error() . "<br /><br />"; } } ?> <form action="sqltest.php" method="post"><pre> Author <input type="text" name="author" /> Title <input type="text" name="title" /> Category <input type="text" name="category" /> Year <input type="text" name="year" /> ISBN <input type="text" name="isbn" /> <input type="submit" value="ADD RECORD" /> </pre></form> <? $query = "SELECT * FROM classics"; $result = mysql_query($query); if (!$result) die ("Database access failed: " . mysql_error()); $rows = mysql_num_rows($result); for ($j = 0 ; $j < $rows ; ++$j) { $row = mysql_fetch_row($result); ?> <pre> Author <?=$row['0']?> Title <?=$row['1']?> Category <?=$row['2']?> Year <?=$row['3']?> ISBN <?=$row['4']?> </pre> <form action="sqltest.php" method="post"> <input type="hidden" name="delete" value="yes" /> <input type="hidden" name="isbn" value="<?=$row['4']?>" /> <input type="submit" value="DELETE RECORD" /></form> <? } mysql_close($db_server); function get_post($var) { return mysql_real_escape_string($_POST[$var]); } ?>
Hej RexReptiles Tak for forslaget! Jeg kan se at du "hopper" ud af PHP når der er HTML og tilbage efterfølgende. Der skal dog rettes i variablerne hvis det skal virke - sådan som jeg forstår det. Men kan det ikke lade sig gøre at blive i PHP og få den til at slette det ønskede fra databasen? Hvordan skal variablerne i HTML se ud hvis jeg skal benytte den metode du foreslår?
Author <?=$row['0']?> er det samme som <?php echo "Author".$row['0']; ?>
men jeg syntes den er voldsom den omgang der, det ligner bare et simpel udtræk, indsæt og slet - det kunne gøres uden alt det pjat som er med.
<?php // sqltest.php require_once 'login.php'; // vi kan godt finde ud af vores sql login og pass!!! mysql_connect($db_hostname, $db_username, $db_password); mysql_select_db($db_database, $db_server); //extract - så har vi $var uden POST extract($_POST); if (isset($author) && isset($title) && isset($category) && isset($year) && isset($isbn)) { if (isset($delete) && $isbn != "") { $query = "DELETE FROM classics WHERE isbn='$isbn'"; mysql_query($query); echo "<br /><br />"; } else { $query = "INSERT INTO classics VALUES" . "('$author', '$title', '$category', '$year', '$isbn')"; mysql_query($query); echo "<br /><br />"; } } ?> <form action="sqltest.php" method="post"> Author <input type="text" name="author" /> Title <input type="text" name="title" /> Category <input type="text" name="category" /> Year <input type="text" name="year" /> ISBN <input type="text" name="isbn" /> <input type="submit" value="ADD RECORD" /> </form> <? $query = "SELECT * FROM classics"; $result = mysql_query($query); $rows = mysql_num_rows($result); for ($j = 0 ; $j < $rows ; ++$j) { $row = mysql_fetch_row($result); ?> Author <?=$row['0']?> Title <?=$row['1']?> Category <?=$row['2']?> Year <?=$row['3']?> ISBN <?=$row['4']?> <form action="sqltest.php" method="post"> <input type="hidden" name="delete" value="yes" /> <input type="hidden" name="isbn" value="<?=$row['4']?>" /> <input type="submit" value="DELETE RECORD" /></form> <? } mysql_close($db_server); ?>
Kurser inden for grundlæggende programmering