Gå til innhold

Form input validering fra SQL


Anbefalte innlegg

Hei!

 

Jeg har en form med en tekstboks(epost) hvor jeg vil at innholdet i boksen skal bli sjekket opp mot en sql database. Hvis eposten eksisterer i databasen så må feltet fylles på nytt. Har prøvd meg litt fram men formen bare submitter uansett uten å kjøre scriptet :ermm: : . Håper noen kan hjelpe meg, sikkert helt feil kode men her er koden sålangt:

 

<?php

require_once("funksjoner.php");

topp();

 

function sjekkEpost(){

$epost = ($_POST["epost"]);

$Choo = new mysql();

$Choo->connect();

$result = $Choo->query("SELECT * FROM `kunde` WHERE epost=$epost");

 

$row = mysql_fetch_row( $result );

echo($result);

}

topp_meny();

?>

 

 

<form name='info' action="reg.php" method="post">

<div id='registrerdeg'>

<table width="226" border="0" align="center">

<tr>

<td width="71">Fornavn:</td>

<td colspan="2"><input type="text" name="fornavn"></td>

</tr>

<tr>

<td>Etternavn:</td>

<td colspan="2"><input type="text" name="etternavn"></td>

</tr>

<tr>

<td>Gatenavn:</td>

<td colspan="2"><input type="text" name="gatenavn"></td>

</tr>

<tr><td>Postnr:</td>

<td colspan="2"><input type="text" name="postnummer" maxlength=4></td>

</tr>

<tr>

<td>Telefon:</td>

<td colspan="2"><input type="text" name="telefonnr" maxlength=8></td>

</tr>

<tr>

<td>Mobil:</td>

<td colspan="2"><input type="text" name="mobil" maxlength=8></td>

</tr>

<tr>

<td>Epost:</td>

<td colspan="2"><input type="text" name="epost" />

</td>

</tr>

<tr>

<td height="23"> </td>

<td width="77"> </td>

<td width="64"> </td>

</tr>

<tr>

<td> </td>

<td>

<div align="center">

<input type="submit" name="button" id="button" value="Registrer" onSubmit="return checkform()"/>

 

<script language="JavaScript" type="text/javascript">

 

function checkform()

{

sjekkEpost();

if ($epost == $result)

{

alert( "Epost addresse finnes fra før, vennligst skriv inn en ny adresse" );

return false ;

}

else

{

return true;

 

}}

</script>

<label>

</label>

</div></td>

<td><div align="center">

<input type="reset" name="button2" id="button2" value="Nullstill" />

</div></td>

</tr>

</table>

<p align="center">

<label></label>

<label></label>

</p>

</div>

</form>

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

jeg skjønner virkelig ikke koden din.

Du kan ikke få javascript til å kjøre en php-funksjon...

 

Du kan, men da er vi inne på AJAX, og endring i struktur i koden.

 

Endret av Slettet+142
Lenke til kommentar

Dette er uannsett feil

 

$row = mysql_fetch_row( $result );

echo($result);

 

$result inneholder ingen nyttig verdi du kan skrive ut, prøv med

 

$row = mysql_fetch_row( $result );

echo($row[0]); -> eller hvilket felt du ønsker å skrive ut

 

Denne bør også endres, ikke bruk SELECT * FROM ... hvis du ikke trenger alle feltene i tabellen, spesifiser kun de feltene du har behov for:

 

fra: $result = $Choo->query("SELECT * FROM `kunde` WHERE epost=$epost");

til: $result = $Choo->query("SELECT felt1,felt2....,feltN FROM `kunde` WHERE epost='".mysql_real_escape_string($epost)."'");

 

Hvis du kun ønsker å sjekke om eposten allerede eksisterer i basen så brukt count(), f.eks slik

 

$result = $Choo->query("SELECT count(*) FROM `kunde` WHERE epost='".mysql_real_escape_string($epost)."'");

 

For å sjekke om eposten så eksisterer så gjør du bare

 

$row = mysql_fetch_row( $result );

if ($row[0]>0) {

// eposten er allerede registrert

}

else {

// eposten er ikke i basen

}

 

Som mariyo sier så må du bruke AJAX for å kombinere javascript og php. Men du kan oppnå tilsvarende effekt med kun php.

 

Validering og skjema ligger i samme phpfil (reg.php), her er ett forenklet eksempel, sikkere flere forskjellige metoder som kan benyttes her

 

PHP
<?php

if (isset($_POST['regskjema'])) 

{

  // valideringsrutine

  // mere kode

  $row = mysql_fetch_row( $result );

  if ($row[0]>0) 

  {

    $epostfeil='Epostadressen er allerede registrert, bruk en annen';

    $error=1;

  }

  // mere kode

}

 

