login  Naam:   Wachtwoord: 
Registreer je!
 Forum

$_GET['id']; werkt niet

Offline Duikboot - 18/10/2004 12:36
Avatar van DuikbootGrafische gevorderde Ik ben bezig met een forum, maar als ik een $_get[id] erin zet word het topicid die de get op moet halen niet opgeslagen, de rest van de form word wel opgeslagen.... ook zie ik de hele secondes niet, maar alleen 0, 4, 7 etc... geen 01, 45 etc.. iemand die de oplossing voor deze 2 dingen weet?

  1. <?
  2.  
  3. require("config.php");
  4. include "includes/header.php";
  5.  
  6. if ($_POST[submit]) {
  7.  
  8. if ($_POST['reply'] == "" )
  9. {
  10. echo "Je moet natuurlijk wel een bericht invullen. <a href=\"javascript:history.go(-1)\">Ga terug.</a>";
  11. }
  12. else
  13. {
  14. // vars (de $_GET['id'] dus
  15. $topicid = $_GET['id'];
  16. // datum en tijd gedeelte
  17. $datum = date("j/n/Y");
  18. $tijd = date("H:i:s");
  19. // schrijven naar de db
  20. $insert = "INSERT INTO forumreplies (replyid, topicid, datum, auteur, reply) VALUES ('', '$topicid', '$datum - $tijd', '$gebruikersnaam', '$_POST[reply]')";
  21. $query = mysql_query($insert);
  22. echo "Je reactie is geplaatst, klik <a href=\"viewtopic.php?id=$topicid\">hier</a> om je reactie te bekijken";
  23. }
  24. }
  25. include "includes/footer.php";
  26. ?>

27 antwoorden

Gesponsorde links
Offline TriX - 18/10/2004 12:38
Avatar van TriX HTML interesse je reply id value is leeg??
Offline Duikboot - 18/10/2004 12:43
Avatar van Duikboot Grafische gevorderde Nee, dat niet. Dat is een auto increment die elke reply een id meegeeft, die is niet leeg zie ik net in de phpmyadmin.
Offline xSc - 18/10/2004 12:59
Avatar van xSc Onbekend $_GET['id'] is dus id in de url.

Mag ik verder iets zeggen over je script?

- Het is $_POST['submit'] en niet $_POST[submit]. Het mag wel werken, maar het is niet correct.
- Gebruik de functie isSet() om te controleren of een var geset is:
if (isSet($_POST['submit'])) {
- Kopieer een $_POST of $_GET-var niet naar een andere var, maar gebruik hem rechtstreeks. Dus niet dit: $topicid = $_GET['id'].
- MySQL kan zelf met data en tijden overweg:
$datum = date("j/n/Y");
$tijd = date("H:i:s");
is dus niet nodig. (zie het type DATE / TIME / DATETIME).
- Geef logische variabelenamen: dus: eerste letter de letter van het type, gevolgd door een naam waarvan je weet waarvoor hij gebruikt wordt: bijv. een nummer: $iElementen voor het aantal elementen. $sMijnString voor een string, enz..
- Zorg voor goede foutafhandeling (niet met or die()):

if ($rMijnQuery = mysql_query("SELECT enz.")) {
echo 'De gegevens kunnen niet worden opgevraagd!';
}
else {

}
Offline Duikboot - 18/10/2004 13:00 (laatste wijziging 18/10/2004 13:23)
Avatar van Duikboot Grafische gevorderde Ik zal eens kijken.... thx, hiermee moet het wel lukken denk ik...

EDIT: Ja, gelukt, alleen nu de resultaten nog showen, maar die select.... daar heb ik nog een beetje ruzie mee :S

  1. <?
  2. require("config.php");
  3. include "includes/header.php";
  4. include "config.php";
  5. echo "<center>";
  6. $sql = mysql_query("SELECT * FROM forumtopics WHERE id='$id' ORDER BY id ASC");
  7. while($select = mysql_fetch_assoc($sql)){
  8. echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select['auteur'].'<br>Gepost op: '.$select['datum'].'<br><hr><br>'.$select['topic'].'<br></td></tr></table>';
  9. }
  10. echo "<hr color=\"#000000\" width=\"98%\" size=\"1\">";
  11. $sql2 = mysql_query("SELECT * FROM forumreplies WHERE id='$id' ORDER BY id ASC");
  12. while($select2 = mysql_fetch_assoc($sql2)){
  13. echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select2['auteur'].'<br>Gepost op: '.$select2['datum'].'<br><hr><br>'.$select2['topic'].'<br></td></tr></table>';
  14. }
  15. echo "<form method=\"POST\" action=\"input_reply.php?id=$id\">";
  16. echo "<textarea name=\"reply\" rows=\"7\" cols=\"50\"></textarea>";
  17. echo "<input type=\"submit\" name=\"submit\" value=\"Plaats reactie\">";
  18. echo "</form>";
  19. echo "</center>";
  20. include "includes/footer.php";
  21. ?>
Offline TriX - 18/10/2004 13:26
Avatar van TriX HTML interesse is je $id wel bekend op dit punt??
geef m is weer!

echo "$id";
Offline Duikboot - 18/10/2004 13:29
Avatar van Duikboot Grafische gevorderde Die id en alles word opgeslagen.... euh..... misschien moet ik er eens een goede query inzetten, misschien dat dat helpt... dom, dom, dom...
Offline TriX - 18/10/2004 13:30
Avatar van TriX HTML interesse wat deed je nou verkeerd dan?

Offline Duikboot - 18/10/2004 13:33
Avatar van Duikboot Grafische gevorderde Geen idee, maar het werkt niet, de topicid's worden opgeslagen, maar de query die ik nodig heb om de replys op te halen wil maar niet lukken....
Offline TriX - 18/10/2004 13:37 (laatste wijziging 18/10/2004 13:38)
Avatar van TriX HTML interesse en zo?



<?
session_start();
require("config.php");
include "includes/header.php";
include "config.php";
echo "<center>";
$sql = "SELECT * FROM forumtopics WHERE id='$id' ORDER BY id ASC";
while($select = mysql_fetch_assoc($sql)){
echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select['auteur'].'<br>Gepost op: '.$select['datum'].'<br><hr><br>'.$select['topic'].'<br></td></tr></table>';
}
echo "<hr color=\"#000000\" width=\"98%\" size=\"1\">";
$sql2 = "SELECT * FROM forumreplies WHERE id='$id' ORDER BY id ASC";
while($select2 = mysql_fetch_assoc($sql2)){
echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select2['auteur'].'<br>Gepost op: '.$select2['datum'].'<br><hr><br>'.$select2['topic'].'<br></td></tr></table>';
}
echo "<form method=\"POST\" action=\"input_reply.php?id=$id\">";
echo "<textarea name=\"reply\" rows=\"7\" cols=\"50\"></textarea>";
echo "<input type=\"submit\" name=\"submit\" value=\"Plaats reactie\">";
echo "</form>";
echo "</center>";
include "includes/footer.php";
?>
Offline xSc - 18/10/2004 13:40
Avatar van xSc Onbekend Zie mijn vorige reactie.

+

- Echo html tussen '. Dan hoef je ook niet onnodig te escapen.

@Trix,

variabelen buiten quotes (en zeker nummerieke waarden):

echo $id;
Offline TriX - 18/10/2004 13:42
Avatar van TriX HTML interesse doe ik nooit... maar ik zal erop letten! 
Offline Duikboot - 18/10/2004 13:53 (laatste wijziging 18/10/2004 17:46)
Avatar van Duikboot Grafische gevorderde
  1. <?
  2.  
  3. require("config.php");
  4. include "includes/header.php";
  5. include "config.php";
  6.  
  7.  
  8. echo "<center>";
  9.  
  10.  
  11.  
  12. $sql = mysql_query("SELECT * FROM forumtopics WHERE id=$id ORDER BY id ASC");
  13. while($select = mysql_fetch_assoc($sql)){
  14. echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select['auteur'].'<br>Gepost op: '.$select['datum'].'<br><hr><br>'.$select['topic'].'<br></td></tr></table>';
  15. }
  16.  
  17. echo "<hr color=\"#000000\" width=\"98%\" size=\"1\">";
  18.  
  19. $query = mysql_query("SELECT * FROM forumreplies WHERE topicid = " . '$id' . " ORDER BY id ASC");
  20.  
  21. if(mysql_num_rows($query) == 0)
  22.  
  23. {
  24. echo "Er zijn nog geen reacties op deze topic gegeven";
  25. }
  26. else
  27. {
  28. while($result= mysql_fetch_assoc($query))
  29. {
  30. echo "<b>$result[auteur]: </b>$result[reply]<br>";
  31. }
  32. }
  33.  
  34. echo "<form method=\"POST\" action=\"input_reply.php?id=$id\">";
  35. echo "<textarea name=\"reply\" rows=\"7\" cols=\"50\"></textarea>";
  36. echo "<input type=\"submit\" name=\"submit\" value=\"Plaats reactie\">";
  37. echo "</form>";
  38. echo "</center>";
  39. include "includes/footer.php";
  40.  
  41.  
  42. ?>
Offline TriX - 18/10/2004 15:02
Avatar van TriX HTML interesse mysql_query mag weg...
Offline xSc - 18/10/2004 15:21 (laatste wijziging 18/10/2004 15:21)
Avatar van xSc Onbekend Ongelofelijk: nog steeds niets met mijn reactie gedaan:

$sql2 = mysql_query("SELECT * FROM forumreplies where topicid=$id ORDER BY id DESC");

  1. <?php
  2. if ($!rSelectTopicReply = mysql_query("SELECT * FROM forumreplies WHERE topicid = " . $id . " ORDER BY id DESC")) {
  3. echo 'Kan de forumreplies niet opvragen!';
  4. }
  5. else {
  6. // Ga verder.
  7. }
  8. ?>
Offline Duikboot - 18/10/2004 15:22 (laatste wijziging 18/10/2004 15:22)
Avatar van Duikboot Grafische gevorderde Euh.. lijkt me niet.... Want die eerste haalt de topic op, en die tweede de reacties op die topic, dus als ik die weg haal klopt het sowieso niet meer. Ook zegtie dat er geen reacties zijn, terwijl die er echt wel zijn.

EDIT: henri, zal het meteen ff doen, sry
Offline SickBoy - 18/10/2004 17:37
Avatar van SickBoy MySQL beginner echo 'html' => beter php afsluiten en html typen, want nu moet php het parsen en dan nog eens de browser html omvormen
beter direct de browser zijn werk laten doen ;)

geen quotes rond vars (bij echo), inderdaad maar vergeet niet:

$sql = mysql_query("SELECT * FROM forumtopics WHERE id='".$id."' ORDER BY id ASC");


bij de 2e select ' ' vergeten

en overigens gebruikt ge ook echo ' ...' en dan \" => dit heeft geen nut, ofwel echo "\"" ofwel echo '\'' maar niet mengen
Offline Duikboot - 18/10/2004 17:47
Avatar van Duikboot Grafische gevorderde Volgens mij maakt dat parsen niet echt veel uit, maar je hebt wel gelikj ja (heb het mezelf zo geleerd, weet ook niet waarom) De code die ik nu heb staat een aantal posts hierboven. Bedoel je dat met die select?
Offline SickBoy - 18/10/2004 18:05
Avatar van SickBoy MySQL beginner ja die is het

maar in je eerste post geldt hetzelfde voor insert
Offline Duikboot - 18/10/2004 18:36
Avatar van Duikboot Grafische gevorderde Wel vreemd, wanneer ik die upload krijg ik nogsteeds diezelfde error te zien...
Offline xSc - 18/10/2004 18:36 (laatste wijziging 18/10/2004 18:37)
Avatar van xSc Onbekend @SickBody:

Let op, je gaat de fout in:

- Als je 1 regel html moeten laten schrijven, waarom zou je dat niet met PHP laten echoëen?

Dit scriptje is wel correct:

  1. <?php
  2. if ($!rSelectTopicReply = mysql_query("SELECT * FROM forumreplies WHERE topicid = " . $id . " ORDER BY id DESC")) {
  3. echo 'Kan de forumreplies niet opvragen!';
  4. }
  5. else {
  6. // Ga verder.
  7. }
  8. ?>


$id is een nummer. En nummers zet je niet tussen quotes.

bijv.

$iMijnTeller = 0;

maar ook in queries. Er horen in de query dus geen quotes om $id!

Offline Duikboot - 18/10/2004 18:39
Avatar van Duikboot Grafische gevorderde SELECT * FROM forumreplies WHERE topicid = " . $id . " ORDER BY id DESC

Ook met dat in de query krijg ik de error... Echt vermoeiend dit. Maar het moet en zal lukken!
Offline xSc - 18/10/2004 18:44
Avatar van xSc Onbekend - Post je huidige script even alsjeblieft.
- Welke foutmelding krijg je?
Offline bosgroen - 18/10/2004 19:16
Avatar van bosgroen Gouden medaille

PHP interesse
$_POST[reply] moet $_POST['reply']

opmerking over jouw script, als de pagina wordt geladen, dus zonder *.php?id=... dan zal je lelijke errors krijgen, doe een isset($_GET['id']) in een if-functie
Offline CelestialCelebi - 18/10/2004 20:10
Avatar van CelestialCelebi PHP gevorderde Yes, inderdaad.

  1. <?php
  2. if(isset($_GET['iID']))
  3. {
  4. // ga hier iets doen met $_GET['iID']
  5. // bijvoorbeeld een getal er van maken, zodat je geen SQL injection kunt krijgen:
  6. $_GET['iID'] = intval($_GET['iID']);
  7. }
  8. else
  9. {
  10. // ga hier mekkeren, er is geen ID, of laat een lijst zien waar je de ID's via de URL doorgeeft
  11. }
  12. ?>
Offline SickBoy - 18/10/2004 20:22 (laatste wijziging 18/10/2004 20:22)
Avatar van SickBoy MySQL beginner @ henri

echo "<form method=\"POST\" action=\"input_reply.php?id=$id\">";
echo "<textarea name=\"reply\" rows=\"7\" cols=\"50\"></textarea>";
echo "<input type=\"submit\" name=\"submit\" value=\"Plaats reactie\">";
echo "</form>";
echo "</center>";

ziet dat eruit als 1 echo
en het verschil in snelheid geldt trouwens ook voor 1 regel, ik pas dit zelf niet toe omdat het inderdaad handiger is met echo
MAAR voor een form daarentegen
Offline Duikboot - 18/10/2004 20:51
Avatar van Duikboot Grafische gevorderde Huidig script:

  1. <?
  2.  
  3. require("config.php");
  4. include "includes/header.php";
  5. include "config.php";
  6.  
  7.  
  8. echo "<center>";
  9.  
  10.  
  11.  
  12. $sql = mysql_query("SELECT * FROM forumtopics WHERE id=$id ORDER BY id ASC");
  13. while($select = mysql_fetch_assoc($sql)){
  14. echo '<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"black\" width=\"90%\"><tr><td>Gepost door:'.$select['auteur'].'<br>Gepost op: '.$select['datum'].'<br><hr><br>'.$select['topic'].'<br></td></tr></table>';
  15. }
  16.  
  17. echo "<hr color=\"#000000\" width=\"98%\" size=\"1\">";
  18.  
  19. $query = mysql_query('SELECT * FROM forumreplies WHERE topicid = " . $id . " ORDER BY id ASC');
  20.  
  21. if(mysql_num_rows($query) == 0)
  22.  
  23. {
  24. echo "Er zijn nog geen reacties op deze topic gegeven";
  25. }
  26. else
  27. {
  28. while($result= mysql_fetch_assoc($query))
  29. {
  30. echo "<b>$result[auteur]: </b>$result[reply]<br>";
  31. }
  32. }
  33.  
  34. echo "<form method=\"POST\" action=\"input_reply.php?id=$id\">";
  35. echo "<textarea name=\"reply\" rows=\"7\" cols=\"50\"></textarea>";
  36. echo "<input type=\"submit\" name=\"submit\" value=\"Plaats reactie\">";
  37. echo "</form>";
  38. echo "</center>";
  39. include "includes/footer.php";
  40.  
  41.  
  42. ?>


Misschien dat iemand weet wat er nog ingebouwd moet worden (of beter nog, iemand die dat wil doen )
Offline Duikboot - 19/10/2004 20:22 (laatste wijziging 19/10/2004 22:02)
Avatar van Duikboot Grafische gevorderde Ben nu in ieder geval een heel eind verder... Ik sorteerde op id, maar die kolom bestaat helemaal niet, dat moest replyid zijn. NU heb ik alleen een nieuw probleem. Wanneer er wel reacties zijn, staat er nu "geen reacties gepost", maar die zijn er wel. Wat kan er nu weer mis zijn? De query in ieder geval niet meer (denk ik)...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.416s