Borde inte detta funka för att omvandla en variabel:?
while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";
28 svar · 333 visningar · startad av cgi
Borde inte detta funka för att omvandla en variabel:?
while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";
Ingen som har kunskap i detta.?
$info->{'inlagg'} är information från databasen,
koden funkar om jag hämtar informationen ifrån en vanlig textfil,
while (<INFO> ) {
men inte ifrån en riktig databas,
du kanske har en bättre lösning på detta?
jag är lite osäker på din while-slinga...
om du använder DBI för att prata med databasen kan du säga:
while (my $p = $sth->fetchrow_hashref())
istället.
------------------
PeterSign v 2.3.36
Nej, det där funkade inget bättre.
få se.. kan du klistra in lite mer av koden runt om, så att vi kan få se lite mer helheten..?
------------------
PeterSign v 2.3.36
Visst kan jag det:
$sth = $dbh->prepare("SELECT * from tabell order by nr DESC LIMIT $start2, $poster_per_sida");
$sth->execute();
$sth2 = $dbh->prepare("SELECT * from admin");
$sth2->execute;
$info = $sth2->fetchrow_hashref();
while (@row = $sth->fetchrow_array) {
while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";
}
okey.. få tänka :)
$sth = $dbh->prepare("SELECT * from tabell order by nr DESC LIMIT $start2, $poster_per_sida");
$sth->execute();
$sth2 = $dbh->prepare("SELECT * from admin");
$sth2->execute;
$info = $sth2->fetchrow_hashref();
while (@row = $sth->fetchrow_array) {
while ($info = $sth2->fetchrow_hashref() && $_ = $info->{'inlägg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";
}
kanske funkar?
------------------
PeterSign v 2.3.36
[Redigerat av Peter_B den 22 apr 2001]
Nej det funkar inte. :(
hmm.. blir det kompileringsfel eller vadå?
kan du skriva dit lite debug-printar så att du kan testa vad som finns i alla variabler?
------------------
PeterSign v 2.3.36
Och med debug-printar menar du. :q
ah, tja att du skriver ut innehållet i alla variabler i ditt program, precis innan de ska användas. typ
print "DEBUG: \$_ = $_";
samt allt annat som kan vara av intresse. det blir mycket lättare att leta fel då, eftersom man kan följa precis vad som händer.
------------------
PeterSign v 2.3.36
print "DEBUG: har jag faktiskt aldrig sett förut,
men det ger iallafall inget felmeddelande.
[Redigerat av cgi den 23 apr 2001]
just ordet "debug" spelar ingen roll, det är bara så att man som testare vet vad det är man ser.
när man skriver och testar ett nytt program så är det bra att skriva ut lite relevanta variabler då och då, så märker man ganska lätt vad som blir fel.
sen när programmet är klart så kan man ta bort det hela. alternativt:
if ($debug) { print "debug: blabla"; }
och sedan sätta $debug=1;
i början av scriptet och sedan ändra till $debug=0; när man är klar.
tror att ditt problem kräver en lite närmare analys (på detta sätt) av vad som händer.
------------------
PeterSign v 2.3.36
Jag har satt så här:
$debug = '1';
if ($debug) {
print qq~ $_ =~ s/\[namn\]/$row[1]/ig ~;
$debug = '0';
}
men inget händer.
hmmm...
kanske
$debug = '1';
if ($debug) {
$_ =~ s/\[namn\]/$row[1]/ig;
print "debug: $_";
$debug = '0';
}
annars... om det känns helt hopplöst så kan du maila ditt script till mig, peter@scorpiondata.com, så tar jag och analyserar lite nogrannare.
------------------
PeterSign v 2.3.36
Nej du, det händer fortfarande inget.
Visst skulle jag kunna maila över scriptet men du har ju nästan sett hela några inlägg längre upp.
jag tror nog inte att felet finns i den del av koden som omvandlar, tror nog att det är fel i sakerna som hämtar från databasen. prova att göra allt utan att omvandla först, du kan lägga till det sen när du vet att allt annat funkar.
------------------
PeterSign v 2.3.36
Allt annat funkar kanon,
det är när jag klistrar in:
while ($info = $sth2->fetchrow_hashref() && $_ = $info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";
som det inte fungerar.