Avatar billede ronniej Nybegynder
06. april 2009 - 20:55 Der er 13 kommentarer og
1 løsning

hjælp - Klarhed omkring " og '

Det ser ud til at jeg har besvær med at finde ud af hvornår jeg kan bruge ". ' eller intet når jeg skriver PHP. håber nogen kan forklare mig det en gang for alle.

I mit seneste eksempel brugte jeg $row['product'] men det virkede ikke. kun da jeg fjernede '', men jeg er ikke sikker på hvorfor.

Eksempel:

while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td width=300 bgcolor=$bgcolour>$row[product]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[sn]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[note]</td>";
  echo "</tr>";
}


Hvis nogen kan fortælle mig om en bedre måde at strukturere min kode, please kom med feedback.

Fulde eksempel:
<html>

<head>
<title>test</title>
</head>

<body>

<?php
include 'config.php';
include 'opendb.php';

$query  = "SELECT * FROM training_stock";
$result = mysql_query($query);

echo "<table width='900' cellspacing='0' cellpadding='0' style='border: 1px solid #000000'>";
echo "<tr>";
echo "<td width='300' style='border-bottom: 1px solid #000000'>Product</td>";
echo "<td width='300' style='border-bottom: 1px solid #000000'>Serial Number</td>";
echo "<td width='300' style='border-bottom: 1px solid #000000'>Note</td>";
echo "</tr>";

while($row = mysql_fetch_array($result)) {

if ($row[faulty] == "1") {

$bgcolour = "#990000";

} elseif($row[course_id] != "0") {

$bgcolour = "#FF9933";

} else {

$bgcolour = "#FFFFFF";

}

  echo "<tr>";
  echo "<td width=300 bgcolor=$bgcolour>$row[product]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[sn]</td>";
  echo "<td width=300 bgcolor=$bgcolour>$row[note]</td>";
  echo "</tr>";
}

echo "</table>";

include 'closedb.php';

?>


</body>

</html>

Håber på god fornuftig konstruktiv feedback.

Ronnie
Avatar billede stagedk Nybegynder
06. april 2009 - 23:34 #1
jeg er ikke sikker på alle reglerne :).
men jeg kender to vigtige.

i en echo må aldrig bruges " inde i strengen da php opfatter det som at man lukker. så i stedet for
echo "<font face="tahoma">";  skriver du
echo "<font face='tahoma'>"; / echo "<font face\"tahoma\">";
har egentlig aldrig fattet folk der skriver \" istedet for '.
det samme gælder i en mysql string. altså hvis du laver en ", så tror php du lukker din query forespørgelse og derfor får du en fejl.
så du skriver
mysql_query("SELECT * FROM tablename WHERE username='$brugernavn'");
i stedet for
mysql_query("SELECT * FROM tablename WHERE username="$brugernavn"");
Avatar billede majbom Novice
07. april 2009 - 07:59 #2
du kan brue enten ' eller " til at omkranse en streng.

hvis du bruger " kan du gøre sådan her:

$var = "variabel";
echo "dette er en streng med en $var i";

OUTPUT: dette er en streng med en variabel i

hvis du laver samme trick med ' får du dette:

OUTPUT: dette er en streng med en $var i


i dit tilfælde kan følgende bruges:

echo "<td width='300' bgcolor='$bgcolour'>$row['product']</td>";

alternativt kan du skrive:

echo '<td width="300" bgcolor="'.$bgcolour.'">'.$row['product'].'</td>';

eller:

echo "<td width=\"300\" bgcolor=\"$bgcolour\">$row['product']</td>";

der er mange muligheder. det vigtiste er sådan set at starte og slutte strengen med samme tegn og hvis du skal udsrive et tilsvarende tegn inde i strengen skal der en backslash foran (\' og \")
Avatar billede majbom Novice
07. april 2009 - 08:01 #3
i øvrigt er det en god ide at bruge ' når du bruger arrays:

$row['product'];

i stedet for:

$row[product];

da serveren ellers først vil lede efter konstanten "product" og først derefter opfatte det som en streng.
Avatar billede ronniej Nybegynder
07. april 2009 - 09:54 #4
Tusinde tak for jeres svar, har lige prøvet at erstatte flg.

echo "<td width='300' bgcolor='$bgcolour'>$row[product]</td>";

med det her:

echo "<td width='300' bgcolor='$bgcolour'>$row['product']</td>";

og så virker siden ikke. den er hel blank. nogen ideer til hvorfor ?
Avatar billede ronniej Nybegynder
07. april 2009 - 10:02 #5
Kunne det være en server konfiguration ? mit webhotel er hos www.one.com
Avatar billede majbom Novice
07. april 2009 - 10:12 #6
hmm, er sikker på at det burde virke...

prøv med:

echo "<td width='300' bgcolor='$bgcolour'>".$row['product']."</td>";
Avatar billede ronniej Nybegynder
07. april 2009 - 10:20 #7
Det virker fint. så hvad kan vi konkludere ?
Avatar billede majbom Novice
07. april 2009 - 10:55 #8
vi kan konkludere at jeg huskede galt og at du skal stoppe strengen, når du skal kalde en variabel fra et array.

du kan læse mere om det her: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

ellers kan du gøre:

echo "<td width='300' bgcolor='$bgcolour'>{$row['product']}</td>";

som sagt er der mange muligheder :)
Avatar billede majbom Novice
07. april 2009 - 14:17 #9
tak for point, selvom stagedk dog burde have haft nogle af dem, han var jo ikke helt galt på den :)
Avatar billede ronniej Nybegynder
07. april 2009 - 14:22 #10
PIS det glemte jeg sgu.... nogen måde at reverse det så jeg kan give point til ham også ?
Avatar billede majbom Novice
07. april 2009 - 15:19 #11
nej, jeg laver lige et spørgsmål han kan svare i, så får han de 50 point, er det i orden?
Avatar billede ronniej Nybegynder
07. april 2009 - 15:25 #12
Ja helt sikkert...
Avatar billede majbom Novice
07. april 2009 - 15:37 #13
Avatar billede majbom Novice
18. maj 2009 - 14:16 #14
-> stagedk - se #13...
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