opgehaalde info uit database plaatsen

  • Onderwerp starter Onderwerp starter Verwijderd lid 141197
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
V

Verwijderd lid 141197

Beste helpmijer's

Ik heb een data base waar ik mijn nieuws berichten in zet deze database bevat de volgende velden:
id,anker,titel,tekst,date,kort

Ik heb een home page waar de titel staat met de kort tekst er onder en de datum en het anker in de link als je er op klikt

en een nieuws pagina met de titel, de datum de tekst en het anker waar naar gelikt wordt

Dit is mijn script voor nieuws waar ik nu nog alleen titel tekst en datum ophaal(dat is het belangrijkst)

ik wil eigenlijk eerst dat deze drie werken en dan denk ik dat ik zelf wel uit de rest kan komen!:thumb:

Dit is wat ik nu heb:
PHP:
<?php
						//Contact maken met de server
						mysql_connect( "localhost" , "**********" , "***********" ); 
						mysql_select_db ( "pinetum_1" );
						//Informatie ophalen
						$query = "SELECT titel, tekst, date FROM nieuws ORDER BY date DESC LIMIT 2";
						$result = mysql_query ( $query );
						while ( $row = mysql_fetch_assoc ( $result )
						or die (mysql_error()) ) {
						$titel = $row['titel'];
						$tekst = $row['tekst'];
						$datum = $row['date'];
					?>
Nu wil ik een tabel maken in mijn html in deze de php weer openen en de eerste echoën en daarna de twee de met het zelfde principe
dan word de code dus:
PHP:
<table>
                      <tr>
                        <td><?php echo $titel?> <?php echo $tekst?> <?php echo $datum?> </td>
                      </tr>
                      <tr>
                        <td><?php echo $titel?> <?php echo $tekst?> <?php echo $datum?> </td>
                      </tr>
                    </table>
maar dit geeft niet het gewenste resultaat
het geeft:
test5 test5 13-06-2009
test5 test5 13-06-2009
maar moet:
test5 test5 13-06-2009
test4 test4 13-06-2009

Dat zijn namelijk de laatste 2 berichten in mijn database ik kan de fout niet vinden:(
wat doe ik fout?:o
 
Je output 2x dezelfde variabele, dus zal er ook twee keer hetzelfde op het scherm verschijnen.

Je zult een loop moeten maken, die alle resultaten ophaalt, en in die loop ook de dingen moeten weergeven.
 
Die loop staat er al wel, maar ik kan niet zien waar ie afgesloten worden. Waarschijnlijk al boven je echo statements.

Kun je eens de volledige code van die pagina posten?
 
de bovenste is alle php:D behalve de echo's dan naar das gewoon zoals daar onder staat
of wil de html?:o
 
ik snap het niet maar dit is alles kwa php

ik ben de } van while vergeten
 
Laatst bewerkt door een moderator:
Trouwens, 'date' is inmiddels geen gereserveerd woord meer in MySQL, maar het is desondanks raadzaam het veld een andere naam te geven. Het kan in andere databases of bij andere MySQL-versies problemen opleveren, en die kun je beter voor zijn.
 
het geeft nu
test5 test5 13-06-2009

test4 test4 13-06-2009

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Contact-(verwijderd) de Dennenhorst</title>
	<style type="text/css"></style>
	<link href="css/site_normaal.css" rel="stylesheet" type="text/css" media="all" />
	<link rel="SHORTCUT ICON" href="http://www.(verwijderd).eu/favicon.ico">
	<meta name="description" content="Geniet van de natuur in deze unieke verzameling naaldbomen!">
	<meta name="keywords" content="(verwijderd),naaldbomen,dennebomen,bomen,bos,(verwijderd) de dennenhorst,(verwijderd) lunteren,lunteren,ede,gelderland">
	<meta name="robot" content="noindex,follow">
	<meta name="copyright" content="Copyright © 2009 Stichting Vrienden van het (verwijderd). Alle Rechten Voorbehouden.">
	<meta name="revisit-after" content="1 month">
	<meta http-equiv="imagetoolbar" content="no">
</head>
<body>
	<div class="Superbox">
		<div class="Box">
			<div class="Logo"></div>
			<div class="Header"><img src="media/typografie/nieuws_.png" alt="Home" width="197" height="41" hspace="50" vspace="6" /></div>
			<div class="Site">
				<div class="Text_vol">
					<?php
						//Contact maken met de server
						mysql_connect( "localhost" , "*********" , "************" ); 
						mysql_select_db ( "pinetum_1" );
						//Informatie ophalen
						$query = "SELECT titel, tekst, datum FROM nieuws ORDER BY datum DESC LIMIT 2";
						$result = mysql_query ( $query );
						while ( $row = mysql_fetch_assoc ( $result )
						or die (mysql_error()) ) {
						$titel = $row['titel'];
						$tekst = $row['tekst'];
						$datum = $row['datum'];
					?>
                    <br />
                    <table>
                      <tr>
                        <td><?php echo $titel?> <?php echo $tekst?> <?php echo $datum?> </td>
                      </tr>
                    </table>
		    <?php } ?>
                </div>
		  </div>
			<div class="Bottom">
				<div class="End">
  					<div align="center">Alle rechten voorbehouden.<br />
					© Copyright Stichting vrienden van het (verwijderd) 09</div>
				</div>
			</div>
			<div class="MenuBox">
              <div class="Home"  onClick="window.location.href='index.php'"></div>
              <div class="Nieuws" onClick="window.location.href='nieuws.html'"></div>
              <div class="Over_Ons" onClick="window.location.href='over-ons.html'"></div>
              <div class="Waar" onClick="window.location.href='waar.html'"></div>
              <div class="Fotos" onclick="window.location.href='fotos.html'"></div>
              <div class="Historie" onClick="window.location.href='historie.html'"></div>
              <div class="Contact" onClick="window.location.href='contact.php'"></div>
              <div class="Links" onClick="window.location.href='links.html'"></div>
			</div>
		</div>
	</div>
</body>
</html>

ik wil dit in een in en uitklappende div laten zien 1 div per artikel

nu worden ze alle twee ge echoet als ik alleen de eerste wil
hoe kan ik dit het beste verhelpen
 
De tweede div hidden maken? Overigens is een div hier niet echt voor bedoeld. Kijk eerder naar span, bijvoorbeeld.

EDIT:
Zie nu dat je tabellen gebruikt. Je kunt een hele rij verbergen met CSS, en met JavaScript die rij weer tevoorschijn toveren. Zie 'hide show tr' op Google.

Trouwens, hoe kan het dat je een datum als 13-06-2009 uit je database haalt? Een datum hoort van het type DATE te zijn, niet van het type VARCHAR.
 
als DATE werkte het niet nu wel

ik weet dat ik het dan zo tevoor schijn en weg kan doen
maar alles staat nu in 1 table vakje
maar het moet 1 table vakje per onderwerp

Mod: In plaats van een extra bericht kun je ook gewoon je bericht aanpassen.
 
Laatst bewerkt door een moderator:
Je moet de table ook buiten de while() openen. Dan kun je voor elk record een nieuwe tr starten.


Overigens werkt een DATE wel, maar je moet wel opletten hoe je de data erin zet en eruit haalt. VARCHAR werkt niet, ook al lijkt het van wel.
 
ik heb je advies opgevolgt het is nu datum:)
ik ga nu proberen hem te sluiten voor ik de tabel maak:)
 
