Avatar billede Morten Nybegynder
08. november 2003 - 11:42 Der er 47 kommentarer og
2 løsninger

Åbne ny side og sende værdier med

Hej

Lidt PHP hjælp til en newbiee:

Jeg har en side med 40-50 links - disse linker til nye sider (ens sider) med et billede. Da det kun er billedet og teksten som skifter kunne det være smart om jeg kunne sende navnet på billedet samt teksten til den nye side - så spare jeg i hvertfald en masse HTML filer - men hvordan gør jeg det med PHP

det må være i min <a href: > jeg skal have variablerne ind ?
Avatar billede riversen Nybegynder
08. november 2003 - 11:45 #1
fx
<a href="siden.php?stitilbillede=img/billede.jpg&tekst=hej med dig">link</a>
Avatar billede riversen Nybegynder
08. november 2003 - 11:45 #2
men det er måske smartere at lægge i en db
Avatar billede Morten Nybegynder
08. november 2003 - 11:51 #3
okay kan du vise et eksempel på db (har kigget meget på db men ikke rodet med det endnu)

så skulle jeg have en db med ID - Pic_Path - Pic_Text

og hvordan vil det så se ud...

ps - kan du ikke lige vise hvordan jeg indsætter værdien af variablerne på den nye side for overnævnte eksempel?
Avatar billede detox Nybegynder
08. november 2003 - 12:38 #4
I tilfældet med en database, kunne din tabel se sådan ud:

CREATE TABLE pics (
  id smallint(6) NOT NULL auto_increment,
  sti varchar(255) NOT NULL default '',
  tekst mediumtext NOT NULL,
  tid timestamp NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM
Avatar billede detox Nybegynder
08. november 2003 - 12:48 #5
Så kunne du lave dine links sådan:

$s = mysql_connect("localhost", "bruger", "pass")
      or die("Could not connect: " . mysql_error());
      $db = mysql_select_db('database')
      or die("Ingen database " . mysql_error());

$res = mysql_query("SELECT id, tekst FROM pics");
while ($row = mysql_fetch_assoc($res)) {
    echo "<a href='vis.php?id=".$row['id']."'>".$row['tekst']."</a><br />";
}
Avatar billede detox Nybegynder
08. november 2003 - 12:59 #6
Siden der viser billede og tekst, kan laves i den her stil:

$s = mysql_connect("localhost", "bruger", "pass")
      or die("Could not connect: " . mysql_error());
      $db = mysql_select_db('database')
      or die("Ingen database " . mysql_error());

$res = mysql_query("SELECT id, tekst FROM pics");
while ($row = mysql_fetch_assoc($res)) {
    echo "<a href='vis.php?id=".$row['id']."'>".$row['tekst']."</a><br />";
}
Avatar billede detox Nybegynder
08. november 2003 - 13:01 #7
Undskyld en smutter, sådan skulle det være:

if (isset($_GET['id'])) {
$s = mysql_connect("localhost", "bruger", "pass")
      or die("Could not connect: " . mysql_error());
      $db = mysql_select_db('database')
      or die("Ingen database " . mysql_error());

    $res = mysql_query("SELECT sti, tekst FROM pics WHERE id=".$_GET['id']);
    $row = mysql_fetch_assoc($res);
    echo "<img src='".$row['sti']."' /><br />".$row['tekst']."<br />";
} else {
    echo "Intet id!";
}
Avatar billede Morten Nybegynder
08. november 2003 - 14:34 #8
>>Detox

Det ser spændende ud - det vil jeg kigge på

Kunne du være rar og kort forklare hvad de enkelte linier gør - det mest kan jeg gennemskue... men.. mere så jeg ved hvad det er jeg lave ;O)
Avatar billede detox Nybegynder
08. november 2003 - 14:38 #9
Jo, da.
Denne query skal blot kopieres til phpMyAdmin's SQL vindue. Så får du oprettet tabellen:

CREATE TABLE pics (
  id smallint(6) NOT NULL auto_increment,
  sti varchar(255) NOT NULL default '',
  tekst mediumtext NOT NULL,
  tid timestamp NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM
Avatar billede detox Nybegynder
08. november 2003 - 14:41 #10
Denne stump opretter forbindelse til din database. Den kan du med fordel ligge i sin egen fil (fx: 'db.php'), som du så kan include(), der hvor du har brug for den:

$s = mysql_connect("localhost", "bruger", "pass")// dit brugernavn og password
      or die("Could not connect: " . mysql_error());
      $db = mysql_select_db('database')// din databases navn
      or die("Ingen database " . mysql_error());
Avatar billede detox Nybegynder
08. november 2003 - 14:47 #11
Den næste stump henter id og tekst fra din tabel og udskriver link's på siden. Nu ved jeg ikke hvor lang din tekst er, men du kunne vælge at lave et felt med navn osse. Og så bruge det istedet for tekst her:

require 'db.php';// forbindelse til databasen
$res = mysql_query("SELECT id, tekst FROM pics");// henter alle id's og tekst
while ($row = mysql_fetch_assoc($res)) {//fetcher de enkelte rækker fra din resultressource
    echo "<a href='vis.php?id=".$row['id']."'>".$row['tekst']."</a><br />";// skriver link's
}
Avatar billede detox Nybegynder
08. november 2003 - 14:52 #12
Den sidste del ('vis.php') viser et billede med tilhørende tekst udfra det valgte id:

if (isset($_GET['id'])) {// tjekker om id er sat i adresselinien
  require 'db.php';// forbindelse til databasen

    $res = mysql_query("SELECT sti, tekst FROM pics WHERE id=".$_GET['id']);
    //henter data fra rækken med det aktuelle id
    $row = mysql_fetch_assoc($res);// fetcher de enkelte data fra $res
    echo "<img src='".$row['sti']."' /><br />".$row['tekst']."<br />";
    // viser billede med tekst under
} else {
    echo "Intet id!";// vises hvis siden bliver kaldt uden id
}
Avatar billede Morten Nybegynder
08. november 2003 - 21:31 #13
Er det her rigtig når jeg skal kalde databasen (altså kaldet til funktionene)??:
Funktionen:
<?php
Function con_pic()
                                {
                                    $s = mysql_connect("localhost", "bruger", "pass")// dit brugernavn og password
                                          or die("Could not connect: " . mysql_error());
                                          $db = mysql_select_db('database')// din databases navn
                                          or die("Ingen database " . mysql_error());
                                }
?>

KALDET FRA FILEN:
<?php
include($_SERVER["DOCUMENT_ROOT"] . "/function/funcPic.php");

con_pic()
?>
Avatar billede Morten Nybegynder
08. november 2003 - 21:33 #14
eller skal jeg bare include og så fjerne Function con_pic() fra funktionen??
Avatar billede detox Nybegynder
08. november 2003 - 21:34 #15
Bare include og glem funktionen.
Avatar billede Morten Nybegynder
08. november 2003 - 21:37 #16
Åhh ja og så en lille ting mere - jeg skal ikke hente links fra databasen - dem laver jeg selv - prøver lige om jeg selv kan finde ud af det da det inkluderer et java script:
<a href="/Dan_version/Chico/chico2.php" onclick="NewWindow(this.href,'Chico2','450','450','no','center');return false" onfocus="this.blur()">

kan du omskrive ovenstående så det samtidigt med at det åbner et pop-up vindue også indsætter tekst og billede via sti fra Database...?

Hæver lige points for denne opgave og så skal du huske et svar!!!!
Avatar billede detox Nybegynder
08. november 2003 - 22:24 #17
Hmmm, Javascript er ikke min stærke side, men link's kan laves i den her stil:

require 'db.php';
$res = mysql_query("SELECT id, tekst FROM pics");
while ($row = mysql_fetch_assoc($res)) {
    echo "<a href='vis.php?id=".$row['id']."'onClick=\"window.open(this.href,'nytVindue','width=450,height=450'); return false;\">".$row['tekst']."</a><br />";
}

Koden til at vise billede og tekst skal så ligge i 'vis.php' (eller hvad du vælger at kalde den).
Avatar billede detox Nybegynder
08. november 2003 - 22:27 #18
Nu siger du at du ikke vil hente links fra databasen. Så er hele fidusen sådan set røget i vasken, da det jo ikke skal være direkte link. Det er jo blot link til en anden side, der så skal vise de forskellige billeder, med id i adresselinien.
Avatar billede Morten Nybegynder
08. november 2003 - 22:33 #19
I ovenstående - så udskifter jeg .$row['id'] med den id jeg vil hente eller??

f.eks.
          ....vis.php?id="01"......
eller??
Avatar billede detox Nybegynder
08. november 2003 - 22:37 #20
Ja, eller rettere: ....vis.php?id=1...... uden " " og ikke med foranstillet 0.
Avatar billede Morten Nybegynder
08. november 2003 - 22:37 #21
Nej - for fidusen er at jeg ikke skal have 300 Vis.html sider - en for hvert billede men i stedet via linket kan bruge samme Vis.php side og så bare skifte billede og tekst....

Det er en stamtavle for hunde så det er ikke bare link "klasket" på en side men nydeligt sat op i en tabel - så jeg kan ikke lige se hvordan jeg skulle få det indsat med while løkke....?
Avatar billede Morten Nybegynder
08. november 2003 - 22:38 #22
Behøver jeg egentlig disse:

$res = mysql_query("SELECT id, tekst FROM pics");
while ($row = mysql_fetch_assoc($res)) {

kan jeg ikke nøjes med:
$res = mysql_query("SELECT id, tekst FROM pics");
while ($row = mysql_fetch_assoc($res)) {
    echo "<a href='vis.php?id=1'onClick=\"window.open(this.href,'nytVindue','width=450,height=450'); return false;\">link</a><br />";

.... undskyld hvis jeg er lidt dum!!!
Avatar billede detox Nybegynder
08. november 2003 - 22:39 #23
Ok, ja. Så er det jo stadig en stor lettelse ;o)

fx:

echo "<a href='vis.php?id=1'onClick=\"window.open(this.href,'nytVindue','width=450,height=450'); return false;\">".$row['tekst']."</a><br />";
Avatar billede Morten Nybegynder
08. november 2003 - 22:41 #24
Nå jeg vil lige teste - kan du ikke smide et svar - du har sq fortjent pointsne !!! :O)
Avatar billede detox Nybegynder
08. november 2003 - 22:42 #25
Jo, du kan nøjes med:

echo "<a href='vis.php?id=1' onClick=\"window.open(this.href,'nytVindue','width=450,height=450'); return false;\">".$row['tekst']."</a><br />";

Eller hvis du går ud af php:

<a href='vis.php?id=1'onClick="window.open(this.href,'nytVindue','width=450,height=450'); return false;">tekst</a><br />
Avatar billede detox Nybegynder
08. november 2003 - 22:43 #26
Jo, men spørg, hvis det driller.
Avatar billede Morten Nybegynder
08. november 2003 - 22:53 #27
Når man har oprettet sin database i MySql på Serveren - virker det så ikke bare??? man skal vel ikke udgive - hmmmm.. det er vel måske noget med min connection?
Avatar billede detox Nybegynder
08. november 2003 - 22:55 #28
Jo, det skulle gerne fungere umiddelbart, hvis du bruger korrekt brugernavn og password.
Avatar billede Morten Nybegynder
08. november 2003 - 22:57 #29
sætter man det pr. database eller er det, det samme som man logger ind med?
Avatar billede detox Nybegynder
08. november 2003 - 22:59 #30
Det er det samme du logger ind med.
Avatar billede Morten Nybegynder
08. november 2003 - 22:59 #31
Ingen database Access denied for user: ******@****** to database 'pics'

Hvad er det???
Avatar billede Morten Nybegynder
08. november 2003 - 23:01 #32
altså der står jo mit brugernavn og en ip adresse ved *** ville bare ikke lige poste her...
Avatar billede detox Nybegynder
08. november 2003 - 23:02 #33
Har du en database kaldet 'pics'? Hvis 'pics' er din tabel hedder din database sikkert noget andet.
Avatar billede Morten Nybegynder
08. november 2003 - 23:03 #34
hmmmmmmmm........ for h... da det er da klart at det er tabellen - hvor dum........ nå så prøver jeg lige at finde ud af hvad DB'en hedder hmmm..

Jeg lære det nok en dag hahahahahahah
Avatar billede Morten Nybegynder
08. november 2003 - 23:05 #35
YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEES hvor er det blæret...!!!! altså hvis jeg kan få stien til billedet til at virke hahahahhahahah

tusind tusind tusind tak for hjælpen...
Avatar billede detox Nybegynder
08. november 2003 - 23:06 #36
Held og Lykke!
Avatar billede Morten Nybegynder
08. november 2003 - 23:07 #37
siden kan iøvrigt ses på www.abs.ms-edb.dk

"Vores" job ses under test..
Avatar billede Morten Nybegynder
08. november 2003 - 23:14 #38
et lille tillægs spørgsmål:

    <a href=<? 'vis.php?id=1' ?> onclick
eller
    <a href=<?PHP 'vis.php?id=1' ?> onclick
Avatar billede detox Nybegynder
08. november 2003 - 23:16 #39
Jeg vil mene:
<a href='vis.php?id=1' onclick...
og i php:
echo "<a href='vis.php?id=1' onclick...";
Avatar billede Morten Nybegynder
08. november 2003 - 23:19 #40
tak.. hhaahah - det skal SELVFØLELIG ikke skrives som php - for så er det jo fortolket inden klikket hmmmmmmmm....... måske lidt mere kaffe og en masse smøger ville hjælpe hahahah
Avatar billede detox Nybegynder
08. november 2003 - 23:19 #41
Men du vil formentlig ikke behøve at bruge php, for så vidt du vil lave linkene manuelt. Så kan du nøjes med php i 'vis.php'.
Avatar billede detox Nybegynder
08. november 2003 - 23:19 #42
Netop!
Avatar billede Morten Nybegynder
08. november 2003 - 23:31 #43
øhh er du stadig?

Hvis jeg nu ønskede at Id'en skulle være både bogstaver og tal i tabellen - behøver jeg så kun at ændre typen i databasen eller har det betydning for koden vi har konstrueret (det lyder meget godt med VI - der burde stå som DU hahahahha)
Avatar billede detox Nybegynder
08. november 2003 - 23:35 #44
Nej, tabellen som 'vi' har lavet har jo autonummereret id, så det kan ikke ændres. Men der er ikke noget i vejen for at tilføje et felt (fx typen VARCHAR) og så bruge det istedet.
Avatar billede Morten Nybegynder
08. november 2003 - 23:38 #45
okay
Avatar billede detox Nybegynder
08. november 2003 - 23:51 #46
Men jeg vil anbefale at bruge id hvis du kan, for så undgår du dubletter. Alternativt kan du lave det nye felt unikt, det vil jo være temmelig uheldigt med to ens ;)
Avatar billede Morten Nybegynder
09. november 2003 - 00:46 #47
Og hvis du er der og har tid...:

Når jeg viser teksten fra databasen:

echo "<img src='".$row['sti']."' /><br />".$row['tekst']."<br />";

Hvor indsætter jeg nl2br - så'n at jeg får linieskift fra Databasen ud???
Avatar billede detox Nybegynder
09. november 2003 - 00:54 #48
echo "<img src='".$row['sti']."' /><br />".nl2br($row['tekst'])."<br />";
Avatar billede Morten Nybegynder
09. november 2003 - 01:02 #49
tak
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