Avatar billede noodrem Nybegynder
14. februar 2004 - 16:31 Der er 18 kommentarer og
1 løsning

Hvad gør variaben $r?

Hej

Jeg har mange steder set variablen $r blive brugt. Jeg kan ikke slå den op i PHP manualen, og aner ikke hvad den gør, så er der nogle der kan fortællge mig præcist hvad den gør, og gerne give et eksempel hvor den bruges?
Avatar billede esoulman Nybegynder
14. februar 2004 - 17:19 #1
Det er en variabel som man selv specificerer.. det er ikke noget fast variabel.
Avatar billede esoulman Nybegynder
14. februar 2004 - 17:19 #2
Hvor har du set den brugt?
Avatar billede noodrem Nybegynder
14. februar 2004 - 17:30 #3
Jeg har set den brugt bl.a i følgende eksempel:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Mine MP3 numre</title>
</head>

<body>
<h3 align="center">Mine mp3 numre</h3><br>
<br>
<?
mysql_connect("localhost","root");
mysql_select_db("mp3");
$query = mysql_query("SELECT * FROM mp3numre ORDER BY id");
echo "<font color="red"><ol>";
while($r = mysql_fetch_array($query)) {
$kunstner = $r["kunstner"];
$titel = $r["titel"];
$dato = $r["dato"];
echo "<li>$kunstner - $titel blev tilføjet $dato";
}
echo "</ol></font>";
?>

</body>
</html>


Jeg har prøvet at lave et lign. script som ser sådan ud:

<?php

mysql_connect("localhost", "root");
mysql_select_db("news");

$query = mysql_query("SELECT * from nyheder ORDER BY navn");


while($r = mysql_fetch_array($query)) {

$navn = $r["navn"];
$mail = $r["mail"];
$hjemmeside = $r["hjemmeside"];
$tekst = $r["tekst"];
$dato = date();
$tid = time();

echo "<p><b>Forfatter:</<b> $navn </p>";
echo "<p><b>Email:</b> $mail</p>";
echo "<p><b>Hjemmeside:</b> $hjemmeside</p>";
echo "<p>$tekst</p>";
echo "<p>SKrevet den $dato kl. $tid</p><br />";
}

?>


Men mit problem er så at der kun kommer til at stå:

Forfatter:

Email:

Hjemmeside:


Det antal gange lykken gennemløbes. Hvorfor fanger den ikke mine input?
Avatar billede esoulman Nybegynder
14. februar 2004 - 17:32 #4
$r er i dette tilfælde bare en variabel for den *R*ække som databasen læser. Er du sikker på du har nogle værdier indsat i databasen?
Avatar billede esoulman Nybegynder
14. februar 2004 - 17:34 #5
Mangler du ikke at angive password til at forbinde til mysql?
Avatar billede noodrem Nybegynder
14. februar 2004 - 17:49 #6
Nu viser den noget. Men kunne jeg ligeså godt skrive eks. $etelerandet['mail'] i stedet for $r['mail'] og få det samme resultat?
Avatar billede exp Juniormester
14. februar 2004 - 18:04 #7
Jep
Avatar billede noodrem Nybegynder
14. februar 2004 - 18:13 #8
Men nu er det så jeg ikke forstår hvordan følgende script virker:

while($r = mysql_fetch_array($query))

Der har r jo ingen værdi, men allegevel stopper løkken når alle posts fra min gæstebog er blevet vist!
Avatar billede exp Juniormester
14. februar 2004 - 18:31 #9
while($r = mysql_fetch_array($query)) =>

"så længe mysql_fetch_array() kan hente noget i $query, skal [...] ske. P.S. Dataene skal lægges i array'et $r"
Avatar billede noodrem Nybegynder
14. februar 2004 - 18:44 #10
Så vil det sige at den løber de forskellige kolonner som er i queryen igennem, en for en, indtil der ikke er flere data?
Avatar billede exp Juniormester
14. februar 2004 - 18:47 #11
Sådan noget lignende...
Avatar billede noodrem Nybegynder
14. februar 2004 - 19:04 #12
Ok, nu vi er i gang, kan du så fortælle mig hvordan man gør sådan at de linjeskift brugeren laver når han poster i  min gæstebog virker?
Avatar billede esoulman Nybegynder
14. februar 2004 - 21:53 #13
$tekst = nl2br($r["tekst"]);

Du skal selvfølgelig bruge funktionen på teksten, inden du gemmer i databasen. Så er teksten nemlig klar til at blive hentet næste gang, med rigtige linieskift uden du skal gøre noget.
Avatar billede noodrem Nybegynder
15. februar 2004 - 10:45 #14
Fortår ikke helt hvor jeg skal bruge den.

Jeg har først en side som ser sådan ud:

<?php
session_start();

$_SESSION['mail'] = $_REQUEST['mail'];
$_SESSION['hjemmeside'] = $_REQUEST['hjemmeside'];
$navn = $_REQUEST['navn'];
$mail = "<a href=\"mailto:{$_SESSION['mail']}\">{$_SESSION['mail']}</a>";
$hjemmeside = "<a href=\"{$_SESSION['hjemmeside']}\" target=\"_blank\">{$_SESSION['hjemmeside']}</a>";
$tekst = $_REQUEST['tekst'];

if(empty($navn) OR empty($mail) OR empty($hjemmeside) OR empty($tekst)) {
echo "Alle felter skal udfyldes";
} else {

mysql_connect("localhost", "root");
mysql_select_db("news");

mysql_query("insert into nyheder (navn, mail, hjemmeside, tekst) VALUES ('$navn', '$mail', '$hjemmeside', '$tekst')")
or die ('Mysql error');

mysql_close();

echo "Beskeden er tilføjet. Tilføj flere eller <a href='vis.php'>vis alle beskeder</a>";

}

?>


Og derefter en side der ser sådan ud:

<html>
<head>
<title>Gæstebog</title>

<link rel="stylesheet" type="text/css" href="stylesheet.css">

</head>

<body>

<?php

mysql_connect("localhost", "root");
mysql_select_db("news");

$query = mysql_query("SELECT * from nyheder ORDER BY navn");


while($r = mysql_fetch_array($query)) {

$navn = $r["navn"];
$mail = $r["mail"];
$hjemmeside = $r["hjemmeside"];
$tekst = $r["tekst"];


echo "<p><span id='farve'>Forfatter:</span> $navn </p>";
echo "<p><span id='farve'>Email:</span>$mail</p>";
echo "<p><span id='farve'>Hjemmeside:</span> $hjemmeside</p>";
echo "<p>$tekst</p><br /><br /><br />";
}

?>

</body>

</html>


Hvor er det så jeg skal indsætte $tekst = nl2br($r['tekst']); ?
Jeg har prøvet at gøre det lige efter jeg requester $tekst på den første side, og lige før jeg indsætter i min database på side 2, men det virker ingen af stederne
Avatar billede esoulman Nybegynder
15. februar 2004 - 12:35 #15
I dit første php dokument ->

mysql_query("insert into nyheder (navn, mail, hjemmeside, tekst) VALUES ('$navn', '$mail', '$hjemmeside', '$tekst')")
or die ('Mysql error');

Ovenover denne linie, skriver du
$tekst = nl2br($tekst);

Det er det hele..
Avatar billede noodrem Nybegynder
15. februar 2004 - 13:38 #16
Nu virker det med linjeskiftene ( tak for svaret :D ) Men nu har jeg så det problem at de mellemrummene, ikke lbiver registreret!
Avatar billede noodrem Nybegynder
13. september 2004 - 11:03 #17
nogle der smider et svar?
Avatar billede exp Juniormester
13. september 2004 - 11:36 #18
Hvem synes DU skal smide svar?
Avatar billede esoulman Nybegynder
13. september 2004 - 12:10 #19
Just in case.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester