Avatar billede nickyc Nybegynder
15. september 2003 - 19:11 Der er 8 kommentarer og
1 løsning

if $email skal være obligatorisk

Hey allesammen...
Jeg skal have gjort sådan det er obligatorisk at man skriver sin email og navn i min gæstebog... Men hvordan gør jeg sådan det bliver obligatorisk at skulle skrive den...
Det jeg mener er at man skal skrive email og navn, hvis ikke kommer ens indlæg ikke på siden...???

Nogle der kan hjælpe...?
Avatar billede wickedd Juniormester
15. september 2003 - 19:17 #1
if (($email) && ($navn)){
  echo "OK, begge felter er udfyldt.";
}else{
  echo "Begge felter skal udfyldes!!";
}
Avatar billede nicklasb Nybegynder
15. september 2003 - 19:20 #2
brug i stedet isset($email, $navn)
Men er det ikke mere indholdet du skal lave et tjek på?!?
Avatar billede nicklasb Nybegynder
15. september 2003 - 19:21 #3
i så fald mangler vi lige en enkelt oplysning eller to..

Hvad sker der efter man klikker submit.. Altså hvilken side submitter den på? Og hvilken side sker actionen på.. Og hvad har du af tjek allerede nu?
Avatar billede nickyc Nybegynder
15. september 2003 - 19:30 #4
den submitter bare på sig selv... du kan se den på www.framemakers.dk/nicky
Avatar billede martineriksen Nybegynder
15. september 2003 - 19:33 #5
<?php
// Brug PEAR klassen QuickForm
require_once 'HTML/QuickForm.php';

function checkEmail($elementName, $email, $domainCheck = false) {
  if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
                  '\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
      if ($domainCheck && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);
            if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                return true;
            }
            return false;
      }
      return true;
    }
    return false;
} // checkMail()


// Instansiere objectet
$form = new HTML_QuickForm('informationer');
// Tilføj til form
$form->addElement('header', null, 'Indtast noget om dig selv');
$form->addElement('text', 'name', 'Skriv dit navn:', array('size' => 50, 'maxlength' => 255));
$this->form->addElement('text', 'email', _EMAIL, array('size' => 50, 'maxlength' => 255));
$form->addElement('submit', null, 'Send');

// Tilføj regler
$form->applyFilter('name', 'trim');
$form->addRule('name', 'Skriv venligst dit navn', 'required', null, 'client');
$this->form->addRule('email', 'Du skal skrive en mail adresse', 'required');
$this->form->registerRule('checkmail', 'function', 'checkEmail');
$this->form->addRule('email', 'Det er ikke en gyldig mailadresse', 'checkmail');

// Forsøg at validere det indsendte materiale
if ($form->validate()) {
    echo '<h1>Hej med dig, ' . htmlspecialchars($form->exportValue('name')) . '!</h1>';
    exit;
}

// Skriv
$form->display();
?>
Avatar billede nickyc Nybegynder
15. september 2003 - 19:38 #6
takker :)
Avatar billede nickyc Nybegynder
15. september 2003 - 19:42 #7
men det siger mig stadig ik det vilde... hvor skal jeg sætte alt dette ind ?

min kode ser således ud :

<?
$db = mysql_connect("localhost", "frame", "bono");
mysql_select_db("www_framemakers_dk", $db);
if ($_REQUEST['skriv']){
$besked = str_replace("\n", "<br>", $besked);
$dato_array = getdate();
$dato = $dato_array["mday"] ."/" . $dato_array["mon"]. "-" .$dato_array["year"];
mysql_query("INSERT INTO bog (navn, email, dato, besked) VALUES ('$navn', '$email', '$dato', '$besked')");
}
?>
                  <b><span class="bodytext">NB!</span></b><span class="bodytext">
                  Alle felter m&aring; meget gerne udfyldes</span> <span class="bodytext">-
                  Nicky Christensen forbeholder sig retten til at slette upassende
                  indl&aelig;g </span>
                  <form method=post action=<? echo $PHP_SELF;?>>
                    <input type=hidden name=skriv value=1>
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="60" height="38" class="bodytext">&nbsp;navn:
                        </td>
                        <td width="10" height="38">&nbsp;</td>
                        <td height="38">
                        <input type=text name=navn>
                        </td>
                      </tr>
                      <tr>
                        <td width="60" class="bodytext">&nbsp;email: </td>
                        <td>&nbsp;</td>
                        <td>
                        <input type=text name=email>
                        </td>
                      </tr>
                    </table>
                    &nbsp;
                    <textarea name="besked" cols="30" rows="7" wrap="VIRTUAL"></textarea>
                    <br>
                    &nbsp;
                    <input type=submit value="send" name="submit" class="bodytext">
                  </form>
                      <br>
                  <table>
                    <?
$foresp = mysql_query("SELECT navn, email, dato, besked FROM bog ORDER BY nr DESC");
while($data = mysql_fetch_row($foresp)){
echo "<tr><td valign=top><br>";
echo "<b><span class=bodytext> Fra: <a href=\"mailto:$data[1]\">$data[0]</a></b>";
echo "</td></tr>";
echo "<tr><td valign=top><span class=bodytext>$data[3]";
echo "<br></tr></td>";
echo "<tr><td valign=top>";
echo "<b><span class=bodytext>Indlæg skrevet den: $data[2]</b><br>";
echo "</tr></td>";

}
?>
Avatar billede martineriksen Nybegynder
15. september 2003 - 19:42 #8
Iøvrigt vil jeg gøre jer opmærksom på at i skal helst programmere med REGISTER_GLOBALS slået fra.

Det vil sige, i det oprindelige forslag der fangede i det der belv sendt bare ved at sige $email $navn, istedet skal i hellere fange det på den måde som det bliver sendt fra formen. Dvs. hvis formen sender det som POST kan man hente det som $_POST['email'] og til GET, som er det samme når den kommer med URI $_GET['email']
Avatar billede martineriksen Nybegynder
15. september 2003 - 20:11 #9
Jeg antager at din tabel kun indeholder kolonnerne nr navn, email, dato, besked

Jeg tillod mig at sige din dato er af type TIMESTAMP istedet for, for så skal man bare send en NULL værdi over, og så sætter den sig selv efter hvad klokken og datoen er nu.

Men det umiddelbart sådan jeg lige hurtigt vil gøre det.
Du skal lige være opmærksom på at jeg ikke har test om det virker endnu, efter som jeg ikke lige ville oprete en database og tabel til dette.

<?php

// Brug PEAR klassen QuickForm og DB
// Kan hentes fra www.pear.php.net
require_once 'HTML/QuickForm.php';
require_once 'DB.php';

// Saette vaerdier til databasen
$user = 'foo';
$pass = 'bar';
$host = 'localhost';
$db_name = 'clients_db';

// Lav en forbindelse til din database
$dsn = "mysql://$user:$pass@$host/$db_name";
$db = DB::connect($dsn);

// Undersøg om det er sket en fejl
if (DB::isError($db)) {
    die ($db->getMessage());
}

// Vi snupper lige en forberedt regel til at undersøge om det er en valid email
function checkEmail($elementName, $email, $domainCheck = false) {
  if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
                  '\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
      if ($domainCheck && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);
            if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                return true;
            }
            return false;
      }
      return true;
    }
    return false;
} // checkMail()


// Instansiere objectet
$form = new HTML_QuickForm('informationer');
// Tilføj til form
$form->addElement('header', null, 'Indtast noget om dig selv');
$form->addElement('text', 'name', 'Skriv dit navn:', array('size' => 50, 'maxlength' => 255));
$this->form->addElement('text', 'email', 'Din mailadresse', array('size' => 50, 'maxlength' => 255));
$this->form->addElement('textarea', 'note', 'Komentarer', 'cols="50" rows="10"');
$form->addElement('submit', null, 'Send');

// Tilføj regler
$form->applyFilter('name', 'trim');
$form->addRule('name', 'Skriv venligst dit navn', 'required', null, 'client');
$this->form->addRule('email', 'Du skal skrive en mail adresse', 'required');
$this->form->registerRule('checkmail', 'function', 'checkEmail');
$this->form->addRule('email', 'Det er ikke en gyldig mailadresse', 'checkmail');

// Forsøg at validere det indsendte materiale
if ($form->validate()) {
    // Nu henter vi det returnerede data ind i scriptet
    // Sætter lige htmlspecialchars på, så folk ikke prøver
    // at lave sjove ting med databasen, eller siden.
    $name = htmlspecialchars($form->exportValue('name'));
    $email = htmlspecialchars($form->exportValue('email'));
    $note = htmlspecialchars($form->exportValue('note'));
   
    $sql = "INSERT INTO bog VALUES('', '$name', '$email', \N, '$note')";
   
    $result = $db->query($sql);
   
    // Undersøg om det er sket en fejl
    if (DB::isError($db)) {
        die ($db->getMessage());
    }
    echo "Er lagt ind i databasen";
}

// Skriv
$form->display();

echo "<table>";

// Du har nok lyst til lige at få dato til at se pænere ud bagefter
$sql = "SELECT navn, email, dato, besked FROM bog ORDER BY nr DESC";

$res = $db->query($sql);

// Vis hver enkelt række
while ($row = $res->fetchRow()) {
    echo "<tr><td valign=top><br>";
    echo "<b><span class=bodytext> Fra: <a href=\"mailto:$row[1]\">$row[0]</a></b>";
    echo "</td></tr>";
    echo "<tr><td valign=top><span class=bodytext>$row[3]";
    echo "<br></tr></td>";
    echo "<tr><td valign=top>";
    echo "<b><span class=bodytext>Indlæg skrevet den: $row[2]</b><br>";
    echo "</tr></td>";
}

echo "</table>";

// Så lukker vi lige databasen ordentligt af
$db->disconnect();

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester