Ik haal uit een tabel in de database enkele velden en print deze voor alle records op het scherm. k wil nu uit deze tabel een record kiezen (aanklikken) en van dit record alle velden opeen nieuwe pagina afdrukken. Ik weet niet hoe ik dat aanmoet pakken en kan het ook nergens vinden. Kan iemand me helpen?

vriendelijke groet,

jacques jansen.
Deze in een link zetten misschien? post anders wat relevante code dan kunnen we daarop advies geven.
Hier de code, waarmee ik het geprobeerd heb , maar die leidt tot een lege pagina:
Het in een link zetten had ik zoals u kunt zien zelf ook bedacht , maar ik doe kennelijk iets niet goed, want als ik deze link aan klik is het resultaat een websitepagina zonder dat het record in beeld komt.

$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select naam, voorl, tussenv, email1 from leden ";
$res=mysql_db_query("$db","$sql",$mysql_id);

$fout=mysql_errno($mysql_id);
if ($fout != 0) {
$fout=mysql_error($mysql_id);
echo '<font color="#FF2306">' . $fout . '</font>';
mysql_close($mysql_id);
echo '</body></html>';
exit;
}
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';
echo "";
while ($row = mysql_fetch_array($res, MYSQL_NUM)) {

echo '<tr>';
echo "<td class='letter'><a href=\"lid.php?naam=$naam\">$row[0]</a><td>";
echo "<td class='letter'>$row[1]<td>";
echo "<td class='letter'>$row[2]<td>";
echo "<td class='letter'>$row[3]<td>";
echo "</tr>"
}
echo "</table>";

Vervolgens in lid.php


$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select * from leden where naam = 'naam' ";
$res=mysql_db_query("$db","$sql",$mysql_id);

$fout=mysql_errno($mysql_id);
if ($fout != 0) {
$fout=mysql_error($mysql_id);
echo '<font color="#FF2306">' . $fout . '</font>';
mysql_close($mysql_id);
echo '</body></html>';
exit;
}
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';
echo "";

echo"<tr>";
echo "<td class='letter'>$row[1]<td>";
echo "<td class='letter'>$row[2]<td>";
echo "<td class='letter'>$row[3]<td>";
echo "</tr>";
echo "</table>";
?>
Dat wat uitgeprint moet worden, moet natuurlijk nog worden uitgewerkt.

Hopelijk kunt u hier wat mee.

vriendelijke groet

Jacques Jansen
Ik ben een amateur maar denk het te weten, als ik het fout heb wordt ik ook weer gecorrigeerd :)

Probeer je records een ID mee te geven. Zet daar auto_increment op en een unique index. Vervolgens plaats je in je lijn de volgende code:

<?php echo '<td class="letter"><a href="bekijk_gegevens.php?record_id' . $row[id] . '>Klik hier om gegevens op aparte pagina te weergeven <td>'; ?>

Je maakt een nieuwe pagina aan en die noem je bekijk_gegevens.php en op deze pagina zet je de volgende code:

<?php

$result = mysql_query ("SELECT waarde1, waarde2, waarde3 FROM tabel_naam WHERE id='$_GET[record_id]'");

?>

De rest kan je zelf wel neem ik aan?
Ik heb het script uitgeprobeerd, maar er ontstaan 2 problemen Op de eerste pagina blijkt de while-lus niet meer te werken en wordt alleen het eerste record afgedrukt.

Op de volgende pagina komt de foutmelding: queri was empty.
Het werkt dus niet goed

jacque jansen
Zet je code tussen [code] en [/code] tags, kunnen we hem wat beter lezen.
Laat eens zien wat je nu hebt.
De code zo als ik die nu heb is de volgende:

$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select  naam, voorl,email1 from leden order by id desc";
$res=mysql_db_query("$db","$sql",$mysql_id);
    
    $fout=mysql_errno($mysql_id);
        if ($fout != 0) {
        $fout=mysql_error($mysql_id);
        echo '<font color="#FF2306">' . $fout . '</font>';
        mysql_close($mysql_id);
        echo '</body></html>';
        exit;
        }
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';
echo "";	
   		
	
    
    while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
	    
		echo '<tr>';
	   
 		echo "<td class='letter'><a href=\"lid.php?record_id' . $row[id] . '>Kies lid </a><td>";
		echo  "<td class='letter'>$row[0]<td>";
	    echo  "<td class='letter'>$row[1]<td>";
	    echo  "<td class='letter'>$row[2]<td>";
	    echo  "<td class='letter'>$row[3]<td>";
	    echo "</tr>";
	    
    }
    
    
echo "</table>";

De code waarnaar de link wordt verwezen is als volgt:

$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$result = mysql_query ("SELECT  * FROM leden WHERE id='$_GET[record_id]'");


