Toon posts:

MySQL: lege row

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben even aan het klooien geslagen met MySQL. Ik sla hyperlinks naareen .jpg op in een databse en haal deze op via PHP icm <img src> tag.

Nu heb ik verschillende velden aangemaakt in een tabel genaamt foto. Als ik echter via SQL satement een foto opsla in 1 v/d velden, dan vult hij de andere velden met een lege row, zie onderstaande foto.

Weet iemand hoe dit kan? Ik heb niet veel ervaring met MySQL, dus het zal wel iets simpels zijn. Ik zou echter niet weten wat het is :P


Het SQL commando geef ik als volgt in: INSERT INTO foto (gebouw) VALUES ('blablabla');

Veld id is int, primary en heeft auto_increment, velden met de links naar foto's zijn varchar.

Verder heb ik geen instellingen van de velden aangepast.

Afbeeldingslocatie: http://jorkre.hostingrapid.com/vaag.jpg

[ Voor 3% gewijzigd door Verwijderd op 22-02-2006 20:51 ]


Verwijderd

misschien zo:
code:
1
INSERT INTO foto ('gebouw') VALUES ('blablabla');

?

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

INSERT INTO foto SET gebouw='blablabla';

@hierboven: geen singlequotes gebruiken voor veldnamen.
hooguit backticks (die links van de "1" op je tobo zit)

[ Voor 75% gewijzigd door McKaamos op 22-02-2006 20:54 ]

Iemand een Tina2 in de aanbieding?


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Wat bedoel je met vult die de andere velden met een lege row?

Foto doet het namelijk niet ;)

Update bericht:

Thnx Shadowman voor je opmerking over het plaatje. Hij werkt idd.

Maar als ik naar het plaatje kijk heb je de tabel foto
Met het veld natuur, niet met de naam gebouw :?

[ Voor 52% gewijzigd door Facer op 22-02-2006 21:05 ]


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Als je iets in de database zet en je vult niet alle velden, dan worden de andere velden gevuld met de default value.

Wil je 1 veld wijzigen, kijk dan naar de UPDATE-query, syntax bijna hetzelfde als bovenstaande. (van McKaanos)

UPDATE foto SET gebouw='blabla' (WHERE id=1 / whatever om te zorgen dat 1 specifieke rij wordt gewijzigd, in dit geval de rij met het id 1)

edit:
@facer: hotlink-protectie ;), plaatje doet het wel

[ Voor 10% gewijzigd door Shadowman op 22-02-2006 21:01 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

McKaamos schreef op woensdag 22 februari 2006 @ 20:53:
INSERT INTO foto SET gebouw='blablabla';
Die alternatieve syntax voor het schrijven van een INSERT query is nog niet zo heel lang geleden toegevoegd aan MySQL geloof ik, dus die werkt niet overal, en bovendien werkt dit precies hetzelfde als wat de topicstarter zelf al geprobeerd heeft.

Wat er nu precies mis gaat zie ik ook nergens, dus ik kan verder ook niet helpen. Ik vermoed dat er default waarden ontbreken, maar dat kan ik zo dus niet zien.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Klote gratis provider :P En speedlinq werkt ook al niet :/

Probeer het tekstueel uit te leggen :

Ik heb 4 velden voor foto's:
Gebouwen
Natuur
Macro
Dieren

Als ik dus een link toevoeg aan één van de 4, dan krijgen de andere velden een row toegevoegd, als je dan bij de inhoud kijkt dan is hij gewoon leeg.

Als het geheel via php uitlees, krijg ik de foto's te zien, plus een broken image icoon voor het totaal aantal foto's van in de tabel foto staat.

code:
1
</div><img src=  id="pic" />


code:
1
<img src= http://localhost/php/site/foto/gebouw/1.jpg id="pic" />


Bovenste krijg ik dus als ik "dier" laat zien, daar staat niets in. Onderste is van "gebouw" waar 1 foto link in staat

[ Voor 32% gewijzigd door Verwijderd op 22-02-2006 21:08 ]


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Dus als je er 1 toevoegd krijg je dit:
Tabel foto:
code:
1
2
[Gebouwen]     [Natuur]      [Macro]      [Dieren]
'blabalabla'   ''            ''           ''


Als dat het geval is dan moet je de defaults van die cellen aanpassen als je er standaard wel wat in wilt hebben..

[ Voor 12% gewijzigd door Facer op 22-02-2006 21:09 ]


Verwijderd

Je hebt/wilt dus zoiets:

code:
1
2
3
4
5
6
7
8
Foto's
|----------|----------|----------|----------|
| Gebouwen | Natuur   | Macro    | Dieren   |
|----------|----------|----------|----------|
| Foto1    | Foto2    | Foto3    | Foto4    |
|----------|----------|----------|----------|
| Foto5    | Foto6    | Foto7    | Foto8    | 
|----------|----------|----------|----------|


Nu is de vraag: hebben Foto1, 2, 3, 4 iets met elkaar te maken? En, hebben foto5, 6,7 en 8 (op dezelfde manier) iets met elkaar te maken. Zo ja: vul of alle foto's in 1 keer in, of vul ze in met 1x insert + 3x update.
Aan de namen van de velden te zien, hebben de foto's echter niks met elkaar te maken; in dat geval is je ontwerp verkeerd.
Je moet elke rij (record) zien als een groep bij elkaar horende velden. (bijvoorbeeld: naam, adres, postcode, woonplaats).

Je zou in jouw geval bijvoorbeeld kunnen werken met:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|----------|----------|
| Foto     | Type    |
|----------|----------|
| Foto1    | Gebouwen |
|----------|----------|
| Foto2    | Natuur   |
|----------|----------|
| Foto3    | Macro    |
|----------|----------|
| Foto4    | Dieren   |
|----------|----------|
| Foto5    | Gebouwen |
|----------|----------|
| Foto6    | Natuur   |
|----------|----------|
|   ...    |    ...   |
|----------|----------|


Nog beter is het om met een koppeltabel of een ENUM veld te werken.

Verwijderd

Topicstarter
Daar zat ik ook al aan te denken, ik moet dus voor elk type foto een aparte tabel aanmaken?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Dit ontwerp is inderdaad heel erg brak. Neem dan inderdaad een enum, of zoek op wat databasenormalisatie inhoudt en pas het dan toe. Dit ziet er heel erg fout uit. :P
Verwijderd schreef op woensdag 22 februari 2006 @ 21:20:
Daar zat ik ook al aan te denken, ik moet dus voor elk type foto een aparte tabel aanmaken?
Nee, je zal een fototype-tabel moeten maken, en een tabel die je foto-tabel koppelt aan deze typen. Normalisatie dus. ;)

Of dus inderdaad de enum, met het nadeel dat je dan je tabeldefinitie moet wijzigen als je een nieuw type verzint.

[ Voor 58% gewijzigd door NMe op 22-02-2006 21:22 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ja, inderdaad, het is complete crap :P:+

Normaliseren :X Mijn MBO nachtmerrie komt weer naar boven :X Krijg er binnenkort les over, laatste keer dat ik het gebruikt heb is 5j geleden op MBO, de horror :X

Ach ja, het moet maar hè ;)
Pagina: 1