Gå til innhold

Form input validering fra SQL


Anbefalte innlegg

Skrevet

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>

Videoannonse
Annonse
Gjest Slettet+142
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet
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:

Skrevet
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:

Skrevet

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 :)
Skrevet

Hvis du står fast på noe så får du post kode snutten som du har problemer med, og en liten beskrivelse av problemet. Så er det mange her inne som er villig til å hjelpe deg videre :thumbup:

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...