PHP:
while ( $row = mysql_fetch_assoc ( mysql_query ( "select titel, tekst, datum from nieuws order by datum desc limit 2" ) )

Fatal error: Maximum execution time of 30 seconds exceeded in /www/htdocs/(verwijderd)/t/nieuws.php on line 28
 
Wat doe je nu ineens dan? Dat heeft toch niets met die tabel te maken?

PHP:
$sQuery = "X";
$rResult = mysql_query($sQuery);

echo '<table>';

while(){

echo '<tr><td>waarde</td></tr>';

}

echo '</table>';
 
PHP:
<?php
						//contact maken met de server
						mysql_connect( "localhost" , "(verwijderd)" , "RykMjbOt" ); 
						mysql_select_db ( "pinetum_1" );
						//informatie ophalen
						echo '<table>';
						$query = "SELECT titel, tekst, datum FROM nieuws ORDER BY datum DESC LIMIT 2";
                        $result = mysql_query ( $query );
                        while ( $row = mysql_fetch_assoc ( $result )
						or die (mysql_error()) ) {
						$titel = $row['titel'];
						$tekst = $row['tekst'];
						$datum = $row['datum'];
						echo "<tr><td> $titel, $tekst, $datum </td></tr>";
						echo "niks";
						echo "<tr><td> $titel, $tekst, $datum </td></tr>";
 						}
						echo '</table>';
					?>

geeft

niksniks
test5, test5, 13-06-2009
test5, test5, 13-06-2009
test4, test4, 13-06-2009
test4, test4, 13-06-2009

moet zijn:
test5, test5, 13-06-2009
niks
test4, test4, 13-06-2009
als
PHP:
<?php
						//contact maken met de server
						mysql_connect( 'localhost' , '(verwijderd)' , 'RykMjbOt' ); 
						mysql_select_db ( 'pinetum_1' );
						//informatie ophalen
						echo '<table>';
						$query = 'SELECT titel, tekst, datum FROM nieuws ORDER BY datum DESC LIMIT 2';
                        $result = mysql_query ( $query );
                        while ( $row = mysql_fetch_assoc ( $result )
						or die (mysql_error()) ) {
						$titel = $row['titel'];
						$tekst = $row['tekst'];
						$datum = $row['datum'];
						echo '<tr><td> $titel, $tekst, $datum </td></tr>';
						echo '<tr><td> niks</tr></td>';
						echo '<tr><td> $titel, $tekst, $datum </td></tr>';
 						}
						echo '</table>';
					?>
(enkele haken)
=
$titel, $tekst, $datum
niks
$titel, $tekst, $datum
$titel, $tekst, $datum
niks
$titel, $tekst, $datum
 
Tja logisch je doet dit binnen je WHILE-lus
PHP:
                        echo '<tr><td> $titel, $tekst, $datum </td></tr>';
                        echo '<tr><td> niks</tr></td>';
                        echo '<tr><td> $titel, $tekst, $datum </td></tr>';
Daarom gaat ie elk resultaat 2x weergeven met daar tussen in "niks" als rij

Waarom moet die "niks" er tussen?

Dit is volgens mij voldoende
PHP:
                        //contact maken met de server
                        mysql_connect( "localhost" , "xxxxxx" , "xxxxxx" ); 
                        mysql_select_db ( "pinetum_1" );
                        //informatie ophalen
                        echo '<table>';
                        $query = "SELECT titel, tekst, datum FROM nieuws ORDER BY datum DESC LIMIT 2";
                        $result = mysql_query ( $query );
                        while ( $row = mysql_fetch_assoc ( $result )
                        or die (mysql_error()) ) {
                        $titel = $row['titel'];
                        $tekst = $row['tekst'];
                        $datum = $row['datum'];
                        echo "<tr><td> $titel, $tekst, $datum </td></tr>";
                        }
                        echo '</table>';
 
Alleen is het nog steeds geen DATE-veld, maar dat dat niet handig is merk je later nog wel.
 
PHP:
//informatie ophalen
						echo '<table>';
						$query = "SELECT  id, titel, tekst, anker FROM nieuws ORDER BY id DESC LIMIT 3";
                        $result = mysql_query ( $query );
                        while ( $row = mysql_fetch_assoc ( $result ) ) {
						$titel = $row['titel'];
						$tekst = $row['tekst'];
						$anker = $row['anker'];
						echo "<tr><td> <a href='#". $anker ."'>$titel</a> <br/></td></tr>";
						}
						echo '</table>';
						echo '<br/><br/>';
						echo '<table>';
						mysql_data_seek ( $result, 0 );
						echo "<tr><td><a name=". $anker ."></a><h1> $titel</h1><br/>$tekst <br/></td></tr>";
						echo '</table>';
					?>
de code nu

levert:
test1
test2
test3

test1
artikel

moet:
test1
test2
test3

test1
artikel
test2
artikel
test3
artikel:confused:
 
Je haalt de eerste rij op met
PHP:
mysql_data_seek ( $result, 0 );
Dan lijkt het mij dat je ook de eerste artikel krijgt

test1
artikel

Wat je zou kunnen doen is het bij de while inproppen, of een nieuwe while maken. (als je het mij vraagt).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan