[PHP/JS] Aantal vragen over autoresize, dropdown en uitlezen

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

  • VincentG
  • Registratie: Maart 2005
  • Laatst online: 19:14
Ik kom tot voorheen niet zo vaak op het forum, maar daar zal ongetwijfeld verandering in komen, aangezien ik gemerkt heb dat er wel wat ervaren mensen rondlopen.

Ik heb diverse vragen omtrend PHP (en MySQL) en JavaScript.
Heb ze even in 1 topic geplaatst omdat ik diverse aparte draadjes wat overbodig vond.

Ben redelijk bekend met PHP en MySQL, maar weet nog lang niet alles. Met JavaScript kan ik nog niet zo goed overweg, maar om me daar meer in te verdiepen wordt het al gauw na de zomervakantie ivm tijd. Ben bezig met een cms en hoe meer ik eraan werk, hoe meer ik dingen tegenkom die beter en gebruiksvriendelijker kunnen.

1: Toon formulier/X afhankelijk van dropdown-menu-keuze zonder submit-button.
De meest lastige vraag, waar ik niet uitkom, aangezien ik ook nog niet zo bekend ben met JS.
Ik wil dus starten met een dropdown-menu en een standaard formulier. Het dropdown-menu geeft opties als 'artikel', 'review', 'recensie', 'nieuws' ed. Wanneer een keuze is gemaakt wil ik dat de pagina zonder te refreshen aangepast wordt. Het formulier moet aangepast worden. Wanneer er de keuze is gemaakt voor review wil ik bijv. een paar extra velden bij het formulier en wanneer ik vervolgens voor nieuws kies dienen deze velden weer te verdwijnen.
Echter wil ik in deze formulier wel gewoon php kunnen gebruiken en niet dat alles in javascript format tussen de <head>-tags komt.
Hier heb ik een scriptje, waarbij het dropdown-princiepe goed werkt, enkel staan de resultaten (naam/leeftijd/tel) tussen de <head>-tags in het JS stukje en kan ik er zo niet lekker mee verder aan de slag.
Je zou het kunnen zien als wanneer je hier een reactie plaatst, boven het bericht een dropdownbox ziet met keuze uit '1 invoerveld' en '2 invoervelden' en als je voor 2 kiest, dat er een extra veld wordt getoond zonder de pagina te herversen of te moeten submitten (net als wanneer je op een smiley klikt, deze direct in het invoerveld wordt geplaatst)..

2: Headlines per dag weergeven/groeperen
Ik heb hier al het een en ander over gevonden, maar nog geen antwoord waarmee ik me compleet mee uit de voeten kan helpen.
Ik wil dus de laatste xx (bijv 20) headlines tonen, gegroepeerd bij dag, ala frontpage. Het mooiste zou zijn als dit eruit ziet als op IG.nl, waarbij datum er ook bij staat.
Mijn berichten staan in de database als (voorbeelden) cel 'datum1' 12-07-2005 22:48 en cel 'datum2' dinsdag 07 juli 2005 22:48:12.
Ik snap nog niet goed hoe je hiermee de headlines kan groeperen ala IG.nl.

3: Autoresize te grote afbeeldingen
Ik had vernomen dat er hier een mooi script stond maar kon hem net niet vinden. Het gaat er dus om dat te brede afbeeldingen worden geresized. Ik laat bij een huidig script een directory uitlezen en met dit script wil ik voorkomen dat de layout uitgerekt wordt.

Oh oh Mr. B, oh oh!


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Vraag 1
Je kunt met javascript elementen zichtbaar en onzichtbaar maken aan de hand van de css display property: element.style.display = geefWeer ? "block" : "none"; (je zou ook visibility kunnen gebruiken, alleen zorgt die er alleen voor dat het element niet meer zichtbaar is, hij staat er dab nog wel, hij neemt dus nog wel ruimte in beslag). Ik zie verder dat je al aardig uit de voeten kunt met JS, dus dit moet niet zo'n probleem zijn.

Vraag 2
Begrijp ik goed dat je 2 kolommen voor data hebt? Heb je dat echt nodig? Anders moet je eerst eens je database gaan normaliseren voordat je hier aan begint. Anders zou je eens kunnen kijken naar de GROUP BY clause. Daarmee kun je precies wat je wilt. Ook is ORDER BY dan handig.

Vraag 3
Dit is ook met JS vrij simpel te doen. Gewoon in het onload event van de pagina alle afbeeldingen opzoeken met document.getElementsByTagName('img'), en dan aan de hand van de clientWidth en clientHeight properties kijken of er een te groot is. Zo ja, dan resizen tot wat je wilt.

[ Voor 6% gewijzigd door Michali op 12-07-2005 23:40 ]

Noushka's Magnificent Dream | Unity


Verwijderd

VincentG schreef op dinsdag 12 juli 2005 @ 23:14:
1: Toon formulier/X afhankelijk van dropdown-menu-keuze zonder submit-button.
Wat je nu hebt is dat je steeds dezelfde div veranderd wanneer je op een knop met 'member#' drukt. Probeer eens mbv je js-functie visible ( en setstyle ) hetzelfde te doen, maar dan met verschillende divs. Dus wanneer je op member1 drukt, verschijnt de div van member1, druk je op member 2, verschijnt die van member2 etc. Door met de reset knop je unvisible functie meerdere keren aan te roepen kan je alles resetten.
edit - hetzelfde als wat michali zegt dus
2: Headlines per dag weergeven/groeperen
Ik raad je aan je te verdiepen in timestamps. Zoals ik het nu zie heb je je data als strings opgeslagen. Deze zijn niet gemakkelijk te verwerken. Een timestamp is gewoon een getal dat het aantal seconde sinds 1 januari 1970 aangeeft. Hierdoor kan php dus heel gemakkelijk met data in deze vorm rekenen.
http://nl3.php.net/manual/nl/ref.datetime.php
Hier staan alle php functies die te maken hebben met data. Ze gebruiken ( bijna allemaal ) timestamps.
Het enige probleem dat je kan krijgen is je huidige data omzetten naar timestamps. Dit is wel op te lossen door een klein scriptje te schrijven dat eerst uit je string de jaar / maand / dag etc haalt en die daarna mbv mktime() om te zetten in een timestamp.
3: Autoresize te grote afbeeldingen
Hier heb ik zelf ook geen kaas van gegeten :) , that is, als je met resizen in pixels bedoeld, zodat het bestand ook daadwerkelijk kleiner wordt en je het niet alleen het originele bestand ingekrompen weergeeft. ( in dat geval, kijk eens op verschillende fora, resize functies worden daar vaak gebruikt. )

[ Voor 15% gewijzigd door Verwijderd op 12-07-2005 23:46 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op dinsdag 12 juli 2005 @ 23:39:

Ik raad je aan je te verdiepen in timestamps. Zoals ik het nu zie heb je je data als strings opgeslagen. Deze zijn helemaal niet makkelijk te verwerken. Een timestamp is gewoon een getal dat het aantal seconde sinds 1 januari 1970 aangeeft. Hierdoor kan php dus heel gemakkelijk met data in deze vorm rekenen.
http://nl3.php.net/manual/nl/ref.datetime.php
Hier staan alle php functies die te maken hebben met data. Ze gebruiken ( bijna allemaal ) timestamps.
Als hij toch met MySQL bezig is kan hij denk ik nog beter gaan kijken naar het DATETIME data type. Er is ook nog een hele bak functies beschikbaar waar je dan goed mee uit de voeten kunt. (ook voor timestamps in php, maar die zijn niet zo direct in de queries te gebruiken, en daar valt veel performance winst te halen)

Noushka's Magnificent Dream | Unity


  • VincentG
  • Registratie: Maart 2005
  • Laatst online: 19:14
Het JS in de link dat ik poste is niet van mij, dat gaf iemand als voorbeeld, maar werkt nog niet geheel. ;)

Gebruik inderdaad 2 data-cellen. De ene keer wordt de kleine datum getoond en de andere keer de uitgebreide string. Kan nog niet zo goed met timestamp overweg, vandaar nog deze manier. :)
Timestamp is volgens mij inderdaad wel geschikt omdat je daar volgens mij alles van D Y h ed uit kan halen, toch?

Had laatst een query met group by, maar die gaf een error.

Even zoeken:

--
Hij geeft een error:

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 'GROUP BY datum1 LIMIT 0,5' at line 1

(datum is in mijn tabel datum1)

De code:

<?php
$get_query = mysql_query("SELECT datum1 FROM fp_nieuws ORDER BY nid DESC GROUP BY datum1 LIMIT 0," . $days) or die(mysql_error());
?>
--

Oh oh Mr. B, oh oh!


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik gok dat het om een verkeerde volgorde gaat. Dat zegt de manual iig. Probeer die GROUP BY eens direct na "FROM fp_nieuws" te zetten.

Noushka's Magnificent Dream | Unity


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Tsja, lastig topic dit. Ik ben bang dat ik het toch ga sluiten, ondanks de moeite die je duidelijk in je topicstart gestoken hebt. Kort samengevat, zijn dit je vragen:
  1. Debug mijn code/voeg wat aan mijn code toe.
  2. Ik zoek een script.
  3. Ik zoek een script.
Ik wil best geloven dat je dit niet zo bedoeld hebt, maar zo komt het over, en dus ben ik bang dat dit topic gaat overlopen van links naar andermans scriptjes en dingen die je ook makkelijk zelf uit kan vinden door de documentatie van MySQL en PHP door te nemen (vooral in het geval van je tweede vraag). Ik wil je dan ook graag verwijzen naar de documentatie van PHP en MySQL, en eventueel www.sqlcourse.com en www.sqlcourse2.com. Wat betreft je Javascript vragen: als je daar concrete problemen mee hebt, open dan een nieuw topic in Webdesign & Graphics, waar de Javascript-geniën zitten. Mocht je tegen concrete problemen aanlopen in je PHP/MySQL-code, dan kun je hier een nieuw topic openen, maar dan wel graag volgens de quickstart. Scriptrequests worden je hier in elk geval niet in dank afgenomen. :)

'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.

Pagina: 1

Dit topic is gesloten.