Avatar billede techboy992 Praktikant
05. oktober 2012 - 23:59 Der er 6 kommentarer og
1 løsning

Hvordan Kan jeg lave et link fra en mysql database

Det jeg gerne vil have det til at goere er at:
Lave et link fra tre felter
Mine felter i databasen er:
link, name, active

Mit script til nu er:
<?php
$con = mysql_connect("host","database","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$row = mysql_fetch_assoc($result);
echo '<a href="'.$row["link"].'">'.$row["name"].'</a>';
?>

Men giver fejl:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a3485397/public_html/topsites/view.php on line 7


Det jeg gerne vil have det til er at vise en raekke links til topsites.

Men skal kun vise links hvis active er = YES
som standart i min form til at adde active er sat til NO
Avatar billede erikjacobsen Ekspert
06. oktober 2012 - 00:16 #1
Ser ud som om du mangler SQL-sætningen
Avatar billede techboy992 Praktikant
06. oktober 2012 - 00:58 #2
Jeg fik til at virke med foelgende:
$con = mysql_connect("host","database","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM table");

while($row = mysql_fetch_array($result))
  {
echo '| <a href="'.$row["link"].'">'.$row["name"].'</a> |';
  }

mysql_close($con);
?>

Mit eneste problem nu er at faa det til kun at vise aktive link fra feltet active

Jeg har proevet foelgende:
mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM Topsites WHERE active = YES");

while($row = mysql_fetch_array($result))
  {
echo '| <a href="'.$row["link"].'">'.$row["name"].'</a> |';
  }

mysql_close($con);
?>

Men siger unespectet t_strin on line 9
Avatar billede olebole Juniormester
06. oktober 2012 - 01:47 #3
<ole>

Du mangler apostroffer omkring YES i SQL'en. Det er en strengværdi og skal derfor escapes.

Det lader til, at du lige har taget fat på MySQL. I så fald giver det ikke mening at rode med det gamle MySQL-API. Det er forældet og afløst af MySQLI.

Du kan prøve at kikke på denne guide om prepared statements under MySQLI

/mvh
</bole>
Avatar billede techboy992 Praktikant
06. oktober 2012 - 05:47 #4
Ja det er faktisk mit foerste script i det hele taget i PHP og Mysql.

Jeg fandt ud af det selv efter 4 timers search i google og nu virker det fint, men fordi du var her foer mig saa skal du alligevel have dine point.

Kan du sende et indlaeg saa du kan faa dem
Avatar billede techboy992 Praktikant
06. oktober 2012 - 05:54 #5
Det faerdig script:
form.html:
<html>
<body>

<form action="insert.php" method="post">
Link:        <input type="text" name="link" /><br>
Website name: <input type="text" name="name" /><br>
Secret:      <input type="password" name="active" /><br>
<input type="submit" value="Post"/>
</form>

</body>
</html>

insert.php:
<?php
$con = mysql_connect("host","Database","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("database", $con);

$sql="INSERT INTO Topsites (link, name, active)
VALUES
('$_POST[link]','$_POST[name]','$_POST[active]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

view.php:
<?php
$con = mysql_connect("host","database","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM Topsites where active='1011'");

while($row = mysql_fetch_array($result))
  {
echo '| <a href="'.$row["link"].'" target="_blank">'.$row["name"].'</a> |';
  }

mysql_close($con);
?>
Avatar billede olebole Juniormester
06. oktober 2012 - 13:26 #6
Ellers tak, jeg samler ikke point. Du accepterer bare dit eget svar, så tråden lukkes (Erik samler heller ikke)  =)

Fedt, du fik det til at virke, men jeg synes stadig, du bør kikke på den guide, jeg linkede til. Den kode, du har nu, står faktisk pivåben for SQL-injections, som er angreb, hvor brugeren skriver noget skadeligt i et formfelt. Det gør, at angriberen kan få vist indholdet af hele eller dele af din database - og/eller ændre/slette den. I dag bruges det gamle API - som er det, du i øjeblikket bruger - ikke til 'nybygninger'.
Avatar billede techboy992 Praktikant
06. oktober 2012 - 21:06 #7
Jeg vil kigge guiden til naeste script :)
Vil helst ikke rode med det nu hvor det virker :)

Men tusinde tak for din hjaelp.
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