[PHP/MySQL] Update query probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
ik probeer in een tabel in mijn database hetvolgende te verwezelijken:

Ik heb een veld 'id' en een veld 'plaatje' , deze hebben beide een nummerieke waarde. Nu wil ik door middel van een update query het veld 'plaatje' ( in álle rows ) veranderen in: 'id'.jpg, daarbij is 'id' dus het nummer uit het 'id' veld.
Maar het wil echt niet lukken... ik hoop dat iemand mij kan helpen deze query te bouwen :)

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

update tabel set plaatje = functie_om_iets_char_te_maken(id) + '.jpg'

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Zal iets in de trant zijn van:
SQL:
1
Update images set plaatjeID = ID + 'jpg'

(Nee, zal hoogstwaarschijnlijk niet werken)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
justmental schreef op 27 juli 2003 @ 12:54:
update tabel set plaatje = functie_om_iets_char_te_maken(id) + '.jpg'
dan zou dit in principe moeten werken:

UPDATE `tabel` SET `plaatje`=`id` + '.jpg' ?

edit: en dat werkt dus niet :)

[ Voor 11% gewijzigd door J-rom op 27-07-2003 12:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Welke query heb je zelf al bedacht, en waarom werkte die niet? We moeten een uitgangspunt hebben om je te kunnen helpen, anders wordt het niets.

Tip: Zet 'id' in een variabele en pomp er '.jpg' achter, en gebruik gewoon 'UPDATE table SET plaatje='$var' WHERE id='$id'', of iets in die richting :)

Of bovenstaand, da's nog makkelijker B)

[ Voor 17% gewijzigd door Verwijderd op 27-07-2003 12:58 ]


Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
Verwijderd schreef op 27 July 2003 @ 12:57:
Welke query heb je zelf al bedacht, en waarom werkte die niet? We moeten een uitgangspunt hebben om je te kunnen helpen, anders wordt het niets.

Tip: Zet 'id' in een variabele en pomp er '.jpg' achter, en gebruik gewoon 'UPDATE table SET plaatje='$var' WHERE id='$id'', of iets in die richting :)
dat is een mogelijkheid, in de post hierboven staat een query die ik ook zelf bedacht had maar die werkte dus niet, en om handmatig in phpmyadmin 200 rows te vullen ;) Het moet toch in principe makkelijk kunnen:

UPDATE `nieuws` SET `plaatje`=`id` werkt wel: dan wordt veld: `plaatje` gelijk aan het veld `id` , dus waarom zou daar niets achter kunnen denkik dan....

Acties:
  • 0 Henk 'm!

Verwijderd

J-rom schreef op 27 July 2003 @ 12:59:
UPDATE `nieuws` SET `plaatje`=`id` werkt wel: dan wordt veld: `plaatje` gelijk aan het veld `id` , dus waarom zou daar niets achter kunnen denkik dan....
Mja, ik ben zelf niet echt bekend met dingen achter iets anders plakken, dus heb geen idee of, en zo ja hoe dat in z'n werk gaat :)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

"Het werkt niet is nogal vaag".

Zelfde principe als: "Mijn computer start niet op, wat is er mis mee?"

Oftewel een foutmelding zou misschien eventueel wel kunnen helpen, denk je niet?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Suggestie: `plaatje` is een integer-veld en geen tekstveld?

Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
Verwijderd schreef op 27 July 2003 @ 13:05:
Suggestie: `plaatje` is een integer-veld en geen tekstveld?
het is een textveld, maar ik heb een oplossing gevonden al is het wel via een omweg :)

PHP:
1
2
3
4
5
6
7
8
$q=mysql_query("SELECT * FROM `tabel`");
while ($r=mysql_fetch_array($q)) {
$id=$r['id'];
$jpg='.jpg'; 
$zomoetieworden=$id.$jpg;

mysql_query("UPDATE `tabel` SET `plaatje`='$zomoetieworden' WHERE `id`='$id'");
}


De vraag ging om het principe :) het móet toch op een andere manier kunnen naar mijn idee... :>

[ Voor 17% gewijzigd door J-rom op 27-07-2003 13:17 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In plaats van dat jullie es in de mysql-manual ontdekten dat mysql's concattenatie alleen met de functie 'concat' werkt...

dus:
UPDATE tabel SET tekstveld = CONCAT(waarde1, waarde2, ..., waardeN) WHERE ...

En dus specifiek:
UPDATE tabel SET plaatje = CONCAT(ID, '.jpg');

En trouwens, in andere databases zou de + ook niet werken... maar ||

Nog een btw:
Als je dit altijd zo nodig hebt, dus een plaatje is altijd ID + ".jpg", dan is het toch onzin dat op te slaan? Dan kan je dat net zo goed pas bij de select erachter plakken... Of zelfs pas in je php-code.

[ Voor 39% gewijzigd door ACM op 27-07-2003 13:27 ]


Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
ACM schreef op 27 July 2003 @ 13:17:
In plaats van dat jullie es in de mysql-manual ontdekten dat mysql's concattenatie alleen met de functie 'concat' werkt...

dus:
UPDATE tabel SET tekstveld = CONCAT(waarde1, waarde2, ..., waardeN) WHERE ...

En dus specifiek:
UPDATE tabel SET plaatje = CONCAT(ID, '.jpg');

En trouwens, in andere databases zou de + ook niet werken... maar ||
nou... dat is meer een kwestie van weten, die mysql manual is voor een leek niet altijd even makkelijk te doorzoeken, maar bedankt voor deze tip zal hem onthouden ;)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:26
ACM schreef op 27 July 2003 @ 13:17:
En trouwens, in andere databases zou de + ook niet werken... maar ||
In SQL Server wel geloof ik. Daar is de concat-operator het + teken.
In Oracle is het idd ||

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Even een vraag, waarom zou je het dubbel gaan opslaan?
doe dan bij de SELECT eventjes het beter verwerken, teminste als dat kan bij jou toepassing van het script.

na de mysql_fetch_array achtig iets als dit:
PHP:
1
echo $query['id'].".jpg";

scheelt weer database ruimte, dat maakt niet uit bij 10 inserts, maar bij 1k of meer wel, is toch ongeveer 2,7kb ruimte in je tabel die je kan uitsparen hierdoor(bij 1k rows).

Acties:
  • 0 Henk 'm!

  • J-rom
  • Registratie: December 2001
  • Laatst online: 29-08-2024
Verwijderd schreef op 27 July 2003 @ 13:24:
Even een vraag, waarom zou je het dubbel gaan opslaan?
doe dan bij de SELECT eventjes het beter verwerken, teminste als dat kan bij jou toepassing van het script.

na de mysql_fetch_array achtig iets als dit:
PHP:
1
echo $query['id'].".jpg";

scheelt weer database ruimte, dat maakt niet uit bij 10 inserts, maar bij 1k of meer wel, is toch ongeveer 2,7kb ruimte in je tabel die je kan uitsparen hierdoor(bij 1k rows).
nou, deze tabel is een kopie van de oude, afkomstig van de vorige versie van een site die ik maak, het betrefd plaatjes bij nieuwsberichten. In de oude versie kon er maximaal 1 plaatje per bericht, dus kon dat plaatje dezelfde waarde hebben als `id`.. dus id.jpg . Maar in de nieuwe versie kun je meerdere plaatjes per bericht hebben dus gaat dat niet meer op. snap jem :7
Pagina: 1