Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] auto_incremet tekstowy
Forum PHP.pl > Forum > Przedszkole
icetab
Witam.

Mam do was pytanie chce zrobic skrypt zgloszen winksmiley.jpg i mam problem bo nie wiem jak zrobic tekstowo-cyfrowo auto_increment ze jak ma strone
ktos wypelnia formularz i dostaje linka takiego http://local.pl/index.php?id=oz82y umiem zrobic ze id ma takie cos index.php?id=12 ale nie umiem z literami i cyframi prosil bym o pomoc jak sie kierowac winksmiley.jpg
mike
Zastosowanie kluczy tekstowych to delikatnie mówiąc kiepski pomysł.
Zamiast brnąć w to głębiej zamień klucze na liczbowe.
icetab
aha rozumiem ale jesli zrobie liczbowe to ktos wpisze 123 to zobaczy dane zgłoszeniowe wolal bym jakis trudniejszy id z literkami wtedy trudno zobazcyc
Crozin
Ale co jest złego w zapisie: 123 - 124 - 125 - 126...?

Jeżeli nie chcesz, aby pewne ogłoszenie były widzne dla danego użytkownika zablokuj mu dostęp do niego.
icetab
ale u mnie w skrypcie nie ma rejestracji i dla danego uzytkownika ten formularz nie bedzie przypisywany winksmiley.jpg a z zablokowaniem to zla podpowiedz bo jak bedzie kilkaset zgloszen to ja dziekuje wiec dla tego wole literowo-cyfrowe
Crozin
W takim razie na pole ID zamiast PrimaryKey daj klucz UniqueKey a dodawanie nowego zrób tak:
  1. <?
  2.  
  3. $id = substr(md5(uniqueid(rand(), true)), 0, 8); //ciąg 8 losowych znaków 0-9a-z
  4.  
  5. $db->insert('INSERT INTO tabela VALUES ('' . $id . '', ......);');
  6.  
  7. ?>
icetab
pytanie czy te kropki musza tak byc ? winksmiley.jpg

  1. (\'' . $id . '', ......);');
Crozin
Cytat
pytanie czy te kropki musza tak byc ?
To zapytanie jest tylko fragmentem całego... nie wiem co chcesz wrzucać jeszcze do bazy, ale napewno coś więcej niż samo ID winksmiley.jpg
mike
Cytat(icetab @ 31.03.2008, 15:53:17 ) *
pytanie czy te kropki musza tak byc ? winksmiley.jpg
Mnie w szkole kiedyś uczyli, że jak nawet przepisujesz z tablicy to rób to ze zrozumieniem.
Dostałeś przykład. Dostosuj go do swoich potrzeb.

Uproszczę Ci:
  1. <?php
  2. $db->insert("INSERT INTO tabela VALUES ('" . $id . "', ......);");
  3. ?>
icetab
bede cwiczyc haha.gif

a pytanie jak zrobic skrypt ze mam naprzyklad tabele

towary

i w niej mam pola id nazwa teskt zatwierdzono

i gdy w bazie pole zatwierdzono ma stala czyli "0" to gdy dam 1 to na stronie wyświetli sie u uzytkownika towar dodany a gdy dam 0 to bedzie pisac nie dodano
Crozin
  1. SELECT ... FROM ... WHERE zatwierdzono = 1 AND id_uzytkownika = XXX;
podstawy...
icetab
tak wiem ale mi chodzi ze gdy w bazie jest ustawione 1 to na stronie abc.php?id=12 pokazuje zatwierdzono a gdy jest na 0 to na abc.php?id=12 pokazuje nie zatwierdzono winksmiley.jpg
Crozin
Tak więc pobierz poprostu wartość tego pola i gdy jest ona równa 1 wyświetl 'Zatwierdzono' a w innym wypadku 'Nie zatwierdzono'
icetab
no i wlasnie nie umiem tego zrobi napewno zapytanie bedzie

  1. SELECT * FROM produkty WHERE id_activ=1


ale jak zrobic ze odczyta jeden to pokaze zatwierdzono
Crozin
  1. <?php
  2. $id = (int) $_GET['id']; //id rekordu
  3.  
  4. $query = 'SELECT zatwierdzono FROM nazwaTabeli WHERE poleZID = ' . $id;
  5. $result = mysql_query($query) or die(mysql_error());
  6. $row = mysql_fetch_row($result, MYSQL_ASSOC);
  7.  
  8. echo $row['zatwierdzono'] ? 'Zatwierdzono' : 'NIE....';
  9. ?>
icetab
hmm cos nie dziala tabela tak wyglada

  1. CREATE TABLE `status` (
  2. `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `tekst` text collate utf8_unicode_ci NOT NULL,
  4. `id_activ` varchar(1) collate utf8_unicode_ci NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
  7.  
  8. --
  9. -- Zrzut danych tabeli `status`
  10. --
  11.  
  12. INSERT INTO `status` VALUES(1, 'proba', '0');
  13. INSERT INTO `status` VALUES(2, 'proba2', '1');


a skrypt php tak

  1. <?php
  2.  
  3. include 'connect.php';
  4.  
  5. $id = (int) $_GET['id']; //id rekordu
  6. $query = "SELECT * FROM `status` WHERE id=".$id." ";
  7. $result = mysql_query($query) OR die('blad w skrypcie.');
  8. $row = mysql_fetch_row($result);
  9.  
  10. echo $row['id_activ'] ? 'Zatwierdzono' : 'NIE....';
  11. ?>


i gdy daje index.php?id=1 to wyswietla nie i tak samo wyswietla z index.php?id=2 a powinno wyswietlac Zatwierdzono a wyswietla Nie..
mike
Poczytaj sobie w jakiej postaci funkcja mysql_fetch_row() zwraca dane.
dr_bonzo
i wlacz: error_reporting( E_ALL )
icetab
hmm pocztalem

Kod
mysql_fetch_row() pobiera jeden wiersz danych z wyniku skojarzonego z podanym identyfikatorem wyniku. Wiesz zwracany jest jako tablica. Komórki są umieszczone pod oddzielnymi ofsetami, zaczynając od 0.


i tak nic nie zrozumialem winksmiley.jpg
mike
Cytat(icetab @ 1.04.2008, 14:04:48 ) *
i tak nic nie zrozumialem winksmiley.jpg
To zniżymy się do poziomu obrazków skoro tekstu nie rozumiesz. Zrób:
  1. <?php
  2.  
  3. var_dump($row);
  4.  
  5. ?>
to zobaczysz czym jest $row.
icetab
pokazalo mi

Kod
bool(false)
Crozin
Cytat("Manual PHP")
Zwracane wartości

Zwraca tablicę numeryczną, która odpowiada pobranemu wierszowi, lub FALSE jeśli nie ma więcej wierszy.
icetab
i tak tego nie rozumiem
Crozin
W takim razie
  1. <?php
  2. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  3. ?>
Poczytaj też o tablicach w PHP
icetab
a pytanie jak zrobić potrójne porównanie ?

tak ?
  1. <?php
  2. echo $row['id_activ'] ? 'Zatwierdzono' : 'NIE....' : 'pytanie';
  3. ?>
Kicok
Cytat
a pytanie jak zrobić potrójne porównanie ?


Przecież są tylko dwie logiczne wartości: prawda i fałsz. To jak ty chcesz potrójne porównanie robić?


Może chodzi ci o zagnieżdżanie:
  1. <?php
  2.  
  3. $warunek1 = true;
  4. $warunek2 = true;
  5.  
  6. $wynik = $warunek1 ? ( $warunek2 ? "oba warunki spełnione" : "tylko 'warunek1' spełniony" ) : "żaden warunek nie jest spełniony";
  7. echo $wynik;
  8.  
  9. ?>
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.