Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Sfat alegere parbriz

EMAG - recenzii false facute de ei?

Recomandare telefon 900-950

Nivel de trai
 Semnal bun da'... prost

De ce statiile de radio FM nu ren...

Pe unde pot sa gasesc statistici ...

Este reconditionat acest laptop?
 Prelungire fire electrice

Amintiri despre satelit si retran...

Care este cel mai bun mod de a pr...

Recomandare centrala termica apar...
 samsung Xcover 5 Nu mai vrea

Telefon de budget pentru filme 10...

Recomandare serviciu / firma recu...

La mulți ani @Piniuli!
 

[PHP] Probleme validare formular

- - - - -
  • Please log in to reply
6 replies to this topic

#1
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Versiunea PHP curenta a webserverului este 5.6.10.

Intr-o pagina, de test, am cel mai simplu exemplu de formular (cu un camp text, de nume, si un buton), dar imi functioneaza. Si nu inteleg de ce.

Logica ar fi asa:
- daca acel camp este necompletat si apas butonu => sa apara mesaj ca acel camp e obligatoriu;
- daca acel camp contine cifre => sa apara mesaj ca trebuie numai litere (ce nume ar fi ala cu cifre?)
- daca sunt numai litere, dar lungimea este mai mica decat 3 caractere => mesaj ca trebuie introduse cel putin 3 caractere
- daca totul e ok => sa apara un alt mesaj (success! sau ok).

Am incercat cu empty($_POST['nume']), cu ctype_alnum($_POST['nume'], cu ctype_digit($_POST['nume'], cu $_POST['nume']="", dar nici una dintre variantele astea nu dau rezultatul corect.

Am incercat si cu isset si &&error, si fara (doar afisarea mesajului), dar nici asa nu vrea.

Ce anume nu functioneaza? Unde gresesc?
Multumesc.

<?php session_start(); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
</head>

<body>
<?php include 'scripts/contact1.php'; ?>

<form action="Contact1.php" method="POST" accept-charset="UTF-8">
  <table id="formular">
   <tr>
	<td><label for="nume">Nume</label></td>
	<td><input type="text" name="nume" id="nume" /></td>
	<td><?php if(isset($errors['nume'])&&$error) { print $errors['nume']; } ?></td>
   </tr>
   <tr>
	<td></td>
	<td><button type="submit" name="trimite" title="Trimite mesajul" />Trimite</button></td>
   </tr>
  </table>
</form>
<script src="/scripts/jquery.min.js"></script>
</body>
</html> 


Si scriptul de validare:
<?php
if (isset($_POST['trimite'])) {
  $error = FALSE;
  if(ctype_digit($_POST['nume'])) {
	$errors['nume'] = "Numai litere";
	$error = TRUE;
  } 
  else{
	if (strlen($_POST['nume']) < 3) {
	 $errors['nume'] = "Min. 3 caract";
	 $error = TRUE;
	}
	else {
	 $errors['nume'] = "OK!";
	}
  }
}
?>



#2
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Practic nu mi se afiseaza mesaj decat daca introduc 3 caractere (indiferent ca-s litere si/sau cifre). In orice alta combinatie, nu afiseaza nimic (si nu afiseaza mesajul care trebuie),

#3
georgica

georgica

    Active Member

  • Grup: Members
  • Posts: 1,490
  • Înscris: 30.01.2003
Scriptul tău de validare (Contact1.php - e pus la form action) nu are nici un print sau echo sau cod html ca să aibă ce să-ți afișeze.

#4
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
1) Contact1.php este pagina in care este formularul. Scriptul de validare, da, are si el acelasi nume, dar se gaseste in /scripts/

2) De fapt formularul pe care il am, este mult mai mare si complex, a functionat bine merci, pana... nici eu nu stiu pana cand, cand am descoperit, intamplator ca nu mai functioneaza. El a fost facut pe vremea cand versiunea PHP de pe webserver era 5.1.x,; au mai fost apoi niste modificari aduse in versiunea 5.2.x si cam atat. Am zis sa investighez, si am lasat practic cel mai simplu formular (cu o singura variabila), cu 3 conditii, dar vad ca nici asta nu functioneaza.

3) Afisarea mesajului (de eroare sau success), le fac in pagina (nu in script), acolo unde am pus print $errors.

Totusi ceva idei pentru a face sa functioneaza acest caz simplu?
Merci.


LE. Nu merge nici daca la action las numele aceeasi pagini, sau [PHP_SELF] sau nimic.

Edited by colombo2003, 27 January 2016 - 19:47.


#5
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Fratilor, e de belea!

Am renuntat la cazuri, si vreau,si mai simplu, sa se afiseze doar lungimea sirului introdus. Pentru asta folosesc strlen($_POST['nume']).
Si, se afiseaza corect, doar pentru cazul in care introduc doar 3 caractere (afiseaza 3). Atat. Pentru orice alta lungime a sirului, nu se afiseaza nimic?
Cum vine asta? De ce acest comportament?
Pliiiiz, help! Help! Help!

#6
georgica

georgica

    Active Member

  • Grup: Members
  • Posts: 1,490
  • Înscris: 30.01.2003
Pui un var_dump($_POST) și vezi ce ajunge la php.

#7
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Gata, am reusit si am rezolvat! Problema era in script.
Multumesc se poate inchide!

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate