Gå til innhold

Garanti's hjelpetråd til PHP


Anbefalte innlegg

Dette er nå gjort om til en hjelpetråd, først og fremst for min del, der jeg stiller spørsmål jeg som nybegynner innenfor PHP støter på.

 

Tidligere førstepost

Hei, noen som kan hjelpe meg med dette scriptet? Det er brukeren magikern som har laget det, men jeg klarer ikke å få det til å funke...

<table>

<tr bgcolor="<?php echo ($i%2)?"#ffffff":"#c0c0c0";?>"><td>her slenger du inn noe gøy</td></tr>

<tr bgcolor="<?php echo ($i%2)?"#ffffff":"#c0c0c0";?>"><td>her slenger du inn noe gøy</td></tr>

</table>

Endret av Garanti
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+6132

Alt mellom <table> og </table> må spyttes ut med en loop av et slag:

<table>
<?php
for($i = 0; $i <= 50; $i++)
{
$color = ($i%2) ? '#ffffff' : '#c0c0c0';
echo "<tr bgcolor=\"{$color}\"><td>{$i}</td></tr>\n";
}
?>
</table>

 

Raskt sammensatt, men du forstår nok tegninga :)

Lenke til kommentar

Trenger hjelp igjen med en else/if-funksjon; se nedenforstående kode.

Har en checkbox (trunkate), som skal overkjøre eksisterende tekst dersom den er utsjekket. Det funker, men filen blir trunkert/overskrevet uansett. Eneste forskjellen på else og if er åpningsattributten for filen.

 

$rawnews = $_POST['news'];
$rawauthor = $_POST['author'];
$trunkate = $_POST['trunkate'];

$news = $rawnews;
$author = $rawauthor;

if($trunkate == true){
$file = "news.txt";
$fh = fopen($file, 'w');
fwrite($fh, $news);
fwrite($fh, $author);
fclose($fh);
}
else{
$file = "news.txt";
$fh = fopen($file, 'a');
fwrite($fh, $news);
fwrite($fh, $author);
fclose($fh);
}

 

 

EDIT: Funker nå. Dersom du ser feil eller forbedringspotensiale i koden, si i fra! :)

Endret av Garanti
Lenke til kommentar
Trenger hjelp igjen med en else/if-funksjon; se nedenforstående kode.

Har en checkbox (trunkate), som skal overkjøre eksisterende tekst dersom den er utsjekket. Det funker, men filen blir trunkert/overskrevet uansett. Eneste forskjellen på else og if er åpningsattributten for filen.

 

*kode*

 

Noe alá dette burde vel fungere

# sjekk _alltid_ input for slemme ting.
$file = "news.txt";

if(isset($_POST['trunkate']) == true){
$fh = fopen($file, 'w');
fwrite($fh, $_POST['news']);
fwrite($fh, $_POST['author']);
fclose($fh);
echo $_POST['author'] . ' skrev følgende til ' . $file . '<hr>' . $_POST['news'];
}else{
# dette eksekveres om ikke $_POST['trunkate'] er satt.
echo 'truncate var ikke satt, og derfor ble det ikke skrevet noe info til ' . $news;
}

 

Du skulle ikke vurdert file_put_contents(), da? Den har litt enklere syntaks bl.a, og gir mindre og finere kode.

Endret av clvn
Lenke til kommentar

Hei, skal ha input fra et prompt-vindu:

<?php
$rand1 = rand(0,50);
$rand2 = rand(0,50);
$answer = $rand1 + $rand2;

echo "<script language=\"javascript\">prompt (\"Kva er $rand1 pluss $rand2?\", \"" .  [Hva skal jeg ha her?] ."\")</script>";

Lenger kommer jeg ikke. Hva skal jeg bruke for å få input fra vinduet?

Endret av Garanti
Lenke til kommentar

Hmm, blir det ikke feil å ha quotes (") inni en echo hvis man har innholdet i echo'en i quotes? Skal man ikke bruke bruke apostrof (') slik:

echo '<script language=\"javascript\">prompt (\"Kva er $rand1 pluss $rand2?\", \"" .  [Hva skal jeg ha her?] ."\")</script>';

 

Men da funker det vel ikke $rand1 og $rand2, eller gjør de? Er litt usikker på det. :hmm:

 

Edit: Leif. De, ikke den.

Endret av Bozzeye
Lenke til kommentar

Takk for svar, fant ut etter litt lesing på nettet at det er vanskelig å få PHP og javascript til å snakke da PHP er serverside-basert og JS er browser-basert. Uansett, jeg fikk til det jeg ville med litt javascripting; kode følger:

 

<script language="JavaScript">
<!--
var rand1 = Math.floor(Math.random()*51);
var rand2 = Math.floor(Math.random()*51);
var answer = rand1 + rand2;

var input = prompt("Kva er " + rand1 + " pluss " + rand2 + "?","")
if(input == answer){
alert(input + " er korrekt!")
}
else{
alert ("FEIL!")
window.location="http://youfail.org/"
}
//-->
</script>

 

Dette er jo uansett en bedre løsning mtp. at den tidligere versjonen ville krevde javascript-funksjonalitet, noe de fleste mobile enheter ikke har. I dette tillfellet blir javascript ignorert hos mobile enheter, og de går direkte til den siden de blir sendt til.

Endret av Garanti
Lenke til kommentar
Gjest Slettet+6132
Hmm, blir det ikke feil å ha quotes (") inni en echo hvis man har innholdet i echo'en i quotes? Skal man ikke bruke bruke apostrof (') slik:

 

Nei, han har escapa (kommer ikke på noen gode norske ord for det) tegnene, altså de teller ikke.

 

echo "Dette er en \"test\""; => Dette er en "test"

echo 'Dette er en \'test\''; => Dette er en 'test'

echo "Dette er en "test""; => Error … du skjønner tegninga :)

 

Redigert: Du har forresten rett, variabler fungerer ikke i single-quotes ('), da må du gjøre slik: echo '$a = ' . $a . '. Skjønner?';

Endret av Slettet+6132
Lenke til kommentar
Gjest Slettet+6132
Eh, den siste der tok jeg ikke...

 

Denne: echo '$a = ' . $a . '. Skjønner?'; ?

 

Du kan få samme echo til å skrive ut flere ting, du skiller tingene med et punktum. La oss si at du har $navn og $alder, da kan du gjøre slik:

echo $navn . ' er ' . $alder . ' år gammel.';

Da vil du få ut noe slik som «Alex er 15 år gammel.»

En annen måte å gjøre det på:

echo "{$navn} er {$alder} år gammel.";

Lenke til kommentar
Eh, den siste der tok jeg ikke...

Man kan ikke ha echo "dette er en variabel som heter "kåre""; for da vil PHP tro at den skal stoppe på echo "dette er en variabel som heter ". Om du skal skrive det slik må du enten bruke echo "dette er en variabel som heter \"kåre\""; ("escape quote") eller echo 'dette er en variabel som heter "kåre"'; (da "'" vil være det som holder variabelen,)

 

liksom-edit: Et par eksempler:

$variabel = 'SuperDuper';

echo '$variabel er ' . $variabel; #vil vise: $Variabel er SuperDuper

echo "$variabel er " . $variabel; #vil vise: $Variabel er SuperDuper

echo "$variabel er $variabel"; #vil vise: SuperDuper er SuperDuper

echo $variabel . " er $variabel"; #vil vise: SuperDuper er SuperDuper

echo $variabel . " er " . $variabel; #vil vise: SuperDuper er SuperDuper

echo $variabel . ' er ' . $variabel; #vil vise: SuperDuper er SuperDuper

echo '$variabel er $variabel'; #vil vise: $Variabel er $Variabel

echo "$variabel er \"$variabel\""; #vil vise: SuperDuper er "SuperDuper"

 

Hjalp det?

Lenke til kommentar

Da har jeg støtt på et nytt problem. Skal gjøre noen strenger harmløse, men får problemer med encodingen med

$gotnews = $_POST['news'];
$gotauthor = $_POST['author'];
$gotheader = $_POST['header'];
$truncate = $_POST['truncate'];

$rawnews = htmlentities($gotnews, ENT_NOQUOTES, ISO8859-1);		\\ Linje 24
$rawauthor = htmlentities($gotauthor, ENT_NOQUOTES,ISO8859-1);	\\ Linje 25
$rawheader = htmlentities($gotheader, ENT_NOQUOTES, ISO8859-1);   \\ Linje 26

 

Feilmelding:

Warning: htmlentities() [function.htmlentities]: charset `-8' not supported, assuming iso-8859-1 in C:\wamp\www\forum\process.php on line 24

Warning: htmlentities() [function.htmlentities]: charset `-8' not supported, assuming iso-8859-1 in C:\wamp\www\forum\process.php on line 25

Warning: htmlentities() [function.htmlentities]: charset `-8' not supported, assuming iso-8859-1 in C:\wamp\www\forum\process.php on line 26

 

Uansett hva jeg setter inn i for ISO8859-1, får jeg den samme feilmeldingen.

Her er forøvrig siden til php.net som omhandler htmlentities.

Endret av Garanti
Lenke til kommentar

Takk for svar! Fikk denne meldingen, men det er vel et hakk nærmere.

 

 

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\wamp\www\forum\process.php on line 24

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\wamp\www\forum\process.php on line 24

Parse error: syntax error, unexpected T_LNUMBER in C:\wamp\www\forum\process.php on line 24

 

EDIT: Haha! Feilsøkte litt selv, Fant ut hvilket symbol som hadde ASCII-nummer 92. Det var "\". Jeg blandet altså sammen "\" og "/" for kommentarene, hehe...

 

UAnsett, takk for hjelpen! Setter utrolig stor pris på det! :)

Endret av Garanti
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...