Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodanie do bazy, po wykonaniu sprawdzeniu czy rekord juz istnieje.
Forum PHP.pl > Forum > Przedszkole
bercow
Witam.

Nie mam apsolutnie zadnego pojecia, jak powinien wykonac kod nastepujacej czynnosci, dodajemy do bazy jeden wiersz, ale tylko wtedy kiedy w pewnej kolumnie nie znajduje sie juz taka wartosc, jak w dodawanym wierszu.

Wybieramy z bazy rekord numer, ktory nie moze sie powtarzac, $replay = mysql_query("SELECT numer FROM baza") ;, mamy tablice, i jak zrobic petle ktora sprawdzi wszystkie numery z bazy, a jak takowego niema, doda nowy wiersz.
pablo_83
np:
  1. foreach(query->result() as $val){ // pobierasz sobie dane z tabeli
  2. if($towje_pole == false){ // sparawdzasz konkretną kolumnę czy ma dany wpis, możesz porównać do jakieś wartości tutaj sprawdzam czy cokolwiek jest)
  3. $this->db->update //jeśli warunek został spełniony robisz update tabeli bądź nowy wpis zależy jak masz to zrobione
  4. }
  5. }
Valdi_B
O ile dobrze zrozumiałem, to:
1. Masz (w jakiejś zmiennej) numer, który chciałbyś użyć.
2. Chcesz sprawdzić, czy w danej tablicy jest rekord, który w danym polu zawiera ten numer.

Nie ma potrzeby czytania wszystkich rekordów z tablicy i porównywania z zadaną wartością.
Można spróbować "prostego strzału" w rekord zawierający daną wartość w danym polu:
  1. SELECT * FROM <tablica>
  2. WHERE <pole>=<wartość>;
Taką kwerendę trzeba "zmontować" (w zmiennej), wstawiając we właściwe miejsce szukaną wartość i wykonać ją.
Żeby było ciekawiej, właściwie nie potrzebujesz nawet odczytywać danych "wyciągniętych" przez tę kwerendę z bazy danych.
Wystarczy jeżeli sprawdzisz, czy ta kwerenda coś zwróciła.
Nazw konkretnych funkcji nie podaję, myślę że znajdziesz sam.

Przy okazji sugestia co do "elegancji nazw".
Nie używaj nazwy "baza" jako nazwy tabeli.
Baza danych to "worek" z różnymi tabelami, każda do jakiegoś celu.
Owszem, dane "ciągniesz" z bazy danych, ale tak naprawdę - to z konkretnej tabeli.
Analogicznie - nazwę kolumny "numer" też lepiej zmień na jakąś nazwę, która "coś powie" co to za numer.

Rady te zapewne docenisz nieco później, gdy zaczniesz robić strony korzystające z wielu tabel iwielu kolumn.
bercow
nazwy od tak wpialem

czyli mniej wiecej tak

  1. $numerek = $_POST['numerek']
  2. $replay = mysql_query("SELECT * FROM baza WHERE numerek='$numerek'")
  3.  
  4. if isset($replay) {
  5. $ins = @mysql_query("INSERT INTO baza SET numerek='$numerek', zmienna1='$zmienna1', zmienna2='$zmienna2'");
  6. if($ins) echo " <br /><br /><br /><b>Rekord został dodany poprawnie</b>";
  7. else echo "<br /><br /><br /><b>Błąd nie udało się dodać nowego rekordu</b>";
  8. } else {
  9. echo "Rekord ".$numerek." juz istnieje w bazie"
  10. }
  11.  
greycoffey
Nadaj na `numerek` indeks UNIQUE.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.