Comment script validation

Status
Niet open voor verdere reacties.

Jardin

Gebruiker
Lid geworden
14 mei 2010
Berichten
26
Ho,

Ik heb een comment script waarbij de validatie op een nieuwe pagina weergegeven wordt en
ik begrijp maar niet wat ik moet veranderen om het op de zelfde pagina (het mooiste is boven
het formulier) zichtbaar te maken
Weet iemand hoe je dit doet?
Het formulier staat hier:
http://mensenmakenmuziek.nl/comments/comments.php

Dit is de validatie

Code:
 function smcom_check_for_errors() {

	global $comments_db_link, $COM_CONF, $COM_LANG;

	$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
	$result = mysql_query("SELECT ip FROM {$COM_CONF['dbbannedipstable']} WHERE ip='$ip'", $comments_db_link);

	if (mysql_num_rows($result)>0) {
		$error_message.=$COM_LANG['not_allowed'] . "<br />";
	}
	if ($_REQUEST['disc_name'] == '') {
		$error_message.=$_REQUEST['r_disc_name'] . "<br />";
	}
	if ($_REQUEST['disc_body'] == '') {
		$error_message.=$_REQUEST['r_disc_body'] . "<br />";
	}
	if ($_REQUEST['disc_email'] != '') {
		if (!smcom_is_email($_REQUEST['disc_email'])) {
			$error_message.="Invalid email address" . "<br />";
		}
	}
                     return $error_message;
}

dit is het formulier:

Code:
 <form method=POST action='{$COM_CONF['script_url']}'>
	              <input type=hidden name="action" value="add">
		      <input type=hidden name="href" value="{$_SERVER['REQUEST_URI']}">
		  <table width="290" border="0" cellspacing="1" cellpadding="2" align="left">
		    <tr> 
		      <td width="83" align="right"><font color="red" >*</font><font size=2>{$COM_LANG['Name']}:</font>
		        </td>
		      <td width="196" align="left">
		        <input type=text name="disc_name" maxlength=40 size=30>
		        <input type=hidden name="r_disc_name" value="{$COM_LANG['r_disc_name']}">
		        </td>
		    </tr>
		    <tr> 
		      <td width="83" align="right"><font size=2>{$COM_LANG['E-mail']}:</font></td>
		      <td width="196" align="left">
		        <input type="Text" name="disc_email" size="30" maxlength="70">
		        </td>
		    </tr>
		    <tr> 
		      <td width="83"></td>
		      <td width="196" align="left">
			<input type="checkbox" name="email_me"><font size=2><nobr>{$COM_LANG['Notify']}</nobr></font><br>
			<input type="checkbox" name="dont_show_email" CHECKED><font size=2><nobr>{$COM_LANG['Dont_show_email']}</nobr></font><br>
		        </td>
		    </tr>
		    <tr> 
		      <td valign="top" width="83" align="right"> 
		        <font color="red">*</font><font size=2>{$COM_LANG['Text']}:</font>
		      </td>
		      <td valign="top" width="196" align="left">
		        <textarea name="disc_body" cols="40" rows="13" wrap="VIRTUAL"></textarea>
		        <input type=hidden name="r_disc_body" value="{$COM_LANG['r_disc_text']}">
		        </td>
		    </tr>
		    <tr> 
		      <td valign="top" width="83" align="right">&nbsp; </td>
		      <td valign="top" width="196">
		        <div align="center">
		          <input type="submit" name="Submit" value="{$COM_LANG['Submit']}">
		          </div>
		      </td>
		    </tr>
		  </table>
		</form>

Groet
Jardin
 
je zet het gewoon op 1 pagina,

het word dan zoiets:
PHP:
<?php
   function smcom_check_for_errors() {

	global $comments_db_link, $COM_CONF, $COM_LANG;

	$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
	$result = mysql_query("SELECT ip FROM {$COM_CONF['dbbannedipstable']} WHERE ip='$ip'", $comments_db_link);

	if (mysql_num_rows($result)>0) {
		$error_message.=$COM_LANG['not_allowed'] . "<br />";
	}
	if ($_REQUEST['disc_name'] == '') {
		$error_message.=$_REQUEST['r_disc_name'] . "<br />";
	}
	if ($_REQUEST['disc_body'] == '') {
		$error_message.=$_REQUEST['r_disc_body'] . "<br />";
	}
	if ($_REQUEST['disc_email'] != '') {
		if (!smcom_is_email($_REQUEST['disc_email'])) {
			$error_message.="Invalid email address" . "<br />";
		}
	}
                     return $error_message;
}