$res=mysql_db_query("$db","$sql",$mysql_id);
    
    $fout=mysql_errno($mysql_id);
        if ($fout != 0) {
        $fout=mysql_error($mysql_id);
        echo '<font color="#FF2306">' . $fout . '</font>';
        mysql_close($mysql_id);
        echo '</body></html>';
        exit;
        }
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';
echo "";	
   
    echo"<tr>";
    
    	
    	echo  "<td class='letter'>$row[1]<td>";
	    echo  "<td class='letter'>$row[2]<td>";
	    echo  "<td class='letter'>$row[3]<td>";
	    echo "</tr>";


Wat betreft de laatste regels van de (print)code; deze moeten natuurlijk nog uitgewerkt worden
Ik hoop dat ik nu duidelijker ben

met vriendelijke groet,
jacques jansen
Eerste script sluit je op regel 25 je href niet af met een " of in jou geval een \". Ook heb je op regel 17 een lege string staan als echo? Het is slimmer om in he while lus de variabelen ($row[1], etc) uit de echo te halen, zoals je op regel 25 wel doet.

Je gebruikt enkele quotes ' en dubbele " door elkaar, op regel 23 zet je '<tr>' en op de volgende regels gebruik je in eens dubbelen ". Vuistregel is echo's zijn enkele quotes ' HTML zijn dubbele quotes ". Dan hoef je ze ook niet te escapen met \".

Tweede script escape je de input van je query niet ($_GET[record_id]) en het moet zijn $_GET['record_id'] (zie enkele quotes om record_id). Het is slimmer om in he while lus de variabelen ($row[1], etc) uit de echo te halen.
Even een tip in het algemeen:
Omsluit de code die je post met php tags:
Dus [code]<?php
... (de code)
?>[/code]

Als je de waarde van een kolom wilt gebruiken moet die kolom opgeven in de select list, dus:
SELECT id, naam, voorl, email1 FROM ....
In je eerste script gebruik je:
<?php
$row = mysql_fetch_array($res, MYSQL_NUM)
//dit is hetzelfde als mysql_fetch_row($res)
?>

Daarna probeer je de waarde op te halen met $row['id']
Die bestaat dus niet, en als je display_errors aan had staan had je een melding undefined index 'id' gekregen.

Ik heb het eerste script als volgt veranderd:
<?php
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$sql="select  id, naam, voorl,email1 from leden order by id desc";
$res=mysql_db_query("$db","$sql",$mysql_id);
    
    $fout=mysql_errno($mysql_id);
        if ($fout != 0) {
        $fout=mysql_error($mysql_id);
        echo '<font color="#FF2306">' . $fout . '</font>';
        mysql_close($mysql_id);
        echo '</body></html>';
        exit;
        }
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';	
   		
	
    
    while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
	    
		echo '<tr>';
	   
 		echo "<td class='letter'><a href=lid.php?record_id' . $row[id] . '>Kies lid </a><td>";
		echo  "<td class='letter'>$row[0]<td>";
	    echo  "<td class='letter'>$row[1]<td>";
	    echo  "<td class='letter'>$row[2]<td>";
	    echo  "<td class='letter'>$row[3]<td>";
	    echo '</tr>';
	    
    }
    
    
echo '</table>';
?>

Ik heb dus id toegevoegd aan de select regel De while-lus werkt nu weer Ik weet niet hoe ik $row[1] etc uit de echo moet halen.
Het tweede script heb ik in de geadviseerde zin gewijzigd ik krijg dan echter de volgende foutmelding:
"Parse error: syntax error, unexpected '"' in /home/vhosts/logerosaalba.nl/httpdocs/lid.php on line 18" Hier komt de code:

<?php
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$result = mysql_query "(SELECT  * FROM leden WHERE id='$_GET['record_id'] '');


$res=mysql_db_query("$db","$sql",$mysql_id);
    
    $fout=mysql_errno($mysql_id);
        if ($fout != 0) {
        $fout=mysql_error($mysql_id);
        echo '<font color="#FF2306">' . $fout . '</font>';
        mysql_close($mysql_id);
        echo '</body></html>';
        exit;
        }
$aantal_lijnen=mysql_num_rows($res);
$aantal_velden=mysql_num_fields($res);

echo '<table border=1 celpadding=2 width="90%" class="letter">';
echo "";	
   
    echo"<tr>";
    
    	
    	echo  "<td class='letter'>$row[1]<td>";
	    echo  "<td class='letter'>$row[2]<td>";
	    echo  "<td class='letter'>$row[3]<td>";
	    echo "</tr>";
	    
    
    
    
echo "</table>";
?>
Op de 1e pagina heb je op een persoon geklikt. De 2e pagina moet deze weergeven. Je SQL voor SELECT kan je echo'en door mysql_fetch_assoc.

Voorbeeld van mijn script (stond toch open):

<?php
$result1 = mysql_query ("SELECT * FROM main_page WHERE id=1");
$row1 = mysql_fetch_assoc($result1);

echo $row1['titel']. "<br />";
echo $row1['main_tekst'];

?>

Reageren