Gå til innhold

Hente frem tekst fra et php-dokument


Anbefalte innlegg

Videoannonse
Annonse

Lagre datoene og navnene i en database.

Så, hvis du vil gjøre det vanskelig, lager du en funksjon i en egen PHP-fil som du inkluderer der du vil ha datoene. Og så skriver du

bursdag('Janne');

feks

 

Eller du bare kan ha hele koden der du vil vise datoene, hvis du heller har lyst til det.

 

 

Eller du kan bruke en tekstfil.

 

Hvis du velger, så skal jeg lage funksjonen

:)

Lenke til kommentar

Er ikke helt sikker på hvordan jeg skal gjøre det her. Er bare sikker på hvordan jeg vil ha det. På siden blir det da noe som dette:

 

Neste fem bursdager:

25.4.07 Janne

1.5.07 Tobias

 

Og så videre. Så etter 25.4.07 kommer Tobias' bursdag øverst. Og Jannes forsvinner. Dessuten hadde det vært fint at den 25.4.07 for eksempel, så hadde det stått "Gratulerer med dagen, Janne!"

 

Er dette mulig?

Lenke til kommentar

Yes. Holder på å kode nå.

Redigerer denne posten når jeg er ferdig.

 

<?php
// DATABASE
//____________________________________________________________________________________________

$server   = 'localhost';  // MySQL hostname
$username = 'test';  	// MySQL username
$password = 'test';  	// MySQL password
$dbname   = 'test';  	// MySQL db name


$db = mysql_connect("$server", "$username", "$password") or die(mysql_error());
      mysql_select_db($dbname) or die(mysql_error());

?>
<?php
$dato_i_dag = date("Y-m-d");
$q = mysql_query("SELECT navn, dato, day(dato) AS dag, month(dato) AS maned FROM bursdager WHERE dato>='$dato_i_dag' ORDER BY dato ASC LIMIT 5");

while($r=mysql_fetch_assoc($q)) {

if($dato_i_dag==$r['dato']) {
echo 'Gratulerer med dagen, '.$r['navn']."!<br />\n";
}

else {
echo $r['navn'].' ('.$dag.'.'$r['maned'].")<br />\n";
}
}
?>

Fikset litt på den nå.. tror den skal virke.

Endret av Ståle
Lenke til kommentar

Her er en simpel PHP generet kalender jeg laget nå nettop. Den kan styles masse med CSS.

 

 

<?php
// DATABASE
// ____________________________________________________________________________________________

$server   = 'localhost';  // MySQL hostname
$username = 'test';   // MySQL username
$password = 'test';   // MySQL password
$dbname   = 'test';   // MySQL db name


$db = mysql_connect("$server", "$username", "$password") or die(mysql_error());
     mysql_select_db($dbname) or die(mysql_error());

?>
<table id="kalender">
<?php
echo '<h2>'.date("F").'</h2>';


$dato = date("d");
$maned = date("m").'.';
$bursdager = array();

$r = mysql_fetch_assoc(mysql_query("SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'"));

print_r($r);
echo substr($r['dato'], 3, 4);

$dager = 0;
$i = 1;
while($i <= date("t")) {
echo "<tr>\n";

while($dager < 7) {
echo "\t<td>";
if ($i<=date("t")) {
echo $i;
if ($i == substr($r['dato'], 3, 4)) echo '<br />'. $r['navn'];
}
echo "</td>\n";
$dager++;
$i++;
}
echo "</tr>\n";
$dager = 0;
}


?>
</table>

 

Endret av Ståle
Lenke til kommentar

her ligger grunnen til at du får bare en rad.

 

$r = mysql_fetch_assoc(mysql_query("SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'"));

 

du bør heller legge resultatet av mysql_query(..) til en variabel (inneholder alle radene) og loope med mysql_fetch_assoc(..) (henter kun en rad om gangen) for hver rad.

 

edit:

 

$query = "SELECT navn, dato FROM bursdager WHERE dato LIKE '$maned%'";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
 kode som gjøres for hver rad $row['kolonne']
}

Endret av grimjoey
Lenke til kommentar
Gjest Slettet+142

vel.. jeg har modifisert litt jeg. kanskje dette virker?

 

<?php
// DATABASE
// __________________________________________________________________________________________
__

$server   = 'localhost';  // MySQL hostname
$username = 'test';   // MySQL username
$password = 'test';   // MySQL password
$dbname   = 'test';   // MySQL db name


$db = mysql_connect("$server", "$username", "$password") or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());

?>
<table id="kalender">
<?php
echo '<h2>'.date("F").'</h2>';


$dato = date("d");
$maned = date("m").'.';
$bursdager = array();

$q = mysql_query("SELECT navn, day(dato) AS dag FROM bursdager WHERE month(dato)=month(now())");
while($r = mysql_fetch_assoc($q)){
$bursdager[ 0 + $r["dag"] ][] = $r["navn"];
}

$dager = 0;
$i = 1;
while($i <= date("t")) {
echo "<tr>\n";

while($dager < 7) {
 echo "\t<td>";
 if ($i<=date("t")) {
 	echo '<b>'.$i.'</b>';
 	if(is_array($bursdager[$i])){
   foreach($bursdager[$i] as $navn){
   	echo '<br />'. $navn;
   }
 	}
 }
 echo "</td>\n";
 $dager++;
 $i++;
}
echo "</tr>\n";
$dager = 0;
}


?>
</table>

Endret av Slettet+142
Lenke til kommentar

Yey. da virker kalenderen :D

 

Her har du hva du må importere i Phpmyadmin.

 

 

-- Table structure for table `bursdager`
-- 

CREATE TABLE `bursdager` (
 `navn` varchar(20) collate latin1_general_ci NOT NULL,
 `dato` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

-- 
-- Dumping data for table `bursdager`
-- 

INSERT INTO `bursdager` VALUES ('Ståle', '1989-12-12');

 

 

og her er hvordan .css filen kan se ut

 

table#kalender td {
width: 60px;
height: 60px;

border: 1px #000 solid;
vertical-align: top;
}

 

Lenke til kommentar
Jeg skal lage noe som en bursdagskalender. Jeg skal ha en oversikt over fem neste bursdager på forsiden av hjemmesiden min. Så skal disse datoene og navnene bli hentet frem av et annet dokument. Hvordan kan jeg kode dette?

8380922[/snapback]

 

du trenger ikke bruke database som alle svarene hittil sier.

 

kalender.csv(comma separated values):

"Bjørn","120379"
"Harald","070184"
"Hanne","270591"
"Kåre","080981"
"Ståle","121289"

kalender.php:

<html>
<body>
<?php

if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv');

while($csvarray = fgetcsv($kalenderfil))
{
 $kalender[$csvarray[0]] = $csvarray[1];
 $sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2);
}

asort($sortering);
$dagsdato = date('md');

echo('<table id=\'kalender\'>');

$i = 0;
foreach($sortering as $navn => $dato)
{
 echo $i;
 if ($dato >= $dagsdato)
 {
   echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>');
   if ($dato == $dagsdato) echo('Gratulerer med dagen!');
   echo('</tr>');
   $i += 1;
 }
 if ($i == 5) break;
}

echo('</table>');
?>
</body>
</html>

Lenke til kommentar
Gjest Slettet+142
du trenger ikke bruke database som alle svarene hittil sier.

8383341[/snapback]

sant det ja, men med database er det jo om ikke enklere, men iallefall mer oversiktlig. Samtidig som med database er de forskjellige mulighetene gjort mye enklere ;)

Lenke til kommentar

I første posten spesifiserer Mathias89 at han ønsker å hente data fra et annet dokument. Jeg ville bare gi et svar som tok hensyn til hele spørsmålet.

 

Det er ikke sikkert Mathias89 har tilgang til en mysql server eller kanskje han har andre grunner til å velge å bruke fil.

 

Database er mer å sette seg inn i. Og til en slik liten sak er det ikke mye å tjene på oversikt, databehandling og plassbesparing.

 

Men til et større projekt er selvfølgelig database mye enklere å forholde seg til og gir bedre ytelse.

Endret av grimjoey
Lenke til kommentar
Gjest Slettet+142

jeje.. I surrender :sleep:

men anyway. jeg har oppdaget en liten feil i koden til meg og Ståle. Vår kode skriver ut alle bursdagene for hele måneden, ikke de 5 neste dagene =/

 

hvis Mathias89 har tilgang til database og syntes at det er viktig med at bare de 5 neste dagene skrives ut, kan jeg/Ståle sikkert fikse dette :)

Men lengter etter tilbakemelding ifra Mathias89 her... :hrm:

Lenke til kommentar

koden jeg la frem skriver ut en tabell ut i fra informasjonen i kalender.csv

 

de 5 neste bursdagene skrives og dersom en dato matcher dagens dato skrives gratulerer med dagen i tillegg

 

cut'n'paste fra <?php til ?> til der du vil ha tabellen på siden din.

 

tenkte å lage med databasestøtte... (har ikke testet med database):

<html>
<body>
<?php

$bruk_database = null;         #sett denne til en 'verdi' for å bruke database.
$dbhost = 'localhost';         #ipadresse eller hostname til database
$dbuser = 'brukernavn';        #brukernavn for database
$dbpass = 'passord';           #passord for database (bør legges i og importeres fra en annen fil som ikke er visbar av webserver)
$databasenavn = 'mydb';        #navn på database
$tabellnavn = 'kalender';      #navn på tabell
$tabelldef = '(id INT(3) NOT NULL PRIMARY KEY auto_increment, navn VARCHAR(50), bursdag DATE)';  #tabell definisjon

if($bruk_database)
{
 if(!$link = mysql_connect($dbhost,$dbuser,$dbpass)) die(mysql_error());                 #koble til database
 if(!mysql_select_db($databasenavn))                                                     #velg database om den eksisterer
 {
   if(!mysql_query('CREATE DATABASE '.$databasenavn.';')) die(mysql_error());            #lag database om den ikke eksisterte
   if(!mysql_select_db($database_navn)) die(mysql_error());                              #velg nylaget database
 }
 if(!$resultat = mysql_query('SELECT navn,bursdag FROM '.$tabellnavn.';'))                          #hent data fra tabell om tabell eksisterer
 {
   if(!mysql_query('CREATE TABLE '.$tabellnavn.' '.$tabelldef.;')) die(mysql_error());   #lag tabell om den ikke eksisterte
   if(!mysql_query('SELECT navn,bursdag FROM '.$tabellnavn.';')) die(mysql_error());                #hent data fra nylaget tabell (ingen data men bekrefter at tabell finnes)
 } else {
   while($kalender = $mysql_fetch_assoc($result))
   {
     $kalender['bursdag'] = substr($kalender['bursdag'],8,2).$substr($kalender['bursdag'],5,2).$substr($kalender['bursdag'],2,2);
     $sortering[$kalender['navn']] = $substr($kalender['bursdag'],5,2).substr($kalender['bursdag'],8,2);
   }
 }

} else {
 if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv');
 while($cvsarray = fgetcsv($kalenderfil))
 {
   $kalender[$csvarray[0]] = $csvarray[1];
   $sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2);
 }
}

asort($sortering);

$dagsdato = date('md');

echo('<table id=\'kalender\'>');

$i = 0;
foreach($sortering as $navn => $dato)
{
 echo $i;
 if ($dato >= $dagsdato)
 {
   echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>');
   if ($dato == $dagsdato) echo('Gratulerer med dagen!');
   echo('</tr>');
   $i += 1;
 }
 if ($i == 5) break;
}

echo('</table>');
?>
</body>
</html>

Endret av grimjoey
Lenke til kommentar

Går det ann at dette ikke forekommer:

 

Bursdager

01234

Per 2904

Åge 0806

Kåre 0809

Stig 2210

Ståle 1212

 

Kildekode:

 

<table id='kalender'>0<tr><td>Per<td>2904<td></tr>1<tr><td>Åge<td>0806<td></tr>2<tr><td>Kåre<td>0809<td></tr>3<tr><td>Stig<td>2210<td></tr>4<tr><td>Ståle<td>1212<td></tr></table>
Endret av Mathias89
Lenke til kommentar

<html>
<body>
<?php

if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv');

while($csvarray = fgetcsv($kalenderfil))
{
$kalender[$csvarray[0]] = $csvarray[1];
$sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2);
}

asort($sortering);
$dagsdato = date('md');

echo('<table id=\'kalender\'>');

$i = 0;
foreach($sortering as $navn => $dato)
{
if ($dato >= $dagsdato)
{
  echo('<tr><td>'.$navn.'<td>'.$kalender[$navn].'<td>');
  if ($dato == $dagsdato) echo('Gratulerer med dagen!');
  echo('</tr>');
  $i += 1;
}
if ($i == 5) break;
}

echo('</table>');
?>
</body>
</html>

 

bare fjernet echo $i; etter foreach..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...