Jump to content
php.lv forumi

Select no DB, Update un viss beidzas ar Error


Bunkertor 7
 Share

Recommended Posts

Sveiki,

 

Izdomāju skriptu, kas ņem datus no MySQL tabulas, pārveido tos SEO-draudzīgos (lai Guglei patiktu) datos un saglabā atpakaļ tabulā.

Visas funkcijas, ja testē atsevišķi, strādā OK, bet kad to visu saliek kopā vienā lielā skriptā ar kverijiem, sanāk tā, ka visas rindiņas tiek Updeitotas ar pirmās rindiņas datiem. Nu, piemēram, ja rindiņas būtu Kartupelis, Kāposts, Ābols, tad sanāk kartupelis, kartupelis, kartupelis.

 

Error reporti neko neparāda, laikam jau tas ir kaut kas vienkāršs. Vēlreiz pārlasīju "while" manuāli, bet neko aizdomīgu neatradu...

 

Skripts ir atrodams šeitan:

http://paste.php.lv/dcd42edec99af6376d853b...ab2c65?lang=php

 

Paldies.

Link to comment
Share on other sites

UPDATE trūkst WHERE klauzas. Tu ar katru UPDATE maini visas tabulas datus, t.i., pārraksti visas rindiņas. Tev vajag kaut kā identificēt konkrēto ierakstu, vai nu pēc kādas speciālas identifikatora kolonas vai title, tā lai katrs Update nostrādātu tikai uz vienu ierakstu - to ko modificē.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

UPDATE trūkst WHERE klauzas. Tu ar katru UPDATE maini visas tabulas datus, t.i., pārraksti visas rindiņas. Tev vajag kaut kā identificēt konkrēto ierakstu, vai nu pēc kādas speciālas identifikatora kolonas vai title, tā lai katrs Update nostrādātu tikai uz vienu ierakstu - to ko modificē.

 

Gints Plivna

http://datubazes.wordpress.com

Paldies!

Njā, kaut ka pagrūti būs identificēt. Piemēram, man tabulā ir 1000 rakstu, kur katram ir atšķirīgs title, body, utt... Es jau nevaru viņus visus identificēt. Man vajag, lai skripts pārveidotu visas rindiņas - no pirmās līdz tūkstošajai, atkarībā no tā, kas tanī rindiņā ir ierakstīts. Būs man viela pārdomām :D

Link to comment
Share on other sites

Njā, kaut ka pagrūti būs identificēt.

Būs man viela pārdomām :D

Buus gan ja nesi izmantojis Primary key ..

A ja ir normala tabulas struktura tad parasti ir kaads Identifikators peec kaa var nekljudigi noteikt kura rindinja ....

Un tad jau nav problem: SELECT id, bla1, bla bla n .. FROM tabulis ...

un peec ID izdaram UPDATE .. WHERE id=$tekosais_id tas arii viss...

Un viela pardomam arii kad ciklaa tiek atkartoti defineeta f-ja .. Ja godiigi iisti neticu ka tas tavs skripts straada bez erroriem ... (Un vai shii iemesla delj vispar straada .....)

[/code]

while($r=mysql_fetch_array($dragresult)) {

$title = "$r[title]";

$description = "$r[description]";

 

//shite saakas title apstraade

function make_urls($title,$bad_words, $divider = '-')

{ .....

 

[/code]

funkcijas NEKAD nedefinee ieksh cikla, tapec jau taas ir izdomatas kad definee tikai 1 reizi un peec tam izsauc, to gan tieshi var dariit ciklaa

Link to comment
Share on other sites

Buus gan ja nesi izmantojis Primary key ..

 

O, super! Paldies, Grey_Wolf.

Patiesībā man tabulās vienmēr ir Primary Key - vajag vai nevajag. Es jau pāris reizes uz to apdedzinājos strādājot ar milzīgām tabulām, tāpēc tagad vienmēr lietoju "id".

Un par to funkciju Tev bija pilnīga taisnība - viņš it kā izpilda to skriptu, bet iet uz riņķi un beigās uzkarās. Tagad ir OK, es to funkcijas definēšanu aizvācu uz sākumu. Tomēr parādījās cita problēma :(

 

Jauns errors: Warning: mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /hsphere/local/home

līnijā #61 - tur, kur izpildās mysql_query

 

Ja pamēģina atkomentēt #55, 56, 57 - tur, kur tie echo un aizkomentēt kveriju - viss notiek kā vajag. Skripts aiziet līdz pēdējai tabulas rindiņai, izdara visu pareizi un izvada uz ekrāna HTML. Tātad outputs ir...

 

Te ir jaunā versija

http://paste.php.lv/ad711b9d0b0cf687b4e45c...29018c?lang=php

Link to comment
Share on other sites

izvāc mysql_close();

Paldies, Val. Tagad viss ir OK.

 

Vēl beigās pārtaisīju #40, tur kur skripts raksta url

$readyurl = make_urls($title,$bad_words)."-".$id;

Tagad viņš visiem url kabina galā id, gadījumā ja vairākiem ierakstiem ir identiski Title.

Uff, tas bija vērtīgs lessons!

Link to comment
Share on other sites

 Share

×
×
  • Create New...