if (!isset($_POST['regskjema']) OR $error==1)

{

  // skriv ut skjema

  echo '<td>Epost:</td>

  <td colspan="2"><input type="text" name="epost" />';

  if (isset($epostfeil) AND !empty($epostfeil)) 

    echo '<span style="color: red;">'.$epostfeil.'</span>';

  echo '</td>';

 

  // resten av skjema

}

 

?>

 

Hvis du ønsker å bryne deg på AJAX, så ville jeg tatt en titt på denne siden http://www.ajax-tutorials.com/tutorial-list/

Endret av crowly
Lenke til kommentar
Dette er uannsett feil

 

$row = mysql_fetch_row( $result );

echo($result);

 

$result inneholder ingen nyttig verdi du kan skrive ut, prøv med

 

$row = mysql_fetch_row( $result );

echo($row[0]); -> eller hvilket felt du ønsker å skrive ut

 

Denne bør også endres, ikke bruk SELECT * FROM ... hvis du ikke trenger alle feltene i tabellen, spesifiser kun de feltene du har behov for:

 

fra: $result = $Choo->query("SELECT * FROM `kunde` WHERE epost=$epost");

til: $result = $Choo->query("SELECT felt1,felt2....,feltN FROM `kunde` WHERE epost='".mysql_real_escape_string($epost)."'");

 

Hvis du kun ønsker å sjekke om eposten allerede eksisterer i basen så brukt count(), f.eks slik

 

$result = $Choo->query("SELECT count(*) FROM `kunde` WHERE epost='".mysql_real_escape_string($epost)."'");

 

For å sjekke om eposten så eksisterer så gjør du bare

 

$row = mysql_fetch_row( $result );

if ($row[0]>0) {

  // eposten er allerede registrert

}

else {

  // eposten er ikke i basen

}

 

Som mariyo sier så må du bruke AJAX for å kombinere javascript og php. Men du kan oppnå tilsvarende effekt med kun php.

 

Validering og skjema ligger i samme phpfil (reg.php), her er ett forenklet eksempel, sikkere flere forskjellige metoder som kan benyttes her

 

PHP
<?php

if (isset($_POST['regskjema'])) 

{

  // valideringsrutine

  // mere kode

  $row = mysql_fetch_row( $result );

  if ($row[0]>0) 

  {

    $epostfeil='Epostadressen er allerede registrert, bruk en annen';

    $error=1;

  }

  // mere kode

}

 

if (!isset($_POST['regskjema']) OR $error==1)

{

  // skriv ut skjema

  echo '<td>Epost:</td>

  <td colspan="2"><input type="text" name="epost" />';

  if (isset($epostfeil) AND !empty($epostfeil)) 

    echo '<span style="color: red;">'.$epostfeil.'</span>';

  echo '</td>';

 

  // resten av skjema

}

 

?>

 

Hvis du ønsker å bryne deg på AJAX, så ville jeg tatt en titt på denne siden http://www.ajax-tutorials.com/tutorial-list/

9291778[/snapback]

 

Greit jeg vil gjerne gjøre dette med kun PHP. Skal eksempelet ovenfor stå i reg.php eller php fila som inneholder selve formen? Skjønte ikke helt hvordan jeg skulle fyllet ut heller. :roll:

Lenke til kommentar
Greit jeg vil gjerne gjøre dette med kun PHP. Skal eksempelet ovenfor stå i reg.php eller php fila som inneholder selve formen? Skjønte ikke helt hvordan jeg skulle fyllet ut heller.  :roll:

 

Leste du denne linja: Validering og skjema ligger i samme phpfil (reg.php)

Alt skal ligge i samme fil, se på kommentarene i eksemplet, der står det hvordan ting skal plasseres.

 

Når du lager en quote som er veldig stor så legg den i skjul klammer

[skjul][quote] .... [/quote][/skjul]

så slipper vi lage poster en gang til bare for å svare med noen enkle linjer :thumbup:

Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
Greit jeg vil gjerne gjøre dette med kun PHP. Skal eksempelet ovenfor stå i reg.php eller php fila som inneholder selve formen? Skjønte ikke helt hvordan jeg skulle fyllet ut heller.  :roll:

 

Leste du denne linja: Validering og skjema ligger i samme phpfil (reg.php)

Alt skal ligge i samme fil, se på kommentarene i eksemplet, der står det hvordan ting skal plasseres.

 

Når du lager en quote som er veldig stor så legg den i skjul klammer

[skjul][quote] .... [/quote][/skjul]

så slipper vi lage poster en gang til bare for å svare med noen enkle linjer :thumbup:

9295461[/snapback]

greit takker for svar. får prøve meg fram jeg da :)
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...