van MYSQL query naar 'slimme' tabel in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

Full Stack Developer Industriële Automatiseri

Raster wordt continu betrokken bij complexe en baanbrekende projecten in industriële automatisering. Ons team is gespecialiseerd in productie automatisering en proces automatisering projecten waarin procesveiligheid een belangrijk aspect is. Ons compact en groeiend OX (Operational Excellence) team ontwikkelt, configureert en levert support op zelfontwikkelde applicaties waarmee onze klanten hun productieprocessen slimmer, sneller, goedkoper en veiliger maken. Operational Excellence wordt zichtbaar gemaakt in resultaten. Bij bedrijven met dezelfde strategie, zal een operationeel excellent bedrijf een lager operationeel risico, lagere operationele kosten hebben en relatief meer winst maken. Het Raster OX team laat haar klanten de resultaten behalen door hun eigen procesdata

Bekijk vacature »

Toine van der Ven

Toine van der Ven

20/11/2011 14:30:26
Quote Anchor link
Ik heb een tabel met als definitie:
TABLE `Tbl_Evenementen` (
`EvenementID` int(11) NOT NULL auto_increment,
`Evenement` text NOT NULL,
`Begin` timestamp NOT NULL default CURRENT_TIMESTAMP,
`Eind` timestamp NOT NULL default '0000-00-00 00:00:00',
`HeleDag` tinyint(1) NOT NULL default '0',
`Herinneren` tinyint(1) NOT NULL default '0',
`Herinnering` timestamp NULL default '0000-00-00 00:00:00',
`Locatie` text NOT NULL,
`Max` smallint(6) default NULL COMMENT 'Maximaal aantal deelnemers',
`Aankondiging` varchar(100) default 'Aan' COMMENT 'Aankondiging pagina',
`Uitleg` varchar(100) default 'Uit' COMMENT 'Uitnodiging pagina',
`Deelnemers` varchar(100) default 'Deel' COMMENT 'Deelnemer overzicht',
`Opmerkingen` longtext,
`Krant` longtext COMMENT 'Krantenartikel',
PRIMARY KEY (`EvenementID`),
FULLTEXT KEY `Evenement` (`Evenement`,`Locatie`,`Opmerkingen`),
FULLTEXT KEY `Aankondiging` (`Aankondiging`,`Uitleg`,`Deelnemers`)
);

en wil een pagina maken die er uit ziet als:

Naam Deelnemers
-------------------------------|--------------
Clubkampioenschappen Deelnemers
Open dubbeltoernooi Deelnemers
Uitwisseling Neerpelt Deelnemers

waarbij beide kolommen een link is die een php pagina oproept, zoiets als;
<a href="index.php?pid=DeelClubkampioenschappen" >Deelnemers</a>

Nu wil ik deze pagina vanuit mijn sql tabel automatisch opbouwen.
Het is me gelukt om een tabel met waarden te genereren, maar niet de tabel met links.

Mijn routine begint met
$query='SELECT Begin, Evenement, Aankondiging, Deelnemers FROM Tbl_Evenementen WHERE eind>=CURRENT_TIMESTAMP() ORDER BY Begin ASC';

Waarbij;
Evenement de naam van de link is
Aankondiging en deelnemers de namen van de php pagina.

Mijn link zou er dus als volgt uit moeten zien:
<a href="index.php?pid=[Aankondiging] >[Evenement]</a>

waarbij [Aankondiging] de waarde vertegenwoordigt uit mijn tabel.

Kan iemand mij op weg helpen??
 
PHP hulp

PHP hulp

16/10/2021 00:38:51
 
Noppes Homeland

Noppes Homeland

20/11/2011 15:12:13
Quote Anchor link
Als ik de tabel structuur zo bekijk, dan ben je redelijk chaotisch bezig.

Veldbennamingen zijn onduidelijk ten aanzien van type/lengte/default waarde/comment.

Advies is om eens goed te gaan normaliseren.

Je gaat in ieder geval al de fout in bij:
- geen timestamps maar gewoon DATE/DATETIME
- geen default waarde van 0000-00-00 / 0000-00-00 00:00:00 op timestamps/data/datetime, want 0000-00-00 is geen geldige datum
- het veld krant, wel dat is handig alsof er niet meerdere artikelen kunnen zijn over 1 en hetzelfde evenement

