Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dodanie do bazy, po wykonaniu sprawdzeniu czy rekord juz istnieje.
bercow
post
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 11
Dołączył: 25.12.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
pablo_83
post
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
Valdi_B
post
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
bercow
post
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 11
Dołączył: 25.12.2005

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
greycoffey
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Nadaj na `numerek` indeks UNIQUE.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 21:37