Jak Drupal tworzy nid, vid przy dodawaniu wpisów do bazy danych

Witam mam głupi porblem, z góry zaznaczę że nie jestem wybitny w programowaniu etc.

http://hiszpanski.crib.pl/…nskiego.html

Zrobiłem taki formularz dodawania tekstu piosenki z tłumaczeniem. Wszystko działa pięknie ładnie tzn.

1. skrypt przetwarzający który napisałem dodaje mi do bazy danych nowe node/ z odpowienim rodzajem zawartosci/czasem oraz uid osoby która to dodwała.

By dodać unikalne vid zauważyłem, że jest o no u mnie o 1 większe w każdym przypadku od nid więc napisałem skrypt, który pobiera nid będące ostatnie w tabeli node i powiększa je o 1 zwracając vid. Ok w ten sposób dodaje nowy contetn i wszystko jest ok tylo, że gdy potem dodaje inną zawartośc na stronie taka jak np. wątek na forum czy story czy page. pojawia się porblem tego typu że drupal próbuje dodać do bazy wpis z NID i VID, które były już utworzone przez mój formularz i pojawia się ostrzeżenie o Duplicate Entry i głupi błąd – muszę dać wróć i dodać jeszcze raz, opcjonalnie powtórzyć to tyle razy ile nowej zawartości dodałem za pomocą własnego formularza.

I wynika z tąd, że Drupal w jakiś sposób zlicza sobie te nid i vid -? tylko ja nie wiem jak i nie chciałbym by ktoś pomógł mi naprawić ten błąd to znaczy powiedział jak mam dodawać node żeby ten błąd się nie pojawiał.

Skąd Drupal bierze te nid i vid – myślałem, że są one kreowane automatycznie

o ja mam taki skrypt:

$nowa_strona = mysql_query('INSERT node (vid,type, title, uid, status, created, changed) VALUES

i tam odpowiednio wstaiwam własciwe dane – nid nie kreuję bo jest ono automatycznie uzupełniane w mysql.

Tylko, że potem Drupal jak pisałem wyżej próbuje wstawić z tym samym nid, które jest już utworzone. Nie rozumiem tego wogóle.

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.

Tak zaglądnąłem jeszcze do

Tak zaglądnąłem jeszcze do niektórych plików drupala i sie zastanawiam czy może db_query(„REPLACE INTO {sequences} VALUES (‚%s’,%s)”, $name, $id);

zamiast tworzonych przez siebie nid i vid trzeba wstawić w tym skrypcie przetwarzajacym %s %d?

rozwiązałem ten problem

Ok rozwiązałem ten problem

;/ wystarczyło tylko zastosować odopowiednią funkcję drupala do generowania unikalnego nid i vid zamiast własnych skomplikowanaych i nieudolnych prób.

już nie pamiętam dokładnie bo skopiowałem to z pliku domyślnego zapisywania node dostępnego na stronie drupal.org API

Portret użytkownika nexus246

W ten sposób rozwalisz sobie

W ten sposób rozwalisz sobie bazę danych. Powinieneś przy zapisywaniu segmentu utworzyć obiekt node a potem skorzystać z node_save(). Tylko wtedy masz pewność że wszystkie hooki się poprawnie wykonają.

eh

Dlaczego rozwale sobie baze danych skoro dodaje jak najbardziej poprawnie wpisy i już nie miesza nid'ów skoro poprawnie dodaje wpisy to jak to niby może rozwalić baze – rozumiem tak jak było wczesniej i błędy wykakiwały to może i tak ale tak jak teraz powinno być dobrze, szczerze powiedziwaszy nie chce mi się jakoś zbytnio zagłebiać w działanie drupala

Portret użytkownika nexus246

No jak Ci się nie chce to

No jak Ci się nie chce to Twoja sprawa. Tak jak napisałem, w ten sposób nie wywołują się wszystkie hooki.