Pagina 1 din 1

Afisare mesaj daca numele exista in mysql

Scris: Lun Sep 24, 2018
de alexcele
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!

Afisare mesaj daca numele exista in mysql

Scris: Lun Sep 24, 2018
de MarPlo
Salut,
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";
2. Daca acel Select returneaza vreun rand, afisezi mesaj; daca nu, continui cu Insert /Update.

Afisare mesaj daca numele exista in mysql

Scris: Mar Sep 25, 2018
de alexcele

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>
Primesc aceasta eroare:

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

Afisare mesaj daca numele exista in mysql

Scris: Mar Sep 25, 2018
de Marius
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:

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

Re: Afisare mesaj daca numele exista in mysql

Scris: Mar Sep 25, 2018
de alexcele
Este ok acum dar imi adauga acelasi nume in baza de date de cate ori il bag. Nu imi spune ca exista.

Afisare mesaj daca numele exista in mysql

Scris: Mar Sep 25, 2018
de MarPlo
Verifica instructiunea de la $sql, sa fie cu numele tabelului si coloanele din baza ta de date.
Poate asa:

Cod: Selectaţi tot

$sql = "SELECT * FROM membri WHERE nume='$nume' LIMIT 1";
- 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".

Afisare mesaj daca numele exista in mysql

Scris: Vin Sep 28, 2018
de alexcele
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.

Afisare mesaj daca numele exista in mysql

Scris: Vin Sep 28, 2018
de MarPlo
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));