Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
From: Thomas Nyman <thomas@te...> - 2005-08-12 14:47:58
|
Thanks.. I managed to figure it out but yor mail was very instructional. What I did was as follows ..some code... $rows = $sth->fetchall_arrayref({}); my @AoH = @$rows; for my $p (0..$#AoH) { for my $bulle ( keys %{ $AoH[$p] } ) { if (($AoH[$p]{$bulle}) =~ m/^[\d]+-[\d]+$/) { my @fields = split /-/, ($AoH[$p]{$bulle}); my $nr1 = "-"; my $nr2 = "-"; $rows->[$p]->{Mobil} = $nr1.$fields[0].$fields[1]. $nr2; } } } Its probably not elegant but it gives me a chance to change the value of row "Mobil" before feeding it to the template. In this particular example it doesn do anything useful I was simply doing it to learn. Your input was greatly appreciated and if you see me missing something obvious the give me a "holler". And thanks for the dumper idea..did really know about that. Thomas 12 aug 2005 kl. 16.06 skrev Ragan, Steve: > > To understand how to de-ref you must understand what it is you're > trying to de-ref. > > Lets assume you have a simple SQL query like this that returns > first and last names from a table - > > my $sql = qq[ > SELECT first, last > FROM persons > ]; > > First you prepare and execute - > > my $sth = $dbh->prepare($sql) || die("Unable to prepare > statement"); > > $sth->execute() || die("Database execute Error: $DBI::errstr"); > > then fetch the results. If you use the regular fetchall_arrayref(), > you're getting an arrarref of arrayref structure. > That is a reference to array of rows that itself is a reference to > array of columns. > To help visualize the structure you can use the Data::Dumper module > > use Data::Dumper; > > my $ra_results = $sth->fetchall_arrayref(); > > my $d = Data::Dumper->new([$ra_results], [qw(ra_results )] ); > > > print '<pre>' . $d->Dump . '</pre>'; # if you in HTML, > otherwise just print $d->Dump > > > The structure would appear something like this - > > $ra_results = [ > [ > 'Duane', > 'Allman' > ], > [ > 'Stevie Ray', > 'Vaughn' > ] > ]; > > > You could access specific rows and columns directly - > > First row - > > my $first_name = $ra_results->[0][0]; > my $last_name = $ra_results->[0][1]; > > or loop through all rows accessing each column - > > for my $ra_row (@{$ra_results}) { > my $first_name = $ra_row->[0]; > my $last_name = $ra_row->[1]; > ...( more code here ) ... > } > > > > > If you fetch using $sth->fetchall_arrayref({}), you're getting an > arrarref of hashref structure. > That is a reference to array of rows that itself is a reference to > a hash of column name/column values. > If you use Data::Dumper again you'll see the structure looks like this > > $ra_results = [ > { > 'last' => 'Allman', > 'first' => 'Duane' > }, > { > 'last' => 'Vaughn', > 'first' => 'Stevie Ray' > }, > ]; > > > You would loop through that structure like this - > > my $ra_results = $sth->fetchall_arrayref({}); > > for my $ra_row (@{$ra_results}) { > for my $key (keys %{$ra_row}) { > my $value = $ra_row->{$key}; > ...( more code here ) ... > } > } > > > If you're using TMPL_LOOP's you probably don't need to be munging > around with that data structure anyway since you need to assign an > arraryref of hasref to the param - > > $template->param(EMPLOYEE_INFO => $ra_results ); > > > Check out the perl doc perldsc (Data Structures Cookbook) for a > discussion on data structures and derefernencing. > > Good luck > Steve > (Programmer, not soda jerk :) > > > Steve Ragan > Sr. Internet Developer > Harris Connect > 2500 Westchester Ave. > Purchase, NY 10577 > T 914.641.3948 > F 914.641.3584 > sragan@... > http://www.harrisconnect.com > > > > -----Original Message----- > From: html-template-users-admin@... > [mailto:html-template-users-admin@...]On Behalf Of > Thomas Nyman > Sent: Friday, August 12, 2005 5:11 AM > To: html-template-users@... > Subject: [htmltmpl] dereferencing issues > > > Hi > > I've tried studying perldoc pages, the htmps template pages and most > things relating to dbi etc. > > Despite this I have been unable to understand how to dereference > fetchall_arrayref({}) > > I can dereference fetchall_arrayref() but not fetchall_arrayref > ( {} ), i.e the arrayref of hash refs. > > I would like to query the database using fetchall_arrayref({}), the > dereference that and perhaps make changes to some values, put it back > into an arrayref({}) and then dump it to html template. > > SO far I'm stumped with the first part..i simply cant dereference the > *fg!?*-thing <grinning> .. anyway, please is there some who can help > iterate through arrayref({}) (both key and value). > > AN example > > I query the database for "Name", "Adress", "Phone", "Fax", "Email" > > the $rows = $sth->fetchall_arrayref({}); > > now i would like to dump my rows into an array and check for certain > values etc, for instance lets say the phonenumber is represented as > 512445566 in the database, but i want it to display as 512-445566 in > the html-template..therefore i would need to access the "Phone" > query, check its format, possibly change it, insert the new value in > my arrayref of hashrefs. > > (on my knees and waiting) > > Thomas > > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle > Practices > Agile & Plan-Driven Development * Managing Projects & Teams * > Testing & QA > Security * Process Improvement & Measurement * http://www.sqe.com/ > bsce5sf > _______________________________________________ > Html-template-users mailing list > Html-template-users@... > https://lists.sourceforge.net/lists/listinfo/html-template-users > > ********************************************************************** > ********************************************************************** > **** > This message (including any attachments) contains confidential > information intended for a specific individual and purpose, and is > protected by law. If you are not the intended recipient, please > delete this message. Any disclosure, copying, or distribution of > this message, or the taking of any action based on it, is strictly > prohibited. > > NOTE: Effective immediately, our name has changed from Bernard C. > Harris Publishing Company to Harris Connect. As a result, our e- > mail domain name is changing from user@... to > user@... Please make the appropriate adjustments to > any personal address book entries or contact information. > |