login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Verplaatsbare div's

Offline Raze - 25/03/2009 22:56
Avatar van RazePHP beginner Hallo,

ik heb dus een probleempje met verplaatsbare div's. Het hoort eigenlijk ook een beetje bij PHP (en MySQL).

Ik wil op mijn website dat de mensen die meehelpen in hun beheerspaneel een aantal div's kunnen "reorganiseren", verplaatsen dus.

Nu heb ik volgende code gebruikt om de div's te kunnen verplaatsen: link

even voor de duidelijkheid: op dit moment heb ik nog niet hetgene dat ik zou willen   hiermee bedoel ik dat ik dan graag de posities (x- en y-as) zou willen opslaan in een database... maar dat is even bijzaak, aangezien ik maar 1 div kan verplaatsen.

Ik heb dus dan maar wat records in een database gezet, en dan dacht ik eraan om via while telkens de volledige code "opnieuw te maken". Maar, nu kan ik alleen de laatste div (het laatste record) verplaatsen.

Wat ik dus eigenlijk zou willen zijn een aantal div's op een pagina, die de gebruiker kan verplaatsen en daarna de positie opslaat. Ik heb hier al op gegoogled (oa "div drag javascript php" etc.). Indien iemand met op weg kan helpen (ik zoek geen volledig script, ik zou er graag zelf aan "prutsen"  ) maar misschien is er wel iemand die tips heeft ivm de javascript-code, omdat ik hier niet veel van afweet.

Sorry voor het lange bericht.  

10 antwoorden

Gesponsorde links
Offline Sander1993 - 26/03/2009 07:09
Avatar van Sander1993 PHP interesse misschien met AJAX, als je m loslaat doe je GET naar bijv: opslaan.php?x=123&y=134
dus naar de coördinaten, en die sla je dan op.
Offline Raze - 26/03/2009 17:36 (laatste wijziging 26/03/2009 20:24)
Avatar van Raze PHP beginner idd dat is idd een goed idee ik ga dat proberen te verwezenlijken  

moet er wel even bijzeggen dat ik géén held ben in AJAX dus indien er nog mensen zijn die me op weg kunnen helpen (of misschien nog een andere oplossing weten) --> let me know!  

EDIT: ik ben dus begonnen met AJAX en PHP en om te proberen ben ik begonnen met (volgens mij) iets simpels. Toch werkt dit niet:

AJAX-code:
  1. <script type="text/javascript">
  2.  
  3. function createRequestObject() {
  4.  
  5. var req;
  6.  
  7. if(window.XMLHttpRequest){
  8. req = new XMLHttpRequest();
  9. } else if(window.ActiveXObject) {
  10. req = new ActiveXObject("Microsoft.XMLHTTP");
  11. } else {
  12. alert('Problem creating the XMLHttpRequest object');
  13. }
  14.  
  15. return req;
  16.  
  17. }
  18. var http = createRequestObject();
  19. function sendRequestUpdate(waarde) {
  20.  
  21. http.open('get', 'script_test_drag_data.php?id=1&x='+waarde);
  22. http.onreadystatechange = handleResponseUpdate;
  23. http.send(null);
  24.  
  25. }
  26. </script>

en de PHP-code (op script_test_drag_data.php):
  1. <?php
  2. mysql_connect("localhost", "root", "");
  3. mysql_select_db("test");
  4.  
  5. $var_x = $_GET['x'];
  6. $var_id = $_GET['id'];
  7. $query="UPDATE vartest SET x = '".$var_x."' WHERE id =".$var_id;
  8. mysql_query($query) or die (mysql_error());
  9. ?>


Daarnaast heb ik nog een vraag over de code:
ik zou graag 2 variabelen meesturen, die uit aparte velden komen.
Ik weet dat ik dan iets moet aanpassen in de volgende lijn:
  1. http.open('get', 'script_test_drag_data.php?id=1&x='+waarde);

Wat ik moet aanpassen/hoe ik het moet aanpassen, weet ik niet...

iemand een idee?
Offline Sander1993 - 26/03/2009 21:27
Avatar van Sander1993 PHP interesse gewoon 2 parameters:
  1. <script type="text/javascript">
  2.  
  3. function createRequestObject() {
  4.  
  5. var req;
  6.  
  7. if(window.XMLHttpRequest){
  8. req = new XMLHttpRequest();
  9. } else if(window.ActiveXObject) {
  10. req = new ActiveXObject("Microsoft.XMLHTTP");
  11. } else {
  12. alert('Problem creating the XMLHttpRequest object');
  13. }
  14.  
  15. return req;
  16.  
  17. }
  18. var http = createRequestObject();
  19. function sendRequestUpdate(waardeX,waardeY) {
  20.  
  21. http.open('get', 'script_test_drag_data.php?id=1&x='+waardeX+'&y='+waardeY);
  22. http.onreadystatechange = handleResponseUpdate;
  23. http.send(null);
  24.  
  25. }
  26. </script>
Offline Raze - 27/03/2009 10:23
Avatar van Raze PHP beginner ok, maar het werkt nog steeds niet (onderaan nog steeds "Fout op de pagina"), terwijl het script dat ik uit de tutorial van AJAX livesearch ook hebt geprobeerd, en letterlijk gekopieerd heb, wel werkt.
Offline marten - 27/03/2009 10:24
Avatar van marten Beheerder Heb je een online voorbeeld? Kan ik ff kijken waar de fout weg komt.
Offline Raze - 27/03/2009 10:27 (laatste wijziging 27/03/2009 10:46)
Avatar van Raze PHP beginner ok zal het heel even online zetten...

ok heb het online gezet: http://netraze.phpnet.us/script_test_drag.php

wel 1 opmerking: de div is verplaatsbaar, maar wel maar 1 keer   op mijn localhost kan ik heb blijvend verslepen.

Ik gebruik scriptalusous met prototype JS library voor het verslepen van de div.

EDIT 2: er zat een klein foutje in de php-code (had de verkeerde database geselecteerd), maar dat is nu opgelost  

er staan dus ook 2 invoervelden, de linkse voor ID en de rechtse voor X, en wat ik zou willen is dus dat wanneer ik daar 2 waarden invoer, onmiddelijk dit geupdate wordt in de database, zonder dat ik daarvoor op "submit" ofzo moet klikken.
Offline marten - 27/03/2009 10:51
Avatar van marten Beheerder Ik zie dat je de functie handleResponseUpdate nog nergens hebt gedefinieerd?

Deze roep je wel aan namelijk.
Offline Raze - 27/03/2009 10:58 (laatste wijziging 27/03/2009 11:01)
Avatar van Raze PHP beginner ok... maar hoe doe ik dat juist?  
Moet ik dan een lijntje code gelijk zoiets invoegen ergens:
var http = createRequestUpdate();

en vooral, waar moet ik het dan invoegen (bovenaan het script of net boven de functie sendRequestUdate)?

EDIT: misschien een idiote vraag, maar, is het wel mogelijk om via AJAX zo'n update te doen? De meeste tutorials en scripts die ik vindt (via google oa), gaan allemaal over data versturen en data terugkrijgen, maar ik wil enkel data versturen.
Offline marten - 27/03/2009 11:00
Avatar van marten Beheerder Ik las dat je het live zoekveld script had bekeken. Hier staat wel in hoe je het moet plaatsen 
Offline Raze - 27/03/2009 11:06 (laatste wijziging 27/03/2009 14:44)
Avatar van Raze PHP beginner haha, idd marten, er komt schot in de zaak 

wanneer ik dus nu eerst een id ingeef en dan de nieuwe waarde, en ik bekijk dan mijn tabel, dan zie ik "undefined" staan bij de id die ik wou wijzigen.

ik ben dus toch op de goede weg (dakzij SiMa, offcourse  )

EDIT: persoonlijk denk ik dat mijn fout ergens zit in het stukje waar ik 2 variabelen wil meesturen (bij het livesearch script wordt namelijk maar 1 waarde meegestuurd).

maar... ik kan mijn fout niet vinden  

EDIT 2: ik denk dus dat de fout in één van de volgende lijnen zit:
  1. function sendRequest(waardeID,waardeX) {
  2.  
  3. http.open('get', 'script_test_drag_data.php?id='+waardeID+'&x='+waardeX);
  4. http.send(null);
  5.  
  6. }

of
  1. <input type="text" size="50" name="id" id="waardeID" onKeyUp="sendRequest(this.value)" />
  2. <input type="text" size="50" name="x" id="waardeX" onKeyUp="sendRequest(this.value)" />


want wanneer ik een id ingeef, wordt die bijbehorende waarde wel aangepast, maar naar "UNDEFINED". Dus wanneer ik bv id=4 en x=5 in de desbetreffende zoekvelden ingeef, wordt in de database de inhoud veranderd waar id=4 naar x=UNDEFINED.
-------------------------------------------------------------
EDIT 3:
ik heb mijn code nu aangepast naar hetvolgende:
  1. <!-- ...AJAX code...
  2. --!>
  3. var http = createRequestObject();
  4.  
  5. function sendRequest() {
  6. var t_ID = document.getElementById('id').value;
  7. var t_X = document.getElementById('posX').value;
  8. var t_Y = document.getElementById('posY').value;
  9. http.open('get', 'script_test_drag_data.php?id='+t_ID+'&x='+t_X+'&y='t_Y;
  10. http.send(null);
  11.  
  12. }
  13.  
  14. <form action="/script_test_drag.php" method="post">
  15. <input type="text" size="50" name="id" id="id" />
  16. <input type="text" size="50" name="posX" id="posX" />
  17. <input type="text" size="50" name="posY" id="posY" />
  18. </form>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.258s