मुझे लगता है कि मुझे आवश्यकता है निम्न करने के लिए पर्ल में एक प्रोग्रामिंग काम है:मैं पर्ल के साथ एक पारिवारिक पेड़ कैसे बना सकता हूं? तालिका से डेटा</p></li> <li><p>भार:
ने MySQL डेटाबेस में एक मेज बनाता है, और इसे में इन रिकॉर्ड सम्मिलित करता है कक्षा पुत्र के उदाहरणों की एक सरणी में।
सरणी का उपयोग करके, पिता-पुत्र के पेड़ का प्रतिनिधित्व करने वाला HTML कोड बनाता है, और HTML कोड को STDOUT पर प्रिंट करता है। पेड़ को अच्छा दिखाना जरूरी नहीं है। कुछ इस तरह ठीक होगा:
tree http://i25.tinypic.com/314t177.png
मैं विचारों से बाहर चल रहा हूँ, कृपया मदद करते हैं। है मेरे कोड इस प्रकार है:
क्या सवाल यह है कि के रूप में स्पष्टीकरण का इंतजार करते हुए#!/usr/bin/perl
use strict;
use Son;
use CGI;
use Data::Dumper;
use DBI;
my $q = new CGI;
#DB connect vars
my $user = "##";
my $pass = "##";
my $db = "##";
my $host = "localhost";
my $dsn = "DBI:mysql:database=$db;host=$host";
my $dbh = DBI->connect($dsn,$user,$pass);
eval { $dbh->do("DROP TABLE sons") };
print "Drop failed: [email protected]\n" if [email protected];
$dbh->do("CREATE TABLE sons (son VARCHAR(30) PRIMARY KEY, father VARCHAR(30))");
my @rows = (["bill", "sam"],
["bob", ""],
["jack", "sam"],
["jone", "mike"],
["mike", "bob"],
["sam", "bob"]
);
for my $i (0 .. $#rows) {
$dbh->do("INSERT INTO sons (son, father) VALUES (?,?)", {}, $rows[$i][0], $rows[$i][1]);
}
our @sons_array;
my $sth = $dbh->prepare("SELECT * FROM sons");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
$sons_array[++$#sons_array] = Son->new($ref->{'son'}, $ref->{'father'});
}
$sth->finish();
$dbh->disconnect();
print $q->header("text/html"),$q->start_html("Perl CGI");
print "\n\n";
constructFamilyTree(@sons_array, '');
print $q->end_html;
sub constructFamilyTree {
my @sons_array = @_[0..$#_ -1];
my $print_father;
my $print_son;
my $print_relation;
my $current_parent = @_[$#_];
my @new_sons_array;
my @new_siblings;
#print $current_parent."\n";
foreach my $item (@sons_array){
if(!$item->{'son'} || $item->{'son'} eq $item->{'father'}) { # == ($item->{'son'} eq '')
print "\n List contains bad data\n";
return 0;
}
if($item->{'father'} eq $current_parent) {
my $temp_print_relation;
foreach my $child (@sons_array) {
if($child->{'father'} eq $item->{'son'}) {
if(!$temp_print_relation) {
$temp_print_relation .= ' |';
}
else {
$temp_print_relation .= '-----|';
}
}
}
$print_relation .= $temp_print_relation." ";
$print_son .= '('.$item->{'son'}.') ';
@new_siblings[++$#new_siblings] = $item;
$print_father = $item->{'father'};
}
else {
$new_sons_array[++$#new_sons_array] = $item;
}
}
print $print_son. "\n". $print_relation."\n";
#print $print_father."\n";
#print $print_relation . "\n". $print_son;
foreach my $item (@new_siblings) {
constructFamilyTree(@new_sons_array, $item->{'son'});
}
}
perl module:
#File Son.pm, module for class Son
package Son;
sub new {
my($class, $son, $father) = @_;
my $self = {'son' => $son,
'father' => $father};
bless $self, $class;
return $self;
}
1;
"विचारों से बाहर निकलना", वास्तव में क्या विचार है? यहां कोई सवाल नहीं है, बस आपका असाइनमेंट, और "यहां, मेरे लिए यह करें"। –
आपका प्रश्न वास्तव में CGI या MySQL के बारे में नहीं है। यह उचित डेटा संरचना को चुनने और प्रदर्शित करने के बारे में है। आपके कोड में कार्य के लिए बहुत अधिक आवश्यक विवरण शामिल हैं। –
बस सोच रहा है कि मैं पूरी तरह से बंद या सही रास्ते पर हूं। क्षमा करें/धन्यवाद। –