Hoe krijg ik een link naar het juiste record

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

30/05/2011 10:31:01
Quote Anchor link
Ik heb een tabel gevuld met gegevens die ik keurig netjes op mijn scherm krijg. Elke regel heb ik voorzien van een plaatje waarop de gebruiker moet gaan klikken om meer informatie over het getoonde record te krijgen. Ik heb hiervoor o.m. een veld met een uniek id beschikbaar. Nu de uitdaging: Hoe krijg ik de gegevens te zien van het aangeklikte record. Het zou mooi zijn als dit lukt want het is wel erg gebruiksvriendelijk.

De broncode van mijn scherm is:

----------------------------- Broncode ------------------------------

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php

/**
 * @author George van Baasbank
 * @copyright 2011
 */
// Variabelen declareren


$nTeller = 0;            // Teller om witregel te likaliseren


// Constanten voor mysql_connect() insluiten:

require_once('mysql_connect.inc.php');  

$db=mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
mysql_select_db(mijn database);  
mysql_set_charset('utf8');

$sql  = 'SELECT `naam`, `adres`, `woonplaats`, `telefoon`, `email`, `roepnaam`, `tussenvoeg` ';
        $sql .= 'FROM `vrijwilligers` ';
        $sql .= "WHERE vrijwilliger = 'Ja' ";
        $sql .= 'ORDER BY `naam` ASC ';
$result=mysql_query($sql);  


?>


<!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-Language" content="nl" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overzicht vrijwilligers Sjouk.nl</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="../css/sjouk.css" />
</head>

<body style="margin-left: 0px; margin-top: 0px">

<table style="background-image: url('../Html/Background.jpg')" align="center" width="1000 px" border="0">
    <tr>
        <th width="17 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Toon:</th>
        <th width="233 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Naam:</th>
        <th width="250 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Adres:</th>
        <th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Woonplaats</th>
        <th width="150 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Telefoon:</th>
        <th width="200 px" style="font-family: Arial; font-weight: bold; background-color: blue; color: yellow;">Email:</th>
    </tr>
    
    <?php while($row=mysql_fetch_array($result)){ ?>
    <tr>
            <td align="center "width="17"><img alt="Raadplegen" longdesc="Raadplegen" src="../afbeeldingen/editbutton.png" width="16" height="16" style="float: left"  /></td>
            <td width="233 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['roepnaam']." ".$row['tussenvoeg']." ".$row['naam']; ?></td>
            <td width="250 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['adres']; ?></td>
            <td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['woonplaats']; ?></td>
            <td width="150 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['telefoon']; ?></td>
            <td width="200 px" style="font-family: Arial; font-size: smaller;"><?php echo $row['email']; ?></td>
            
            <?php $nTeller++; ?>
                        
            <?php if ($nTeller == 5) {; ?>
            
                <tr>
                    <td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row['     ']; ?></td>
                </tr>
                <tr>
                    <td width="16 px" style="font-family: Arial; font-size: larger;"><?php echo $row['     ']; ?></td>
                </tr>
                
                <?php $nTeller = 0; ?>
                    
               <?php }  ?>
                      
            <?php } ?>
                    
    </tr>
</table>


</body>

</html>



Is er iemand die mij een suggestie kan doen?
Gewijzigd op 30/05/2011 11:44:54 door George van Baasbank
 
PHP hulp

PHP hulp

27/12/2024 05:44:55
 
Arjan -

Arjan -

30/05/2011 10:34:11
Quote Anchor link
Id van het record meegeven in een link en vervolgens gebruiken in je query middels $_GET (let op mysql injecties!)
Gewijzigd op 30/05/2011 10:35:05 door Arjan -
 
Ozzie PHP

Ozzie PHP

30/05/2011 11:10:08
Quote Anchor link
George, pas aub even de titel "uitdaging" aan in een zinvolle titel. De titel "uitdaging" geeft niet aan waar het topic over gaat.
 
George van Baasbank

George van Baasbank

30/05/2011 11:57:37
Quote Anchor link
Hoi Arjan,

Ik ben nog niet geheel thuis in de PHP-materie dus ik heb nog wat hulp nodig.

Ik wil in eerste instantie het probleem oplossen zonder de SQL-Injection. Die probeer ik later wel in te bouwen.

Ik kan een (hyper)link aanbrengen aan plaatje, maar hoe geef ik het id van het bewuste record mee? Ik heb tenslotte alleen maar een schermuitdraai tot mijn beschikking. Moet ik dan het resultaat van mijn msql_fetch_array omzetten naar een nieuwe array? Of zie jij een andere, betere, methode?
Gewijzigd op 30/05/2011 11:58:10 door George van Baasbank
 
Ozzie PHP

Ozzie PHP

30/05/2011 12:06:56
Quote Anchor link
In je select kun je het id ophalen...

SELECT id, naam, adres enzovoorts (die aanhalingstekens om de veldnamen weghalen)

Het woordje id moet hetzelfde zijn als de naam in je tabel dus dat moet je even controleren.

in je while loop kun je dan een link om je plaatje zetten

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="edit.php?id=<?php echo $row['id']; ?>"><img alt="Raadplegen" longdesc="Raadplegen" src="../afbeeldingen/editbutton.png" width="16" height="16" style="float: left"  /></a>


Ik wil je wel meegeven om basis css te gaan leren, want de manier waarop jij nu stijlementen toevoegt (lettertype, posities etc.) is helemaal fout. Dat hoor je te doen met een extern stylesheet.
Gewijzigd op 30/05/2011 12:07:30 door Ozzie PHP
 
George van Baasbank

George van Baasbank

30/05/2011 12:09:58
Quote Anchor link
Ozzie,

Ik maak gebruik van css maar ben nog niet zover dat ik deze stijl kan gebruiken in mijn PHP. Volgend leermoment dus
 
Ozzie PHP

Ozzie PHP

30/05/2011 12:16:29
Quote Anchor link
Dat heeft helemaal niks met PHP te maken. Je moet dat denk ik echt wel even meepakken want je bent nu enorm je code aan het vervuilen. Je zit nu in iedere regel van een tabel stijlelementen te plakken. Da's echt niet de bedoeling hoor. Je code wordt veel te zwaar en je behoort code en stijl gescheiden te houden. Dus verdiep je echt even in css. Is in jouw geval heel erg de moeite waard.
 
Robby Alexander

Robby Alexander

30/05/2011 12:18:40
Quote Anchor link
ja ik raad je ook aan in classes te werken. vooral als je gaat werken met php dan kom je behoorlijk in de knel.
 
George van Baasbank

George van Baasbank

30/05/2011 20:28:54
Quote Anchor link
Ozzie en Robbie,

Zoals jullie in mijn originele bronbestand kunnen zien had/heb ik in het html-gedeelte al reeds mijn bestaande css-bestand gelinkt. Dit bestand gebruik ik in mijn hele website. Ik kan/moet het dus ook hier gaan gebruiken. Bedankt voor de tip.

De hyperlink rondom het plaatje heb ik aangebracht en als in ik het genoemde bestand (dat ik al wel heb aangemaakt) aankom is het nu nog leeg. Het commando $_GET ken ik nog niet genoeg. Laat ik even omschrijven wat ik denk te moeten gaan doen:

In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'. Als ik de oplossing van Ozzie goed lees geef ik de waarde van de variabele 'id' mee met de hyperlink en is dus voor het volgende bestand te gebruiken.
 
Obelix Idefix

Obelix Idefix

30/05/2011 20:56:29
Quote Anchor link
Niet met een while.
Je maakt een query met een WHERE er in. Denk daarbij wel aan sql-injection.
Doe het liever in 1x goed dan telkens je code te moeten corrigeren. Kost je heel veel (extra) tijd.
 
Arjan -

Arjan -

