Afisare mesaj daca numele exista in mysql
-
- Mesaje:4
Afisare mesaj daca numele exista in mysql
Salut. Am nevoie de ajutor in urmatoarea problema. Vreau sa adaug un nume intr-o baza de date si atunci cand acelasi nume este deja in baza de date sa primesc un mesaj de avertizare gen: "acest nume este deja inregistrat". Multumesc!
MarPlo
Mesaje:4343
Salut,
1. Inainte de a face Insert sau Update in MySQL, apl;ici un Select sa vezi daca acel nume e deja inregistrat.
2. Daca acel Select returneaza vreun rand, afisezi mesaj; daca nu, continui cu Insert /Update.
1. Inainte de a face Insert sau Update in MySQL, apl;ici un Select sa vezi daca acel nume e deja inregistrat.
Cod: Selectaţi tot
$name ='un-nume';
$sql ="SELECT col_name FROM table1 WHERE col_name ='$name' LIMIT 1";
alexcele
Mesaje:4
Cod: Selectaţi tot
<?php
// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8
header('Content-type: text/html; charset=utf-8');
$mesaj = 'Adauga numele'; // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator
// Se verifica daca sunt primite datele de la formular
if (isset($_POST['nume'])) {
// Se filtreaza datele pt. eliminare posibile tag-uri si spatii exterioare
$_POST = array_map("strip_tags", $_POST);
$_POST = array_map("trim", $_POST);
// Se verifica daca au fost completate corect toate campurile
// Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare
// Verifica daca Numele are cel putin 3 caractere si maxim 40
if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<41) $nume = $_POST['nume'];
else $eroare[] = 'Caseta cu Nume si Prenume trebuie sa contina intre 3 si 40 caractere';
// Daca nu exista nici un mesaj de eroare, filreaza datele cu real_escape_string() si le adauga in baza de date
// Altfel, in cazul vreunei erori, adauga in variabila $mesaj
if(!isset($eroare)) {
include 'conn.php'; // Include fisierul pt. conectare-selectare baza de dat
// Se aplica functia de filtrare real_escape_string()
$nume = $conn->real_escape_string($nume);
$sql = "SELECT `nume` FROM `nume_tabel` WHERE `nume`='$nume' LIMIT 1";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_error(). "<br />";
}
if (mysql_num_rows($rezultat) > 0) {
echo 'Numele exista , foloseste altul';
}
else {
// Restul codului pt cazul cand numele nue inregistrat
// Acum se adauga mai in siguranta aceste date in MySQL
$sql = "INSERT INTO `membri` (`nume`) VALUES ('$nume')";
if($conn->query($sql) === TRUE) {
$mesaj = '<h4>Datele au fost adaugate</h4>';
$nume = '';
}
else $mesaj = '<h4>Datele nu au putut fi adaugate '. mysql_error(). '</h4>';
}
}
}
echo $mesaj;
?>
<form action="" method="post">
<div align="center">
<p><br />
<br />
<br />
Nume si Prenume:
<input type="text" name="nume" id="nume" value="<?php if(isset($nume)) echo $nume; ?>" />
</p>
<p><br>
<input type="submit" name="submit" id="submit" value="Trimite" />
</p>
</div>
</form>
Cod: Selectaţi tot
Fatal error: Uncaught Error: Call to undefined function mysql_query() in /storage/ssd4/169/5647169/public_html/adauga.php:30 Stack trace: #0 {main} thrown in /storage/ssd4/169/5647169/public_html/adauga.php on line 30
Marius
Mesaje:60
E un ghiveci de cod, amestecatura de Copy-Paste de cineva care habar nu are de ceea ce face.
Daca e conectare cu MySQLi, se aplica metoda query() (nu mysql_query(), care e deprecata).
Deci, in codul tau aplica:
Daca e conectare cu MySQLi, se aplica metoda query() (nu mysql_query(), care e deprecata).
Deci, in codul tau aplica:
Cod: Selectaţi tot
$rezultat = $conn->query($sql);
if(is_object($rezultat) && $rezultat->num_rows > 0) {
echo 'Numele exista , foloseste altul';
}
else {
//Codul de Insert...
}
alexcele
Mesaje:4
Este ok acum dar imi adauga acelasi nume in baza de date de cate ori il bag. Nu imi spune ca exista.
MarPlo
Mesaje:4343
Verifica instructiunea de la $sql, sa fie cu numele tabelului si coloanele din baza ta de date.
Poate asa:
- In plus, ca extra siguranta, daca vrei ca datele din coloana 'nume' sa nu se repete, seteaz-o cu atributul UNIQUE, din PhpMyAdmin.
Daca nu stii cum, vezi pe internet la cautare "phpmyadmin set column unique".
Poate asa:
Cod: Selectaţi tot
$sql = "SELECT * FROM membri WHERE nume='$nume' LIMIT 1";
Daca nu stii cum, vezi pe internet la cautare "phpmyadmin set column unique".
alexcele
Mesaje:4
Multumesc. Am reusit. Insa exista o problema. Daca bag "Ion Boschet" si apoi bag " Ion Boschet", sau daca pun un space in plus, numele este adaugat.
MarPlo
Mesaje:4343
Inainte de a folosi sirul cu numele in mysql (pt. Select, Insert, Update) curata-l de spatiile multiple si din margini, cu acest cod:
Cod: Selectaţi tot
$nume = trim(preg_replace('/\s+/', ' ', $nume));
Subiecte similare
- Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc