Avatar billede mltrfan Nybegynder
19. marts 2007 - 08:40 Der er 28 kommentarer og
1 løsning

Nyheds start dato

Hej eksperter
jeg har en nyheds side hvor man ang giver start og slut dato til en sql database.
Mit problem er og få den til og starte med og vise den fra "startdatoen" lige nu virker slutdatoen ved at den skriver "ingen nyheder" når nyheden er for gammel. Hvordan for jeg den til og starte fra den dato man sætter ind i databasen.
min kode ser sådan her ud.
Hilsen mltrfan

<?
include("db.inc.php");

$idag = mktime(0,0,0, date('n'), date('j'), date('Y'));
$udlob= mysql_query("SELECT * FROM nyhed");

while ($dato=mysql_fetch_array($udlob)) {

$arr = explode('/', $dato['datoslut']);
$d = $arr[0];
$m = $arr[1];
$y = $arr[2];
$datoslut = mktime(0,0,0,$m,$d,$y);


if ($idag < $datoslut) {
    echo $dato[datostart]."&nbsp;&nbsp;&nbsp;";
    echo $dato[overskrift]."&nbsp;&nbsp;&nbsp;";
    echo $dato[tekst]; 
} else {
    echo "Ingen Nyheder";
}
 
}
?>
Avatar billede showsource Seniormester
19. marts 2007 - 09:16 #1
Du bruger et date felt i din tabel, både for start og slut.

SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE()
Avatar billede mltrfan Nybegynder
19. marts 2007 - 09:36 #2
Okay det  prøver jeg.

Nu har jeg godt nok lavet lidt om i koden så der er en

$id=$_GET["id"]; og

$udlob= mysql_query("SELECT * FROM nyhed WHERE sideid=$id");

Og når jeg laver $udlob om til

$udlob= mysql_query("SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE()id=$id");

melder den en fejl som denne her.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Avatar billede dkfire Nybegynder
19. marts 2007 - 11:16 #3
Du har en fejl i din sidste sql:
$udlob= mysql_query("SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE()");
Avatar billede mltrfan Nybegynder
19. marts 2007 - 11:19 #4
men jeg ville gerne kunne sortere med id=$id også
Avatar billede dkfire Nybegynder
19. marts 2007 - 16:09 #5
Nååå, så skal det bare være:
$udlob= mysql_query("SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE() and id='$id'");
Avatar billede dkfire Nybegynder
19. marts 2007 - 16:11 #6
Og så vil jer egentlig lige råde dig til, sålænge du tester at skrive det sådan her:
$udlob= mysql_query("SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE() and id='$id'") or die(mysql_error());
Avatar billede mltrfan Nybegynder
19. marts 2007 - 16:24 #7
okay det prøver jeg og se om jeg kan få til og virke
Avatar billede mltrfan Nybegynder
20. marts 2007 - 08:23 #8
Når det virker ikke den melder ikke fejl. Den udskriver ikke nyheden selvom der er en nyhed i databasen som ikke er udløbet.
Avatar billede dkfire Nybegynder
20. marts 2007 - 12:57 #9
Sikker på at der er et felt som hedder id i din tabel ??
Og at du giver det rigtige id i din url ??
Avatar billede dkfire Nybegynder
20. marts 2007 - 13:00 #10
Giver denne sql noget ud ??
SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE()
Avatar billede mltrfan Nybegynder
20. marts 2007 - 13:06 #11
ja den giver en nyhed. men hvis man så ændre start datoen i databasen udskriver den nyheden stadig.
Avatar billede mltrfan Nybegynder
20. marts 2007 - 13:09 #12
hov fejl fra mig den udskriver kun det den skal nu skal det bare være efter id
Avatar billede mltrfan Nybegynder
20. marts 2007 - 13:15 #13
Nu virker id men det virker kun hvis nyheden  nyheden har samme start og slutdato
Avatar billede dkfire Nybegynder
20. marts 2007 - 16:48 #14
Jeg er ikke med
Avatar billede mltrfan Nybegynder
20. marts 2007 - 17:53 #15
den viser kun nyheden hvis f.eks. startdatoen er den 2007-03-20 og slutdatoen er den 2007-03-20. Altså den samme. det er jo menningen at det skal være forskellige datoer.
Avatar billede dkfire Nybegynder
20. marts 2007 - 23:27 #16
Kan du give nogle eksempler på hvad din tabel kan indeholde.
Altså hvad kan være start og slut dato. Det er bare så jeg kan sætte mig lidt bedre ind i det.
Avatar billede mltrfan Nybegynder
21. marts 2007 - 07:43 #17
startdato kan være: 2007-03-21

slutdato kan være: 2007-03-23

overskrift kan være: Nyhed over alle nyheder

tekst kan være: Den totale nyhed

Men hvis dette står i min database viser den intet pga. start og slut dato ikke er ens. Men når jeg angiver de samme datoer så virker det underligt nok
Avatar billede showsource Seniormester
21. marts 2007 - 07:59 #18
$id hvad var det for noget???

Hvis du gerne vil hente nyheder indenfor en start og slutdato, og samtidig bruge en var, $id, som "ref", skal der være flere $id'er med samme værdi, for at nyheder som indeholder dato - start og slut vil blive vist

$sql = "SELECT * FROM nyhed WHERE start >= CURDATE() AND slut <= CURDATE() AND id = ". intval($id);
$news = mysql_query($sql) or die (mysql_error());