M.a.w. zoals je het nu hebt opgezet zal je je altijd in allerlei ongewenste bochten moeten wringen om een bepaald resultaat uit de database te halen.
 
Jaron T

Jaron T

20/11/2011 18:42:19
Quote Anchor link
`Deelnemers` varchar(100)

- Ik zal je tabel gaan normaliseren, deelnemers houd je niet bij als een string van 100 karakters, hiervoor maak je twee aparte tabellen (1 deelnemer, 2 koppeltabel).
 
Toine van der Ven

Toine van der Ven

21/11/2011 09:27:45
Quote Anchor link
Dat klopt .... deze tabel is een onderdeel van een groter geheel, maar voordat ik überhaupt dat geheel kan laten werken moet eerst het oorspronkelijk probleem opgelost hebben.
Hoe krijg ik de diverse records uit in SQL tabel gepresenteerd in een tabel met links??
 
- SanThe -

- SanThe -

21/11/2011 09:37:42
Quote Anchor link
Wat heb je al? Alleen relevante code graag.
 
Toine van der Ven

Toine van der Ven

21/11/2011 09:52:53
Quote Anchor link
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
<?php
    // bron: http://nl2.php.net/manual/en/mysql.examples-basic.php
    // Performing SQL Query

    $query='SELECT Begin, Evenement, Locatie, Max FROM Tbl_Evenementen WHERE eind>=CURRENT_TIMESTAMP() ORDER BY Begin ASC';
    $result=mysql_query($query) or die('Query failed: ' . mysql_error());
    
    // Printing results in HTML
    $line = mysql_fetch_array($result, MYSQL_ASSOC);
    echo "\t\t<th>Datum</th>\n";
    foreach (array_keys($line) as $col_value) {
            echo "\t\t<th>$col_value</th>\n";
    }
                        // foreach
     echo "\t</tr>\n";        // Einde kolomnamen
     do  {
         foreach ($line as $col_value) {
            if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2})", $col_value, $regs))
                {
    // verander datumformat naar dd-mm-yyyy
                    echo "\t\t<td>$regs[3]-$regs[2]-$regs[1]</td>\n";
                    // Aanvangstijd
                    echo "\t\t<td>$regs[4]:$regs[5] uur</td>\n";
                }
            // if
            else {    
                    echo "\t\t<td>$col_value</td>\n";
                }
         }
    // foreach
        echo "\t</tr>\n";
     }
        // do
     while ($line = mysql_fetch_array($result, MYSQL_ASSOC));
     echo "</table>\n";
    
    // Free resultset
    mysql_free_result($result);
    
    // Closing connection
    mysql_close($link);
?>
 
- SanThe -

- SanThe -

21/11/2011 10:46:23
Quote Anchor link
Ik zie niet waar je het wil hebben.
Maar even in het algemeen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<a href="' . $link . '" title="' . $title . '">' . $sitename . '</a>';
?>


Verder gebruik je ereg(). Let op, van php.net:
Quote:
Warning

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
 
Toine van der Ven

Toine van der Ven

21/11/2011 11:35:23
Quote Anchor link
Klopt ik heb mijn query niet juist weergegeven;

$query='SELECT Begin, Evenement, Aankondiging, Uitleg, Deelnemers, Locatie, Max FROM Tbl_Evenementen WHERE eind>=CURRENT_TIMESTAMP() ORDER BY Begin ASC';

Ik zal even uitleggen wat er in mijn tabel staat;
.Evenement Naam van het evenement,
.Begin Begindatum en tijd, (Bijv. 2011-12-10 09:30:00)
.Eind Einddatum en tijd, (Bijv. 2011-12-10 17:00:00)
.Aankondiging Aankondiging pagina, (Bijv. Aankondiging.php)
.Uitleg Uitnodiging pagina, (Bijv. Uitleg.php)
.Deelnemers Deelnemer overzicht, (Bijv. Deelnemers.php)

Nu wil ik vanuit mijn Tbl_Evenementen tabel een pagina hebben zoals je kunt zien op http://mttv72.nl/index.php?pid=evenementen.
 



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.