30/05/2011 21:06:24
Quote Anchor link
Obelix en Idefix op 30/05/2011 20:56:29:
Niet met een while.
Je maakt een query met een WHERE er in. Denk daarbij wel aan sql-injection.
Doe het liever in 1x goed dan telkens je code te moeten corrigeren. Kost je heel veel (extra) tijd.


Hoezo geen while als je een where in je query hebt zitten? Als je meer dan 1 resultaat verwacht dan zal je toch echt een loop moeten gebruiken om de gegevens uit te lezen. Wanneer je op id selecteert en het veld id heeft een uniek nummer dan is een while inderdaad overbodig.

George van Baasbank op 30/05/2011 20:28:54:
In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'. Als ik de oplossing van Ozzie goed lees geef ik de waarde van de variabele 'id' mee met de hyperlink en is dus voor het volgende bestand te gebruiken.



Klopt. Je geeft de id van de gegevens mee die je wilt tonen, waarna je op de volgende pagina de waarde van $_GET['id'] gebruikt om de gegevens op te halen.

Dus:

pagina.php?id=23

Pagina.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if(isset($_GET['id']) AND ctype_digit($_GET['id'])) {

    $sql = mysql_query("SELECT id, titel FROM tabel WHERE id = ".$_GET['id']." LIMIT 1");

    if($sql) {

        if(mysql_num_rows($sql) > 0) {

            $f = mysql_fetch_assoc($sql);
            print_r($f);

        }
else {
            echo 'Geen resultaat gevonden!';
        }    


    }
else {

        echo 'Er ging iets mis!';

    }


}

?>
Gewijzigd op 30/05/2011 21:11:52 door Arjan -
 
Obelix Idefix

Obelix Idefix

30/05/2011 21:32:06
Quote Anchor link
Arjan - op 30/05/2011 21:06:24:
Hoezo geen while als je een where in je query hebt zitten? Als je meer dan 1 resultaat verwacht dan zal je toch echt een loop moeten gebruiken om de gegevens uit te lezen. Wanneer je op id selecteert en het veld id heeft een uniek nummer dan is een while inderdaad overbodig.

Als je meer dan 1 resultaat verwacht, zul je idd een while lus moeten gebruiken. Gezien onderstaande twee citaten, verwacht ik echter dat TS op zoek is naar een resultaat van de link waarop is geklikt en dat voor elke link een uniek id beschikbaar is:

George van Baasbank op 30/05/2011 10:31:01:
Ik heb een tabel gevuld met gegevens die ik keurig netjes op mijn scherm krijg. Elke regel heb ik voorzien van een plaatje waarop de gebruiker moet gaan klikken om meer informatie over het getoonde record te krijgen. Ik heb hiervoor o.m. een veld met een uniek id beschikbaar.


George van Baasbank op 30/05/2011 20:28:54:
In het nieuwe document ga ik met een WHILE-opdracht door mijn tabel heen en test daar op de waarde van mijn variabele 'id'.


Vandaar mijn opmerking om where te gebruiken.
 
George van Baasbank

George van Baasbank

31/05/2011 17:24:59
Quote Anchor link
Hallo Arjan,

De routine die jij mij ter hand hebt gedaan werkt goed. Nu rijst bij mij de vraag: Hoe krijg ik de waardes uit de assoc-array op mijn scherm (netjes). Ik kan natuurlijk een tabel maken maar met welke opdracht zet ik nu de inhoud van bijv. de roepnaam of het adres op het scherm. Zelf denk ik om de inhoud van de array in een variabele te zetten. Echter, ik weet (nog) niet hoe.

Wie geeft mij een suggestie?
 
- SanThe -

- SanThe -

31/05/2011 17:32:04
Quote Anchor link
Lees eens een beginnerstutorial door. Dit is zo basic wat je nu vraagt.
Zie o.a. www.phptuts.nl
 
George van Baasbank

George van Baasbank

31/05/2011 18:21:09
Quote Anchor link
SanThe,

Bedankt voor de tip. Ik ben nu bezig met het doorlezen van het artikel over array's. Wat kan het leven toch eenvoudig zijn.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.