if($_GET['action'] == 'add'){
   smcom_check_for_errors();
}
else
{ 
?>
 <form method=POST action=''>
	              <input type=hidden name="action" value="add">
		      <input type=hidden name="href" value="{$_SERVER['REQUEST_URI']}">
		  <table width="290" border="0" cellspacing="1" cellpadding="2" align="left">
		    <tr> 
		      <td width="83" align="right"><font color="red" >*</font><font size=2>{$COM_LANG['Name']}:</font>
		        </td>
		      <td width="196" align="left">
		        <input type=text name="disc_name" maxlength=40 size=30>
		        <input type=hidden name="r_disc_name" value="{$COM_LANG['r_disc_name']}">
		        </td>
		    </tr>
		    <tr> 
		      <td width="83" align="right"><font size=2>{$COM_LANG['E-mail']}:</font></td>
		      <td width="196" align="left">
		        <input type="Text" name="disc_email" size="30" maxlength="70">
		        </td>
		    </tr>
		    <tr> 
		      <td width="83"></td>
		      <td width="196" align="left">
			<input type="checkbox" name="email_me"><font size=2><nobr>{$COM_LANG['Notify']}</nobr></font><br>
			<input type="checkbox" name="dont_show_email" CHECKED><font size=2><nobr>{$COM_LANG['Dont_show_email']}</nobr></font><br>
		        </td>
		    </tr>
		    <tr> 
		      <td valign="top" width="83" align="right"> 
		        <font color="red">*</font><font size=2>{$COM_LANG['Text']}:</font>
		      </td>
		      <td valign="top" width="196" align="left">
		        <textarea name="disc_body" cols="40" rows="13" wrap="VIRTUAL"></textarea>
		        <input type=hidden name="r_disc_body" value="{$COM_LANG['r_disc_text']}">
		        </td>
		    </tr>
		    <tr> 
		      <td valign="top" width="83" align="right">&nbsp; </td>
		      <td valign="top" width="196">
		        <div align="center">
		          <input type="submit" name="Submit" value="{$COM_LANG['Submit']}">
		          </div>
		      </td>
		    </tr>
		  </table>
		</form>
<?php
  }
?>
door niets in te vullen bij de action='' van het formulier stuurt hij het naar zijn eigen pagina,

Ecross
 
Zeer bedankt voor de reaktie Ecross! hij stuurt het inderdaad nu naar dezelfde pagina alleen valt dan het hele formulier weg..
zie http://mensenmakenmuziek.nl/nieuws.php

Ik ben niet zo een held in php maar het zou mooi zijn als ie het boven het formulier zou neerzetten.
groet
Jardin
 
als je kijkt naar het script zie je dat het de volgende opbouw heeft:
PHP:
if($_GET['action'] == 'add'){ // als het formulier verstuurd is
   // valideer het formulier
}
else{ // anders
  // laat het formulier zien
}
je haalt nu gewoon de else{ } weg zodat het formulier altijd te zien is,
je krijgt dan dit:
PHP:
<?php
   function smcom_check_for_errors() {
 
    global $comments_db_link, $COM_CONF, $COM_LANG;
 
    $ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
    $result = mysql_query("SELECT ip FROM {$COM_CONF['dbbannedipstable']} WHERE ip='$ip'", $comments_db_link);
 
    if (mysql_num_rows($result)>0) {
        $error_message.=$COM_LANG['not_allowed'] . "<br />";
    }
    if ($_REQUEST['disc_name'] == '') {
        $error_message.=$_REQUEST['r_disc_name'] . "<br />";
    }
    if ($_REQUEST['disc_body'] == '') {
        $error_message.=$_REQUEST['r_disc_body'] . "<br />";
    }
    if ($_REQUEST['disc_email'] != '') {
        if (!smcom_is_email($_REQUEST['disc_email'])) {
            $error_message.="Invalid email address" . "<br />";
        }
    }
                     return $error_message;
}
 
if($_GET['action'] == 'add'){
   smcom_check_for_errors();
}
?>
 <form method=POST action=''>
                  <input type=hidden name="action" value="add">
              <input type=hidden name="href" value="{$_SERVER['REQUEST_URI']}">
          <table width="290" border="0" cellspacing="1" cellpadding="2" align="left">
            <tr> 
              <td width="83" align="right"><font color="red" >*</font><font size=2>{$COM_LANG['Name']}:</font>
                </td>
              <td width="196" align="left">
                <input type=text name="disc_name" maxlength=40 size=30>
                <input type=hidden name="r_disc_name" value="{$COM_LANG['r_disc_name']}">
                </td>
            </tr>
            <tr> 
              <td width="83" align="right"><font size=2>{$COM_LANG['E-mail']}:</font></td>
              <td width="196" align="left">
                <input type="Text" name="disc_email" size="30" maxlength="70">
                </td>
            </tr>
            <tr> 
              <td width="83"></td>
              <td width="196" align="left">
            <input type="checkbox" name="email_me"><font size=2><nobr>{$COM_LANG['Notify']}</nobr></font><br>
            <input type="checkbox" name="dont_show_email" CHECKED><font size=2><nobr>{$COM_LANG['Dont_show_email']}</nobr></font><br>
                </td>
            </tr>
            <tr> 
              <td valign="top" width="83" align="right"> 
                <font color="red">*</font><font size=2>{$COM_LANG['Text']}:</font>
              </td>
              <td valign="top" width="196" align="left">
                <textarea name="disc_body" cols="40" rows="13" wrap="VIRTUAL"></textarea>
                <input type=hidden name="r_disc_body" value="{$COM_LANG['r_disc_text']}">
                </td>
            </tr>
            <tr> 
              <td valign="top" width="83" align="right">&nbsp; </td>
              <td valign="top" width="196">
                <div align="center">
                  <input type="submit" name="Submit" value="{$COM_LANG['Submit']}">
                  </div>
              </td>
            </tr>
          </table>
        </form>
 
Zeer bedankt voor het meedenken Ecroos..waardeer het zeer! ik kom er echter niet uit en ik geef het op.het werkt gewoon steeds niet ...moet aan mijn stress level denken :rolleyes: ik wordt er als leek in php helemaal tureluurs van lol

Het script waar het over gaat is te zien en te downloaden op http://www.scriptsmill.com/comments_demo.html

met vriendelijke groet :d
Jardin
 
Laatst bewerkt:
Als form "method" gebruik je "POST", dus "$_GET['action']" is leeg.
Probeer dit eens:
PHP:
<?php
   function smcom_check_for_errors() {
 
    global $comments_db_link, $COM_CONF, $COM_LANG;
 
    $ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
    $result = mysql_query("SELECT ip FROM {$COM_CONF['dbbannedipstable']} WHERE ip='$ip'", $comments_db_link);
 
    if (mysql_num_rows($result)>0) {
        $error_message.=$COM_LANG['not_allowed'] . "<br />";
    }
    if ($_REQUEST['disc_name'] == '') {
        $error_message.=$_REQUEST['r_disc_name'] . "<br />";
    }
    if ($_REQUEST['disc_body'] == '') {
        $error_message.=$_REQUEST['r_disc_body'] . "<br />";
    }
    if ($_REQUEST['disc_email'] != '') {
        if (!smcom_is_email($_REQUEST['disc_email'])) {
            $error_message.="Invalid email address" . "<br />";
        }
    }
                     return $error_message;
}
 
if($_SERVER['REQUEST_METHOD'] == "POST"){
   echo smcom_check_for_errors();
}
?>
 <form method="POST" action="">
                  <input type="hidden" name="action" value="add">
              <input type="hidden" name="href" value="{$_SERVER['REQUEST_URI']}">
          <table width="290" border="0" cellspacing="1" cellpadding="2" align="left">
            <tr> 
              <td width="83" align="right"><font color="red" >*</font><font size=2>{$COM_LANG['Name']}:</font>
                </td>
              <td width="196" align="left">
                <input type="text" name="disc_name" maxlength="40" size="30">
                <input type="hidden" name="r_disc_name" value="{$COM_LANG['r_disc_name']}">
                </td>
            </tr>
            <tr> 
              <td width="83" align="right"><font size=2>{$COM_LANG['E-mail']}:</font></td>
              <td width="196" align="left">
                <input type="Text" name="disc_email" size="30" maxlength="70">
                </td>
            </tr>
            <tr> 
              <td width="83"></td>
              <td width="196" align="left">
            <input type="checkbox" name="email_me"><font size="2"><nobr>{$COM_LANG['Notify']}</nobr></font><br>
            <input type="checkbox" name="dont_show_email" CHECKED><font size="2"><nobr>{$COM_LANG['Dont_show_email']}</nobr></font><br>
                </td>
            </tr>
            <tr> 
              <td valign="top" width="83" align="right"> 
                <font color="red">*</font><font size="2">{$COM_LANG['Text']}:</font>
              </td>
              <td valign="top" width="196" align="left">
                <textarea name="disc_body" cols="40" rows="13" wrap="VIRTUAL"></textarea>
                <input type="hidden" name="r_disc_body" value="{$COM_LANG['r_disc_text']}">
                </td>
            </tr>
            <tr> 
              <td valign="top" width="83" align="right">&nbsp; </td>
              <td valign="top" width="196">
                <div align="center">
                  <input type="submit" name="Submit" value="{$COM_LANG['Submit']}">
                  </div>
              </td>
            </tr>
          </table>
        </form>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan