Avatar billede janorakel Nybegynder
21. september 2003 - 11:53 Der er 21 kommentarer og
2 løsninger

PHP - stort problem

Jeg har understående script, som tager alle forfattere fra databasen og grupperer og sorterer dem. Men da det er franske forfattere er der tit et < ' > i deres navn, hvilket er et "php-tegn". Dvs. når man klikker på et navn som indeholder < ' > kan scriptet ikke finde posten.

Det ser sådan ud:

<?php require("tjeklogin.php"); ?>
<html>
<head>
<title>Forfatter oversigt</title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
</head>
<body>
<div id="Layer1" style="position:absolute; left:646px; top:13px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:678px; top:12px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:618px; top:14px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<center>
<table>
<?php
echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
echo date("H:i:s");
echo "<tr><td><strong><em>Nom</em></strong></td><td><strong><em>Prènom</em></strong></td><td><strong><em>Le nombre total</em></strong></td></tr>";
echo "<tr><hr colspan=3><td>";

$db = mysql_connect("localhost", "XXX", "XXX") or die ("Desværre ingen forbindelse til databasen"); mysql_select_db("book", $db) or die ("Kunne ikke vælge databasetabel");

$q = mysql_query("SELECT forfatternavn_efternavn, forfatternavn_fornavn, COUNT(*) AS antal FROM second GROUP BY forfatternavn_efternavn, forfatternavn_fornavn ORDER BY forfatternavn_efternavn ASC");
while($row=mysql_fetch_array($q))
{
echo "<tr><td><a href='info.php?efternavn=" .$row[forfatternavn_efternavn]. "&&fornavn=".$row[forfatternavn_fornavn]. "'>" .$row[forfatternavn_efternavn]. "</a></td><td>" .$row[forfatternavn_fornavn]. "</td><td align='center'>" .$row[antal]. "</align></td></tr>";
}
?>
</table>
</center>
</body>
</html>
Avatar billede jolly_jay Nybegynder
21. september 2003 - 11:58 #1
Du kan bruge 'addslashes()' den til føjer "\" hvor der er brug for det, som ved dine '  den bruger du når du sætter noget ind i SQL

Når du så henter det fra sql igen bruger du så bare 'stripslashes()' som så fjerner dem igen.
Avatar billede htm Nybegynder
21. september 2003 - 11:59 #2
Inden du smider data i databasen skal de lige igennem en gang addslashes og når du så tager dem ud igen, skal du bruge stripslashes.

http://dk2.php.net/addslashes
http://dk.php.net/stripslashes
Avatar billede janorakel Nybegynder
21. september 2003 - 12:04 #3
øhm, jeg læser det lige igennem. Men hvor skal jeg smide det ind?
Avatar billede janorakel Nybegynder
21. september 2003 - 12:04 #4
Og hvordan?
Avatar billede jolly_jay Nybegynder
21. september 2003 - 12:07 #5
f.eks:
$forfatternavn_fornavn = stripslashes($row[forfatternavn_fornavn]);
$forfatternavn_efternavn = stripslashes($row[forfatternavn_fornavn]);

$forfatternavn_fornavn = addslashes($forfatternavn_fornavn);
$forfatternavn_efternavn = addslashes($forfatternavn_fornavn);
Avatar billede htm Nybegynder
21. september 2003 - 12:08 #6
PÅ denne side skal du bruge stripslashes når du echo'er det ud på skærmen.
eks:

while($row=mysql_fetch_array($q))
{
echo "<tr><td><a href='info.php?efternavn=" .stripslashes($row[forfatternavn_efternavn]). "&&fornavn=".stripslashes($row[forfatternavn_fornavn]). "'>" .stripslashes($row[forfatternavn_efternavn]). "</a></td><td>" .stripslashes($row[forfatternavn_fornavn]). "</td><td align='center'>" .stripslashes($row[antal]). "</align></td></tr>";
}

Men du skal bruge addslashes på samme måde på de data du smider ind i databasen. Og de data du har i databasen allerede skal du have sat en \ foran.
Avatar billede janorakel Nybegynder
21. september 2003 - 12:08 #7
Aha, det ser ud som noget jeg skal bruge. Men ligger de så i databasen med O/'reilly ?
Avatar billede jolly_jay Nybegynder
21. september 2003 - 12:09 #8
Ja, det gør de
Avatar billede nikolajdu Nybegynder
21. september 2003 - 12:10 #9
Nej da ;-)

O\'reilly :))
Avatar billede janorakel Nybegynder
21. september 2003 - 12:10 #10
lol, jeg har over 500 poster med det problem. Der røg den søndag.
Avatar billede janorakel Nybegynder
21. september 2003 - 12:11 #11
Jeg deler pointene mellem jer
Avatar billede jolly_jay Nybegynder
21. september 2003 - 12:12 #12
nikolajdu: næsten det samme :P
Avatar billede nikolajdu Nybegynder
21. september 2003 - 12:12 #13
janorakel - Du laver en side der henter alle poster ud.

Så bruger du addslashes inden du smider det ind igen i samme tabel. Er du bange for resultatet så smid det ind i en ny tabel.
Avatar billede nikolajdu Nybegynder
21. september 2003 - 12:13 #14
Det er meget hurtigere end at sidde møgsommeligt og opdatere én af gangen ;-)
Avatar billede janorakel Nybegynder
21. september 2003 - 12:16 #15
Ok, mange tak for hjælpen.
Kan I hjælpe med http://www.eksperten.dk/spm/403770 ?
Det er opret-post delen i databasen.
Avatar billede janorakel Nybegynder
22. september 2003 - 16:31 #16
.
Avatar billede janorakel Nybegynder
22. september 2003 - 16:39 #17
.
Avatar billede nikolajdu Nybegynder
22. september 2003 - 17:32 #18
ahvad?
Avatar billede janorakel Nybegynder
22. september 2003 - 20:03 #19
nikolajdu--> kan du hjælpe med http://www.eksperten.dk/spm/403770 ?
Avatar billede janorakel Nybegynder
22. september 2003 - 20:11 #20
.
Avatar billede janorakel Nybegynder
22. september 2003 - 20:11 #21
.
Avatar billede janorakel Nybegynder
22. september 2003 - 20:12 #22
.
Avatar billede nikolajdu Nybegynder
22. september 2003 - 20:34 #23
underligt - Hvis det er for at fange folks opmærksomhed - Så er det en mæreklig måde at gøre det på.
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