Her er $id et heltal, ( intval() )
Avatar billede mltrfan Nybegynder
21. marts 2007 - 08:16 #19
jeg kan ikke få noget af det til og virke jeg opgiver
Avatar billede mltrfan Nybegynder
21. marts 2007 - 08:16 #20
men tak for jeres hjælp
Avatar billede showsource Seniormester
21. marts 2007 - 08:36 #21
Hvad ???
DU må sgutte gi' op!
Avatar billede mltrfan Nybegynder
21. marts 2007 - 08:43 #22
jeg kan ikke få det til og virke og når den ikke viser nogle nyheder skriver den ikke en gang "Ingen nyheder" som den gjore da oprettede dette spg
Avatar billede dkfire Nybegynder
21. marts 2007 - 11:26 #23
Kom med noget mere kode, så kan det være vi kan få det til at virke.
showsource-> jeg tror du i din sql skal bytte om på >= og <=. Ligenu er slutdato større en startdato, og det du leder efter er startdato som er større end slut.

Men mltrfan-> kom med din kode som den ser ud nu, så hjælper vi.
Avatar billede mltrfan Nybegynder
21. marts 2007 - 11:36 #24
Dette er min kode som den ser ud nu

<?
include("db.inc.php");
if(isset($_GET["id"])){
  $id = $_GET["id"];
}
?><table border="0"  cellpadding="0" cellspacing="0" >
   
    <tr>
        <td  valign="top"  bgcolor="#002afc" >
<br><br>

<p class="indryk">   
<?
$idag = mktime(0,0,0, date('n'), date('j'), date('Y'));


$sql = "SELECT * FROM nyhed WHERE start <= CURDATE() AND slut >= CURDATE() AND id = ". intval($id);
$news = mysql_query($sql) or die (mysql_error());

while ($dato=mysql_fetch_array($udlob)) {

$arr = explode('/', $dato['datoslut']);
$d = $arr[0];
$m = $arr[1];
$y = $arr[2];
$datoslut = mktime(0,0,0,$m,$d,$y);

if ($idag < $datoslut) {

    ?>
<table border="0">
<tr>
<?
echo "Nyheder";
echo "<td valign=\"top\">";
    echo $dato[datostart]."&nbsp;&nbsp;&nbsp;";
    echo $dato[overskrift]."&nbsp;&nbsp;&nbsp;";
    echo $dato[tekst];
    echo "</td>";
    echo "</tr>";
        echo "</table>";   

} else {
    echo "Ingen Nyheder";
}

   
}
?>


</p>

    </td>
       
    </tr>
</table>
Avatar billede dkfire Nybegynder
21. marts 2007 - 17:02 #25
Jeg laver lige en løsning til dig. men hav lige tålmodighed.
Avatar billede dkfire Nybegynder
21. marts 2007 - 17:10 #26
<?
include("db.inc.php");
if(isset($_GET["id"])){
  $id = $_GET["id"];
}else
    $id ='';
?>
<table border="0"  cellpadding="0" cellspacing="0" >
 
    <tr>
        <td  valign="top"  bgcolor="#002afc" >
<br><br>

<p class="indryk"> 
<?
//$idag = mktime(0,0,0, date('n'), date('j'), date('Y'));


$sql = "SELECT * FROM nyhed WHERE start <= CURDATE() AND slut > CURDATE() AND id = ". intval($id);
$news = mysql_query($sql) or die (mysql_error());
if( mysql_num_rows($news) > 0 )
{
echo '<table border="0">';
echo '<tr><td>Nyheder</td></tr>';
while ($dato=mysql_fetch_array($news)) {
?>
<tr>

<?
//echo "Nyheder";
    echo "<td valign=\"top\">";
    echo $dato[datostart]."&nbsp;&nbsp;&nbsp;";
    echo $dato[overskrift]."&nbsp;&nbsp;&nbsp;";
    echo $dato[tekst];
    echo "</td>";
    echo "</tr>";
}
    echo "</table>"; 

}else
{
    echo "Ingen Nyheder";
}

?>


</p>

    </td>
     
    </tr>
</table>
Avatar billede mltrfan Nybegynder
21. marts 2007 - 18:09 #27
Din løsning virker som jeg lige kan se på min side.
Tusinde tak for din hjælp.

Kunne du kommenter disse 4 lijner  jeg er ikke helt god til php inu og så ville jeg senere kunne se hvad det betyder.

$sql = "SELECT * FROM nyhed WHERE start <= CURDATE() AND slut > CURDATE() AND id = ". intval($id);
$news = mysql_query($sql) or die (mysql_error());
if( mysql_num_rows($news) > 0 )
Avatar billede dkfire Nybegynder
21. marts 2007 - 18:20 #28
Her forespørger vi databasen.
Vi prøver at finde alle de nyheder som har startdato før eller ligmed idag og slutdato ligmed eller senere end idag, og med et bestemt id.
$sql = "SELECT * FROM nyhed WHERE start <= CURDATE() AND slut > CURDATE() AND id = ". intval($id);
$news = mysql_query($sql) or die (mysql_error());

Fandt vi nogle rækker i databasen, dvs nogen nyheder som opfyldte vores krav.
mysql_num_rows() giver antallet af rækker som der blev fundet.
if( mysql_num_rows($news) > 0 )
Avatar billede mltrfan Nybegynder
21. marts 2007 - 18:24 #29
mange tak for din tid og hjælp
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



IT-JOB

Capgemini Danmark A/S

Network Architect

Arbejdernes Landsbank

Lead Data Analyst til Dataindsigt

Metroselskabet og Hovedstadens Letbane

Sikkerhedskonsulent