PDA

Bekijk Volledige Versie : Dit moet beter kunnen (tabel controle met PHP en MySQL)



Matthijs de Z
28/09/05, 16:15
Hoi,

Ik wil binnen een script controleren of een tabel (met de naam die in de
variabele $ticker zit) in een database bestaat of niet. Als dat niet het
geval is, wil ik dat deze aangemaakt wordt door de functie $maakTabel().

Aan het begin haal ik eenmalig een lijst op van alle bestaande tabellen
binnen de database middels deze code:

$tables=mysql_list_tables("$dbname");
for($i=0;$i<mysql_num_rows($tables);$i++)
{
$allTables=$allTables.",".mysql_tablename($tables,$i);
}

Vervolgens wil ik binnen een loop waar alle tabellen worden aangevuld een
controle uitvoeren. Dus ik dacht dan doe ik dit:

if(!eregi("$ticker",$allTables) $maakTabel($ticker);

Dit moet naar mijn idee wel werken, maar het kan vast beter. Iemand een
suggestie?
Groeten,

Matthijs

Maarten Wierda
28/09/05, 16:35
Matthijs de Z wrote:

> Hoi,

Hoi,

> Ik wil binnen een script controleren of een tabel (met de
> naam die in de variabele $ticker zit) in een database
> bestaat of niet. Als dat niet het geval is, wil ik dat
> deze aangemaakt wordt door de functie $maakTabel().

Lees <http://dev.mysql.com/doc/mysql/en/create-table.html>
nog eens voordat je dit met php wil oplossen ;)

Volgens mij kan iets als onderstaande ook:

CREATE TABLE IF NOT EXISTS 'tabel' (...);

Succes.


--
Cheers,
Maarten Wierda

Matthijs de Z
28/09/05, 17:25
> Lees <http://dev.mysql.com/doc/mysql/en/create-table.html>
> nog eens voordat je dit met php wil oplossen ;)

oh jee...ik doe weer dingen die niet mogen ;-)

> Volgens mij kan iets als onderstaande ook:
>
> CREATE TABLE IF NOT EXISTS 'tabel' (...);

op zich een goede optie, maar (had ik niet eerder verteld) ik wil nog wat
andere dingen doen als een tabel niet bestaat. Zo wil ik naast het aanmaken
van de tabel, ook wat gegevens verzamelen om deze even later per email op te
sturen. Dus direct de functie create table if not exist ..bla bla, zou niet
kunnen voldoen.

Alhoewel... als ik nou dit zou doen
$nieuweTabel= CREATE TABLE IF NOT EXISTS 'tabel' (...);
if(nieuweTabel)
{
hier wat scriptspul voor onderandere de mail afhandeling en dergelijke
}

Is dit een logisch idee?
Groeten,

Matthijs

>
> Succes.
>
>
> --
> Cheers,
> Maarten Wierda

Maarten Wierda
28/09/05, 18:25
Matthijs de Z wrote:

[tabel creëren en dan nog wat doen in php]

> $nieuweTabel= CREATE TABLE IF NOT EXISTS 'tabel' (...);
> if(nieuweTabel)
> {
> hier wat scriptspul voor onderandere de mail afhandeling en dergelijke
> }
>
> Is dit een logisch idee?

Wat mij betreft wel, ja.


--
Cheers,
Maarten Wierda

Matthijs de Z
28/09/05, 18:25
> > Is dit een logisch idee?
>
> Wat mij betreft wel, ja.

Dan dank ik je voor je bijdrage ;-)
Groeten,

Matthijs

Ronald Paul
28/09/05, 21:55
Matthijs de Z wrote:

> Ik wil binnen een script controleren of een tabel (met de naam die in de
> variabele $ticker zit) in een database bestaat of niet. Als dat niet het
> geval is, wil ik dat deze aangemaakt wordt door de functie $maakTabel().

Als ik dingen hoor over het dynamisch aanmaken van tabellen, krijg ik al
snel een vreemd gevoel. Meta-data is ervoor om statisch te zijn, de data
zelf heeft kans genoeg om het dynamieke aspect aan een database te geven.

Ik heb wel eens gelezen over scheiding in tabellen als een soort van
pre-index, maar veel meer goede oplossingen kan ik niet verzinnen bij
een genormaliseerd datamodel. Dus puur uit nieuwsgierigheid: wat is in
dit geval de 'betekenis' van één tabel en waarom heb je voor deze weg
gekozen?

--
Groet, Ronald

Matthijs de Z
29/09/05, 02:15
> Als ik dingen hoor over het dynamisch aanmaken van tabellen, krijg ik al
> snel een vreemd gevoel. Meta-data is ervoor om statisch te zijn, de data
> zelf heeft kans genoeg om het dynamieke aspect aan een database te geven.
>
> Ik heb wel eens gelezen over scheiding in tabellen als een soort van
> pre-index, maar veel meer goede oplossingen kan ik niet verzinnen bij
> een genormaliseerd datamodel. Dus puur uit nieuwsgierigheid: wat is in
> dit geval de 'betekenis' van één tabel en waarom heb je voor deze weg
> gekozen?

Hoi,

Ik gebruik de database om koersen op te slaan die ik bij Yahoo ophaal. Die
koersen hebben voor aandelen en indices verschillende tickercodes.
Bijvoorbeeld ^aex voor de AEX index en AAH.AS voor het aandeel ABN Amro. Nu
wil ik die tickercodes allemaal een aparte tabel geven. Maar als ik op een
gegeven moment een tickercode toevoeg, dan is er nog geen tabel voor
aangemaakt, dus moet dat nog gebeuren. Vandaar dus eigenlijk. Ik weet wel
dat je alle tickercodes in principe in 1 tabel kunt gooien, maar ik vind het
prettiger om zo te werken.
Mazzel,

Matthijs

finalwebsites.com
29/09/05, 13:45
dan zou je in dit geval een table hebben met de aandelen (ticker codes
en andere data) en een tabel met de koersen (hier staan meerdere regels
per aandeel).

Met een on to many relatie is de data dan eenvoudig en snel op te
halen.

Denk hierbij aan de duizende aandelen en hoeveel tabellen je overhoud.


gr. Olaf
Maak kans op een gratis kaartje voor de PHP conferentie 2005...
http://www.finalwebsites.com/php_conferentie.php

Matthijs de Z
29/09/05, 14:25
> dan zou je in dit geval een table hebben met de aandelen (ticker codes
> en andere data) en een tabel met de koersen (hier staan meerdere regels
> per aandeel).
>
> Met een on to many relatie is de data dan eenvoudig en snel op te
> halen.
>
> Denk hierbij aan de duizende aandelen en hoeveel tabellen je overhoud.

Je hebt op zich wel een punt, maar het is mijn eerste "echte" database
model...dus ik hou het even simpel voor mijn eigen koppie. Ik ben nog niet
zo enorm thuis in MySQL. Vandaar dat ik het nu op de "het werkt" methode doe
en de "dit is echt een goed geprogrammeerde database" over een paar maanden
maak, als ik de onderlinge verbanden wat beter in kan zien en me iets meer
thuisvoel in de wereld die MySQL heet.
Mazzel,

Matthijs