webForumDet fria alternativet

Omvandla variabel.

28 svar · 333 visningar · startad av cgi

cgiMedlem sedan jan. 2000358 inlägg
#1

Borde inte detta funka för att omvandla en variabel:?

while ($info->{'inlagg'}) {
$_ =~ s/\[namn\]/$row[1]/ig;
push (@inlagg,$_);
}
print "@inlagg";

cgiMedlem sedan jan. 2000358 inlägg
#2

Ingen som har kunskap i detta.?

Peter_BMedlem sedan apr. 2000595 inlägg
#3

vad är egentligen

$info->{'inlagg'}

för någonting?

------------------
PeterSign v 2.3.36

cgiMedlem sedan jan. 2000358 inlägg
#4

$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?

Peter_BMedlem sedan apr. 2000595 inlägg
#5

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

cgiMedlem sedan jan. 2000358 inlägg
#6

Nej, det där funkade inget bättre.

Peter_BMedlem sedan apr. 2000595 inlägg
#7

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

cgiMedlem sedan jan. 2000358 inlägg
#8

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";

}

Peter_BMedlem sedan apr. 2000595 inlägg
#9

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]

cgiMedlem sedan jan. 2000358 inlägg
#10

Nej det funkar inte. :(

Peter_BMedlem sedan apr. 2000595 inlägg
#11

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

cgiMedlem sedan jan. 2000358 inlägg
#12

Och med debug-printar menar du. :q

Peter_BMedlem sedan apr. 2000595 inlägg
#13

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

cgiMedlem sedan jan. 2000358 inlägg
#14

print "DEBUG: har jag faktiskt aldrig sett förut,
men det ger iallafall inget felmeddelande.

[Redigerat av cgi den 23 apr 2001]

Peter_BMedlem sedan apr. 2000595 inlägg
#15

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

cgiMedlem sedan jan. 2000358 inlägg
#16

Jag har satt så här:

$debug = '1';
if ($debug) {
print qq~ $_ =~ s/\[namn\]/$row[1]/ig ~;
$debug = '0';
}

men inget händer.

Peter_BMedlem sedan apr. 2000595 inlägg
#17

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

cgiMedlem sedan jan. 2000358 inlägg
#18

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.

Peter_BMedlem sedan apr. 2000595 inlägg
#19

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

cgiMedlem sedan jan. 2000358 inlägg
#20

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.

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb