Probleem met het gebruik van koppelteken in tabelnamen en veldnamen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin Vancuyck

Robin Vancuyck

22/08/2014 11:07:07
Quote Anchor link
Hey,

Ik ondervind problemen bij het doorlinken van de ene php pagina naar de volgende php pagina als deze verwijzen naar vb. een provincienaam of gemeentenaam waar een koppelteken in staat. Als iemand weet hoe ik dit kan oplossen dan hoor ik het graag.

vb. ik heb een eerste php pagina met alle vlaamse provincies en als ik op vlaams-brabant klik dan zou ik een lijst moeten krijgen met alle vlaams-brabantse gemeenten maar hier loopt het fout door het koppelteken in Vlaams-Brabant want ik ondervind geen problemen bij Antwerpen, Limburg en Brussel. Zoals eerder al vermeld ondervind ik dit zelfde probleem ook bij het doorlinken van een gemeente pagina met koppelteken naar het contactformulier voor die specifieke gemeente.

Mvg,
 
PHP hulp

PHP hulp

28/03/2024 17:43:37
 
- Ariën  -
Beheerder

- Ariën -

22/08/2014 11:13:25
Quote Anchor link
Heb je wat relevante code?
 
Robin Vancuyck

Robin Vancuyck

22/08/2014 11:24:16
Quote Anchor link
Beste,

Dank voor uw antwoord.

Hieronder de foutmelding die ik ontvang met de bijhorende lijnen codering.

( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Studieco\provincie.php on line 267
Call Stack
# Time Memory Function Location
1 0.0033 281960 {main}( ) ..\provincie.php:0
2 0.0176 307072 mysql_fetch_array ( ) ..\provincie.php:267

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<form action="bijles-bijlessen-studiebegeleiding.php" method="get">
<br />
<font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Studieco\provincie.php on line <i>267</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0033</td><td bgcolor='#eeeeec' align='right'>281960</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\Studieco\provincie.php' bgcolor='#eeeeec'>..\provincie.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0176</td><td bgcolor='#eeeeec' align='right'>307072</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.mysql-fetch-array' target='_new'>mysql_fetch_array</a>
(  )</td><td title='C:\wamp\www\Studieco\provincie.php' bgcolor='#eeeeec'>..\provincie.php<b>:</b>267</td></tr>
</table></font>
</form>


Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 22/08/2014 13:12:49 door Bas IJzelendoorn
 
Gerhard l

gerhard l

22/08/2014 11:25:53
Quote Anchor link
Je Query gaat blijkbaar fout. Controleer of de query lukt en vang errors op: mysql_error();

Edit: Heb je code waar je de query aanroept?
Gewijzigd op 22/08/2014 11:34:13 door gerhard l
 
Ivo P

Ivo P

22/08/2014 12:23:28
Quote Anchor link
kan het zijn dat er in jouw database een tabelnaam, of kolomnaam is met de naam "vlaams-brabant"?

Dat kan niet.

Stel ik wil rekenen in SQL:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT eindscore - beginscore AS verschil
FROM tabel

ofwel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT eindscore-beginscore AS verschil
FROM tabel


dan zou

SELECT vlaams-brabant
FROM tabel
dus proberen de waarde van de kolom brabant af te trekken van de waarde in de kolom vlaams....


sowieso lijkt me dat geen lekker datamodel
 
Robin Vancuyck

Robin Vancuyck

27/08/2014 14:48:06
Quote Anchor link
Ik heb mijn eerder gestelde probleem ondertussen al terug kunnen brengen tot het punt dat er zich enkel nog een probleem vormt als ik een variabele definieer op basis van een andere variabele die tabelnamen bevat waarvan sommigen een koppelteken bevatten. Hieronder de foutmelding die ik dan krijg.

FOUT1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-Brabant ORDER BY naam ASC' at line 1

En de lijn code waarop de foutmelding betrekking heeft:

$gemeente = "SELECT naam FROM $provincie ORDER BY naam ASC";
 
Gerhard l

gerhard l

27/08/2014 14:50:46
Quote Anchor link
Heb je de reactie van Ivo gelezen? Zorg ervoor dat je tabelnamen geen koppeltekens bevatten, deze worden gezien als min.
 
Ozzie PHP

Ozzie PHP

27/08/2014 14:50:59
Quote Anchor link
Ivo beschrijft hierboven het probleem toch al?

Geen idee of het werkt, maar probeer zo eens:

$gemeente = "SELECT naam FROM '$provincie' ORDER BY naam ASC";
 
- SanThe -

- SanThe -

27/08/2014 14:53:49
Quote Anchor link
near '-Brabant ORDER

Zo te zien ben je nog steeds aan het aftrekken=> -Brabant (min brabant).
Vervang al die min-tekens door underscores en je probleem is weg.

Toevoeging op 27/08/2014 14:55:34:

@Ozzie: Jij maakt er tekst van. Dat gaat ook niet werken. Gebruik dan de (niet aan te raden) backtics.
 
Ivo P

Ivo P

27/08/2014 14:56:33
Quote Anchor link
a) dan zonder ' ' om $provincie.

b) dat datamodel rammelt.

Als jij de gemeentes opslaat in een tabel met de naam van een provincie, dan is dat onhandig:

Zoek alle plaatsnamen beginnend met "aa"
Dan moet je 12 (voor Nederland 12 provincies) query's uitvoeren.

Veelhandiger is het om 1 tabel te hebben met alle gemeentes met daarbij 1 kolom "provincie_id" van het type INTEGER.

Daarnaast heb je dan 1 tabel "provincies" waarbij de id kolom overeen komt met dat provincie_id en waarbij je de naam in een varchar zet.
Eventueel zelfs twee- of drietalig.

Dan kun je die plaatsnamen met "aa" beginnend in 1x ophalen, en moet dat dan per se een plaats in Limburg zijn, dan zet je erbij WHERE provincie_id = 5
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

27/08/2014 14:59:29
Quote Anchor link
Ivo, je haalt me de letters van mijn toetsenbord .....
 
Ozzie PHP

Ozzie PHP

27/08/2014 15:01:42
Quote Anchor link
- SanThe - op 27/08/2014 14:53:49:
Zo te zien ben je nog steeds aan het aftrekken...

Ik mag hopen van niet...
 
Robin Vancuyck

Robin Vancuyck

11/09/2014 11:59:31
Quote Anchor link
Ik heb de koppeltekens in de tabelnamen nu verandert in underscores. Dit werkt maar ik vroeg me af of er een manier bestaat om die underscores in de database op het scherm toch als koppeltekens weer te geven.

Ik heb gelezen dat dit met de rewrite engine in de htaccess file zou moeten gaan, klopt dit?

Mvg,
 
Ivo P

Ivo P

11/09/2014 12:36:25
Quote Anchor link
nee, str_replace() kan dat doen.

maar waarom zou je de tabelnamen op het scherm willen zetten?

Die hebben voor de gebruiker van een website geen betekenis.

Ik denk dat dit nog gaat over dat issue waarbij er plaatsnamen in een tabel per provincie gezet werden?
Slecht plan.

Handiger is 2 tabellen:
1 met 2 of 3 kolommen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
id  naam   naamfr
1   Limburg  Limbourgh
2   Brussel  Brussels

en 1 tabel met plaatsnamen en een extra kolom die naar het id van de provincie verwijst

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
id   plaatsnaam    provincie_id
1    maasmechelen   1
2    lanaken        1
3    anderlecht     2
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2014 12:39:42
Quote Anchor link
Het is maar goed dat je niet in de VS woont, dan zou je 52 tabellen hebben!!
Lees de reactie van Ivo nog eens .....

Dan wordt alles een stuk gemakkelijker
 



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.