Vraag & Antwoord

Webprogrammeren & scripting

Bericht wordt niet toegevoegd???

5 antwoorden
  • Ik heb de volgende twee bestanden. Vanuit news_new.php wil ik een bericht aanmaken en verzenden naar news_list.php waar hij gelijk wordt weergegeven en naar de database wordt verzonden. Alleen de laatste twee opdrachten voert hij niet uit. Kan iemand mij verder helpen, ik kan de fout niet vinden. ============= news_new.php ============= [code:1:da0dae5150] <FORM ACTION="news_list.php" METHOD="POST"> <table width="550" border="1" align="center" cellpadding="0" cellspacing="2" bordercolor="#FFFFFF" bgcolor="#999999"> <tr> <th scope="row"><div align="center"><span class="style1">Berichttitel</span></div></th> <td width="350"> <input type="text" name="news_header" size=30 maxlength=120></td> </tr> <tr> <th scope="row"><div align="center"><span class="style1">Datum/tijd</span></div></th> <td> <input type="text" name="news_datetime" value="<?php echo date("Y-m-d H:i:s")?>" size="19" maxlength="19"></td> </tr> <tr> <th width="200" scope="row"><div align="center"><span class="style1">Berichttekst</span></div></th> <td> <textarea name="news_main" cols="60" rows="10"></textarea></td> </tr> <tr> <th colspan="2" scope="row"> <input type="hidden" name="action" value="insert"> <input type="submit" name="insert" value="Voeg bericht toe"></th> </tr> </table> </FORM> [/code:1:da0dae5150] ============== news_list.php ============== [code:1:da0dae5150] <?php include("../nieuws/config.php"); $news_SQL = "SELECT * , DATE_FORMAT(news_datetime, '%d-%m-%Y %H:%i') AS nieuws_datumtijd FROM news ORDER BY news_datetime DESC"; $news_result = mysql_query($news_SQL); ?> <?php // Dit deel zorgt voor de weergave van de berichten. while($news = mysql_fetch_array($news_result)) { if($_GET['action']=="delete") { // Er is op de hyperlink Verwijderen geklikt: record verwijderen $news_SQL_del = "DELETE FROM news WHERE news_ID=$news_ID"; $bool = mysql_query($news_SQL_del); if($bool == 1) echo "<script LANGUAGE=Javascript>window.alert('Het bericht is verwijderd.')</script>"; if($bool <> 1) echo "<script LANGUAGE=Javascript>window.alert('Er is een fout opgetreden bij het verwijderen.')</script>"; } if($_POST['action']=="insert") { // Regeleinden in de hoofdtekst omzetten in HTML-regeleinden $news_main = nl2br($news_main); $news_main = eregi_replace("\n", "", $news_main); $news_SQL_insert = 'INSERT INTO news (news_header, news_datetime, news_main) VALUES ("'. $_POST['news_header'] . '" , "'. $_POST['news_datetime'] . '", "'. $_POST['news_main']. '")'; $bool = mysql_query($news_SQL_insert); if($bool == 1) echo "<script language=javascript>window.alert('Het bericht is toegevoegd.')</script>"; if($bool <> 1) echo "<script language=javascript>window.alert('Er is een fout opgetreden bij het toevoegen van het bericht.')</script>"; } ?> [/code:1:da0dae5150] Alvast heel erg bedankt
  • Staat er toevallig nog niets in je tabel? Je hebt de opdrachten namelijk in de lus zitten waarmee je door de berichten loopt. Het lijkt me overigens sowieso geen goed idee om deze bewerkingen binnen de lus te zetten, ze worden zo voor elk gevonden record uitgevoerd en dat betekent dus bij een gevulde table steeds meer inserts na elke insert actie (telkens een verdubbeling van het aantal records).
  • beste annie nee er staan nog geen berichten in de database. Is dit het probleem? en hoe zou jij het dan anders opzetten? Alvast bedankt
  • [quote:d235d20570="wpbremer"]nee er staan nog geen berichten in de database. Is dit het probleem?[/quote:d235d20570] Ja, doordat er geen berichten in je database staan zal je ook niet in de lus terechtkomen waardoor dus ook de bewerkingen binnen die lus niet worden uitgevoerd. [quote:d235d20570="wpbremer"]en hoe zou jij het dan anders opzetten?[/quote:d235d20570] Eerst alle bewerkingen uitvoeren en daarna pas de presentatie van de items doen. Dus als ik je code er even bij pak dan wordt dat iets als: [code:1:d235d20570] <?php include("../nieuws/config.php"); // voer de gekozen bewerking uit if($_GET['action']=="delete") { // Er is op de hyperlink Verwijderen geklikt: record verwijderen $news_SQL_del = "DELETE FROM news WHERE news_ID=$news_ID"; $bool = mysql_query($news_SQL_del); if($bool == 1) echo "<script LANGUAGE=Javascript>window.alert('Het bericht is verwijderd.')</script>"; if($bool <> 1) echo "<script LANGUAGE=Javascript>window.alert('Er is een fout opgetreden bij het verwijderen.')</script>"; } if($_POST['action']=="insert") { // Regeleinden in de hoofdtekst omzetten in HTML-regeleinden $news_main = nl2br($news_main); $news_main = eregi_replace("\n", "", $news_main); $news_SQL_insert = 'INSERT INTO news (news_header, news_datetime, news_main) VALUES ("'. $_POST['news_header'] . '" , "'. $_POST['news_datetime'] . '", "'. $_POST['news_main']. '")'; $bool = mysql_query($news_SQL_insert); if($bool == 1) echo "<script language=javascript>window.alert('Het bericht is toegevoegd.')</script>"; if($bool <> 1) echo "<script language=javascript>window.alert('Er is een fout opgetreden bij het toevoegen van het bericht.')</script>"; } // toon de berichten uit de database $news_SQL = "SELECT * , DATE_FORMAT(news_datetime, '%d-%m-%Y %H:%i') AS nieuws_datumtijd FROM news ORDER BY news_datetime DESC"; $news_result = mysql_query($news_SQL); // Dit deel zorgt voor de weergave van de berichten. while($news = mysql_fetch_array($news_result)) { echo '<h2>', $news['news_header'], '</h2>'; echo '<p>', $news['news_main'], '</p>'; } ?> [/code:1:d235d20570] Overigens zie ik in je code nog wat andere punten die voor verbetering vatbaar zijn, bijv: [list:d235d20570] [*:d235d20570]controleer [b:d235d20570]alle[/b:d235d20570] input voordat je deze gebruikt in een database query (bijv. de $news_id in het DELETE statement) [*:d235d20570]In een aantal gevallen gebruik je meerdere if-statements. Je kan ook gebruik maken van [color=darkred:d235d20570]if (a) { // is a } else { // is niet a }[/color:d235d20570] [*:d235d20570]de correcte wijze om een javascript-blok toe te voegen is: [color=darkred:d235d20570]<script type='text/javascript'>[/color:d235d20570]......enz [/list:u:d235d20570]
  • beste annie alvast heel erg bedankt voor je reactie, ik zal het nu even gaan proberen.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.