abonnement Unibet Coolblue Bitvavo
pi_32903291
quote:
Op woensdag 7 december 2005 21:45 schreef JeRa het volgende:
Je mag kolomnamen niet met singlequotes omvatten, dat zul je zonder moeten doen of met backticks (`), die zit links van je niet-keypad '1'-knop op je toetsenbord.

Overigens wordt het over het algemeen wel gewaardeerd als je bij iets dat 'niet werkt' een foutmelding levert dan kunnen we meestal wat sneller zien waar de fout zit.
Thnx.
  FOK!-Schrikkelbaas woensdag 7 december 2005 @ 22:43:59 #92
1972 Swetsenegger
Egocentrische Narcist
pi_32904706
quote:
Op woensdag 7 december 2005 19:30 schreef SuperRembo het volgende:
Dan zal je met een XMLHttpRequest moeten kijken of je een confirm moet tonen.
Hmz...., ja dat kan werken.
Client side checken of er relaties zijn.

-edit- alleen heb ik tot nu toe alleen maar een serverside txt file via xmlhttprequest aangesproken. Hoe ik de database moet benaderen is me nog even een raadsel
pi_32905351
Een XMLHttpRequest is voor php een request (get of post) als alle andere.
Je haalt je wel flink wat op de hals, en dat alleen om een confirm over te kunnen slaan.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_32905669
quote:
Op woensdag 7 december 2005 23:03 schreef SuperRembo het volgende:
Een XMLHttpRequest is voor php een request (get of post) als alle andere.
Je haalt je wel flink wat op de hals, en dat alleen om een confirm over te kunnen slaan.
Inderdaad. Waarom vraag je niet standaard om een confirm (je verwijdert iets!)?

[ Bericht 0% gewijzigd door JeRa op 07-12-2005 23:20:06 ]
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 08:21:50 #95
1972 Swetsenegger
Egocentrische Narcist
pi_32911091
quote:
Op woensdag 7 december 2005 23:13 schreef JeRa het volgende:

[..]

Inderdaad. Waarom vraag je niet standaard om een confirm (je verwijdert iets!)?
Het gaat om een menu item. En ik wil eigenlijk een EXTRA warning geven wanneer er aan dat menu item produkten gekoppeld zijn.

Maar het is inderdaad een hoop moeite voor een extra warning. En in principe is het ergste wat er kan gebeuren dat je via het menu niet meer bij een aantal produkten kan komen. Die moet je dan in het CMS eerst aan een andere menu item koppelen.

Ik ga er nog eens goed over nadenken
pi_32912675
quote:
Op woensdag 7 december 2005 21:33 schreef JeRa het volgende:

[..]

Tja, of een mooi plaatje, of een lelijke animatie. Denk niet dat je het heel gemakkelijk kunt oplossen, hoewel er misschien wel ergens implementaties van een gif-resizer te vinden zijn
Dit is dus nog vrij moeilijk te vinden, wel genoeg mensen die met hetzelfde zitten

maar fok kan het ook, dus waarom wij niet
pi_32912858
quote:
Op donderdag 8 december 2005 08:21 schreef Swetsenegger het volgende:

[..]

Maar het is inderdaad een hoop moeite voor een extra warning. En in principe is het ergste wat er kan gebeuren dat je via het menu niet meer bij een aantal produkten kan komen. Die moet je dan in het CMS eerst aan een andere menu item koppelen.
Ik zou dát als oplossing nemen met eventueel een extra melding ná het verwijderen in de trant van 'Het door u zojuist verwijderde menu-item bevatte subitems die nu niet meer gekoppeld zijn'.

Een alternatief is om alle subitems onder de parent van het zojuist verwijderde item te hangen, maar dit is niet professioneel op een live site en moet je alleen doen als je het menu naar hartelust kunt wijzigen zónder dat dit effect heeft op het 'echte' menu.
pi_32912872
quote:
Op donderdag 8 december 2005 10:15 schreef Darkomen het volgende:

[..]

maar fok kan het ook, dus waarom wij niet
Kan fok het ook?
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 11:27:50 #99
1972 Swetsenegger
Egocentrische Narcist
pi_32914048
quote:
Op donderdag 8 december 2005 10:27 schreef JeRa het volgende:

[..]

Ik zou dát als oplossing nemen met eventueel een extra melding ná het verwijderen in de trant van 'Het door u zojuist verwijderde menu-item bevatte subitems die nu niet meer gekoppeld zijn'.
Dat is wel een mooie oplossing inderdaad.

Het verwijderen op zich kan geen kwaad, het is slechts ter informatie dat de beheerder er rekening mee houdt dat er op dat moment produkten niet gekoppeld zijn.
quote:
Een alternatief is om alle subitems onder de parent van het zojuist verwijderde item te hangen, maar dit is niet professioneel op een live site en moet je alleen doen als je het menu naar hartelust kunt wijzigen zónder dat dit effect heeft op het 'echte' menu.
Sowieso is het geen risico voor het menu. Parents kunnen niet verwijderd worden, alleen childeren/leafenodes. Alleen het diepste level dus.
pi_32915304
quote:
Op donderdag 8 december 2005 10:15 schreef Darkomen het volgende:
[..]
maar fok kan het ook, dus waarom wij niet
Als je de usericons op de FP bedoelt, die zijn "geresized" met width="30" height="30".
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_32916628
Bedoel die hier op het forum, maar daar is het vast hetzelfde :$
pi_32916998
quote:
Op donderdag 8 december 2005 13:22 schreef Darkomen het volgende:
Bedoel die hier op het forum, maar daar is het vast hetzelfde :$
1) Ofwel bedoel je de iconmanager, dus dat je GIF-afbeeldingen kunt uploaden en als vaste usericon kunt gebruiken. Voor zover ik weet kan die geen GIF-animaties resizen.
2) Ófwel bedoel je de webicons, die worden door de browser geresized naar 60x60 en zien er derhalve dus ook niet uit.
pi_32917375
Het laatste dus
pi_32921633
Luitjes..

1
2
3
4
5
6
7
8
9
10
11
      Tree[0]  = "1|0|Page 1|#";
      Tree[1]    = "2|1|Page 1.1|#";
      Tree[2]  = "3|1|Page 1.2|#";
      Tree[3]  = "4|3|Page 1.2.1|#";
      Tree[4]  = "5|1|Page 1.3|#";
      Tree[5]  = "6|2|Page 1.1.1|#";
      Tree[6]  = "7|6|Page 1.1.1.1|#";
      Tree[7]  = "8|6|Page 1.1.1.2|#";
      Tree[8]  = "9|1|Page 1.4|#";
      Tree[9]  = "10|9|Page 1.4.1|#";
      Tree[10] = "11|0|Page 2|#";


dit is wat ik wil crearen met een tree loper echter krijg ik het niet goed voor elkaar en krijg steeds 1|1 1|2 etc

vb

1
2
3
4
5
6
7
1|1|WINDOWS|C://WINDOWS
1|1|system32|C://WINDOWS/system32
1|1|config|C://WINDOWS/system32/config
1|1|systemprofile|C://WINDOWS/system32/config/systemprofile
1|1|Local Settings|C://WINDOWS/system32/config/systemprofile/Local Settings
1|1|Temp|C://WINDOWS/system32/config/systemprofile/Local Settings/Temp
1|2|Geschiedenis|C://WINDOWS/system32/config/systemprofile/Local Settings/Geschiedenis


zoals je ziet gaat het ergens goed fout, echter zie ik niet waar!?

de code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?

error_reporting(E_ALL);

function scantree($start, $fDb = 0, $pathCount = 0)
{
//    global $fDb;
    
    $fDb++;
    
    $pathcount = 0;
    
    $dir = opendir($start);
    
    while (($file = readdir($dir)) != false)
    {
        if (is_dir($start . "/" . $file) && $file != "." && $file != "..")
        {
            $pathcount++;
            
            echo 'test[' . $fDb . '] = ' . $fDb + 1 . '|' . $pathcount . '|' . $file . '|' . $start . "/" . $file . CHR(13) . CHR(10);

            scantree($start . "/" . $file, $fDb, $pathCount);
            
        }
    }
}

$fDb = -1;

if (isSet($_GET['drive']) && substr($_GET['drive'], 1,1) == ":")
{
    scantree($_GET['drive'] . "/");// the tree looping can begin
}
else
{
    echo 'no ow no';
}


allemaal weer uit het hoofd, maar goed... iemand een suggestie!?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_32922223
quote:
Op donderdag 8 december 2005 16:45 schreef Chandler het volgende:
Luitjes..
[ code verwijderd ]

dit is wat ik wil crearen met een tree loper echter krijg ik het niet goed voor elkaar en krijg steeds 1|1 1|2 etc

vb
[ code verwijderd ]

zoals je ziet gaat het ergens goed fout, echter zie ik niet waar!?

de code
[ code verwijderd ]

allemaal weer uit het hoofd, maar goed... iemand een suggestie!?
Regel 23. Je gebruikt de functie scantree in de functie scantree?
pi_32922752
dat kan toch, dat is juist nodig voor de diepgang
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_32924446
quote:
Op donderdag 8 december 2005 17:30 schreef Chandler het volgende:
dat kan toch, dat is juist nodig voor de diepgang
Ik snap je voorbeeld niet dat het eerste getal telkens opgehoogd dient te worden snap ik (heb je eigenlijk niet eens nodig maar toch), maar wat doet het tweede getal?
  donderdag 8 december 2005 @ 18:58:50 #108
32768 DionysuZ
Respect my authority!
pi_32924763
wat lelijk dat hoofdlettergebruik ook :S $pathcount en $pathCount. Het werkt ZEER verwarrend. En zo geef je als je recursief scantree weer aanroept $pathCount en niet $pathcount, degene die opgehoogd wordt.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 19:26:40 #109
1972 Swetsenegger
Egocentrische Narcist
pi_32925447
Ik ben toch maar voor de xmlhttprequest gegaan .
En hij werkt. eigenlijk zelfs verdomd simpel

-edit- iets te voorbarig, ik krijg mijn parameters om daadwerkelijk te deleten niet mee .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(!empty($_GET['right'])){
   if(is_numeric($_GET['id']) && is_numeric($_GET['right'])){
       deleteLeaf($_GET['right'],$_GET['id']);
   }
}

function deleteLeaf($right,$id){
$query="DELETE FROM menu WHERE id=".$id." LIMIT 1";
mysql_query($query);
$query="UPDATE menu SET rgt=rgt-2 WHERE rgt>".$right;
mysql_query($query);
$query="UPDATE menu SET lft=lft-2 WHERE lft>".$right;
mysql_query($query);
header("location: ".$_SERVER['PHP_SELF']);
}

Voor de php'ers, dit is redelijk duidelijk

Nu het probleem. Aan dit menu zitten produkten gekoppeld. Wanneer iemand nu een menu-item delete, wil ik een waarschuwing geven indien er nog produkten gekoppeld zijn.
Dit werkt met een xmlhttprequest:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<script type="text/javascript">

var url = "checkProduct.php?id="; // The server-side script
var http = getHTTPObject();

function handleHttpResponse() {
    if (http.readyState == 4) {
    results = http.responseText;
        if(results!=0){
            if(confirm('Aan dit menu-item zijn produkten gekoppeld!\nIndien u dit menu-item verwijderd, moet u er rekening mee houden de produkten aan een ander menu-item te koppelen.\nMenu-item verwijderen?')){
                alert('verwijder');
            }
        }else{
            if(confirm('Weet u zeker dat u dit menu-item wilt verwijderen?')){
                alert('verwijderd')
            }
        }
    }
}

function checkProduct(id) {

    http.open("GET", url + escape(id), true);
    http.onreadystatechange = handleHttpResponse;
    http.send(null);
 }

function getHTTPObject() {

  var xmlhttp;

  /*@cc_on

  @if (@_jscript_version >= 5)

    try {

      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e) {

      try {

        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (E) {

        xmlhttp = false;

      }

    }

  @else

  xmlhttp = false;

  @end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {

    try {

      xmlhttp = new XMLHttpRequest();

    } catch (e) {

      xmlhttp = false;

    }

  }

  return xmlhttp;

}

</script>


en de link welke het hele spul in gang zet

1[<a class="admin2" href="#" onClick="checkProduct('.$row['id'].')">delete</a>]

[/code]

Ok, de de link roept de javascript functie checkProduct aan, welke via een xmlhttprequest het resultaat van checkProduct.php terugkrijgt (zonder refresh dus). Uiteraard is checkProduct.php niets anders dan een COUNT.

Bovenstaand werkt, maar uiteraard wil ik de alert('verwijderd') vervangen in een window.location="pagina.php?id="+id+"&right="+right;
De parameters id en right moet ik dus van checkProduct door geven aan handleHttpResponse. Maar dit

1
2
3
4
5
6
function checkProduct(id) {

    http.open("GET", url + escape(id), true);
    http.onreadystatechange = handleHttpResponse(id);
    http.send(null);
 }


zorgt ervoor dat ik uberhaupt niet meer in handleHttpResponse terecht kom
Mijn javascript kennis schiet hier te kort.

[ Bericht 63% gewijzigd door Swetsenegger op 08-12-2005 20:01:46 ]
pi_32926774
@chandler:
Zet eens haakje om $fDb + 1

Lang leve loose typed talen
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  donderdag 8 december 2005 @ 20:27:44 #111
32768 DionysuZ
Respect my authority!
pi_32927025
quote:
Op donderdag 8 december 2005 20:19 schreef SuperRembo het volgende:
@chandler:
Zet eens haakje om $fDb + 1

Lang leve loose typed talen
hehehe het heeft door zijn simpliciteit natuurlijk ook veel voordelen.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_32927419
@swetsenegger:
quote:
http.onreadystatechange = handleHttpResponse;
Zorgt er voor dat http.onreadystatechange gelijk wordt aan de functie handleHttpResponse.
quote:
http.onreadystatechange = handleHttpResponse(id);
Zorgt er voor dat http.onreadystatechange gelijk wordt aan het resultaat van het uitvoeren van handleHttpResponse(id).

Dit kan je op verschillende manieren oplossen.
Met een closure:
1
2
3
4
5
6
7
8
9
function checkProduct(id) {
    http.open("GET", url + escape(id), true);
    http.onreadystatechange = function() {
       if (http.readyState == 4) {
          checkProductCallback(id);
       }
    }
    http.send(null);
}


Doordat de functie binnen de functie checkProduct wordt gedefinieerd, blijft de scope van checkProduct behouden. Daardoor is id binnen de onreadystatechange functie nog bekend op het moment dat die aangeroepen wordt.

Een andere oplossing is dat je niet alleen het aantal producten terug stuurt, maar ook de id.


Internet Explorer heeft trouwens een vervelende bug: het resultaat van de httprequest wordt gecached. Als de url van twee requests gelijk zijn, dan wordt geen cal naar de server gedaan, maar krijg je gewoon de eerder opgehaalde resultaten terug. Dit is gelukkig simpel te voorkomen door een random string aan de url toe te voegen.

Dit is trouwens allemaal clientside scripting, dus meer iets voor het javascript topic.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 20:40:38 #113
1972 Swetsenegger
Egocentrische Narcist
pi_32927420
Probleem opgelost.

1
2
3
4
5
6
function checkProduct(id) {
    id=id; //Dit maakt de var id global
    http.open("GET", url + escape(id), true);
    http.onreadystatechange = handleHttpResponse(id);
    http.send(null);
 } 
pi_32927465
Dit lijkt me geen handige oplossing
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 20:44:57 #115
1972 Swetsenegger
Egocentrische Narcist
pi_32927544
quote:
Op donderdag 8 december 2005 20:40 schreef SuperRembo het volgende:
@swetsenegger:
[..]

Zorgt er voor dat http.onreadystatechange gelijk wordt aan de functie handleHttpResponse.
[..]

Zorgt er voor dat http.onreadystatechange gelijk wordt aan het resultaat van het uitvoeren van handleHttpResponse(id).

Dit kan je op verschillende manieren oplossen.
Met een closure:
[ code verwijderd ]

Doordat de functie binnen de functie checkProduct wordt gedefinieerd, blijft de scope van checkProduct behouden. Daardoor is id binnen de onreadystatechange functie nog bekend op het moment dat die aangeroepen wordt.

Een andere oplossing is dat je niet alleen het aantal producten terug stuurt, maar ook de id.
Closure werkte ook, maar een aparte functie was even netter
quote:
Internet Explorer heeft trouwens een vervelende bug: het resultaat van de httprequest wordt gecached. Als de url van twee requests gelijk zijn, dan wordt geen cal naar de server gedaan, maar krijg je gewoon de eerder opgehaalde resultaten terug. Dit is gelukkig simpel te voorkomen door een random string aan de url toe te voegen.
Ah... dus wanneer ik delete.php?id=6 stuur en er voor kies NIET te deleten, kan hij de volgende keer abusievelijk zeggen dat er produkten aan 6 gekoppeld zitten wat niet het geval is? Cached hij in temp files?
quote:
Dit is trouwens allemaal clientside scripting, dus meer iets voor het javascript topic.
Klopt, maar het was gecombineerd door de xmlhttprequest. Ik heb 'm dus in beide topics gecrosspost
  donderdag 8 december 2005 @ 20:47:04 #116
37634 wobbel
Da WoBBeL King
pi_32927612
Hoe kijk of ik er wel écht een bestand wordt geupload bij een formulier met een file-field?

if($_FILES['Avatar']) is namelijk altijd positief, ook als ik geen enkel bestand invul.

Ik heb if($_FILES['Avatar']['tmp_name']) en name ook al gebruikt, maar dan kan ik bij het file-field ook wat random tekens invullen ipv een bestand, en dan zegt ie alsnog dat er wél een bestand is geupload.

Ik heb http://nl2.php.net/features.file-upload er al op nageslagen, maar het helpt me niet echt :s
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 20:48:16 #117
1972 Swetsenegger
Egocentrische Narcist
pi_32927655
quote:
Op donderdag 8 december 2005 20:42 schreef SuperRembo het volgende:
Dit lijkt me geen handige oplossing
wrom niet?

hij is trouwens wel net iets anders:
1
2
3
function checkProduct(rgt,menu) {
    id=menu; //var global maken
    right=rgt; //var global maken
  donderdag 8 december 2005 @ 20:49:11 #118
32768 DionysuZ
Respect my authority!
pi_32927685
if ($_FILES["Avatar"]["size"] > 0)
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  donderdag 8 december 2005 @ 20:50:21 #119
37634 wobbel
Da WoBBeL King
pi_32927724
quote:
Op donderdag 8 december 2005 20:49 schreef DionysuZ het volgende:
if ($_FILES["Avatar"]["size"] > 0)
Dat vind ik zo'n kromme oplossing, maar kan het écht niet anders?
  FOK!-Schrikkelbaas donderdag 8 december 2005 @ 20:52:22 #120
1972 Swetsenegger
Egocentrische Narcist
pi_32927780
quote:
Op donderdag 8 december 2005 20:47 schreef wobbel het volgende:
Hoe kijk of ik er wel écht een bestand wordt geupload bij een formulier met een file-field?

if($_FILES['Avatar']) is namelijk altijd positief, ook als ik geen enkel bestand invul.

Ik heb if($_FILES['Avatar']['tmp_name']) en name ook al gebruikt, maar dan kan ik bij het file-field ook wat random tekens invullen ipv een bestand, en dan zegt ie alsnog dat er wél een bestand is geupload.

Ik heb http://nl2.php.net/features.file-upload er al op nageslagen, maar het helpt me niet echt :s
if($_FILES['avatar']['tmp_name']!='') om te checken of er een bestandsnaam is ingevuld
if(preg_match("/\.(jpg)$/i", $_FILES['avatar']['name'])) om te checken of de geuploade file een jpg is (uiteraard aan te passen voor gif, etc)
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')