Neuer zufälliger Eintrag, wenn nicht schon vorhanden

  • Moin !

    Ich bin grad am PHP lernen und stehe nun vor folgendem Problem:
    Ich will einen "Planeten" bei der Anmeldung eines Users bei zufälligen Koordinaten erzeugen, wenn eben dort nicht schon einer ist. Leider funktioniert es nicht so ganz.
    Ich würde darauf wetten, dass es irgendwie an der Schleifen und If Geschichte liegt, kann aber keinen Fehler entdecken.
    Bekomme keinen Fehler - er scheint also irgendwie durch die Ifs zu kommen, aber eintragen tut er nix :/

    Vielen Dank schonmal für die Hilfe!



    Mfg N3mezis

  • Ich glaube nicht, dass die else richtig platziert ist.
    Gehe deinen Code nochmal durch und mach dir Gedanken darüber, wann die else aufgerufen wird.
    Ich glaube dann findst du den Fehler.

    Was mich aber noch wundert ist, dass er nichts einträgt. Wie lange ist denn die Laufzeit von deinem Script? Mehrere Sekunden?

    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  • Ja, das werde ich nochmal machen.

    Die Laufzeit liegt deutlich unter ner sec.

    Mfg N3m

  • sry 4 DP :oops:

    so, geht nu ^^. Muss wohl irgendwie an den "OFF"-Schalter an meinem Kopf gekommen sein :P

  • Ne, darf nicht.
    sonst würde ich ja "abkürzen". 1,2,3 ist was anderes als 1,2,4 z.b. :P

    oder meinst ne leere else?

  • Bzw. worin liegt dann der Sinn in der weiterin überprüfung, wenn du sowieso nur die erste koordinatstelle brauchst

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Ne, ich brauche doch alle. Darum hatte ich die else ja so "tief" drinne. Aber auch die neue lösung funktioniert nicht mehr, nix geändert und plötzlich gehts nimmer :/

    Mfg N3m

  • ich glaube du musst das etwas umbauen, du darfst das nicht verschachteln , sondern musst es nacheinander machen und wenn der Fall auftritt, dass die Koordinaten schon existieren eine Variable setzen, wenn die Variable .
    z.B.
    Fall1 $i =1;

    Fall2 $i +=1;


    Fall3 $i +=1;

    und dann if($i == 3) also koordinaten identisch, dann neu einfügen

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Ayyyye ^^

    genau der Gedanke kam mir auch grad. So, wie es imo ist kanns garnicht gehen :P

    dangö :P

  • hm, da ich mich nicht anmelden kann muss ich wohl oder übel andauernd DPs machen :D

    So, wie du es geschrieben hast gehts leider auch nicht.
    Stell dir vor es gibt 3 planeten:
    1,2,3
    1,3,2
    2,1,3

    Wäre der wert für die erste variable schon 2 :P

  • Problem ist, dass ich die nicht nacheinander vergleichen kann, da die x koodinate schon z.B. 10 mal vorkommt und nicht garantiert ist, dass die erste $x=xpos auch die gleichen $y=ypos usw. hat.

    müsste die db durchgehen und alle tripel mit dem zufälligen vergleichen :/

  • Mir ist gerade eine entzückende Idee gekommen:
    Du kannst doch einfach alle 3 Werte aus der Datenbank mit einer Abfrage rausholen.
    Dann vergleichst du mit in der while-Schleife immer wieder ob die 3 Variablen übereinstimmen.
    Falls ja, dann setzt du eine Variable auf false (dieser musst du vor der while true zuweisen).
    Wenn dann am Ende der while die Variable true ist, dann dürfte die Position noch frei sein.

    [EDIT]
    Jetzt fällt mir auch der Fehler auf den du gemacht hast. du hast die Varieblen nicht paarweise verglichen, sondern den X-Wert des ersten "Planeten" danach die Y-Werte aller "Planeten" usw.

    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  • sieht nun folgendermaßen aus:

    Allerdings gehts nicht :/ weiß nicht, wie ich das mit dem array machen soll :( liegt garantiert daran

    Mfg N3m

  • Ich würde es so schreiben:

    Code
    if ($row["xpos"] == $x && ...


    Denn ich kenne "->" nur von Objekten her. Kenne es aber nicht von Arrays.

    Es gibt zwei Regeln fuer Erfolg im Leben:
    1. Erzaehle den Leuten nie alles, was Du weisst ...

  • Jetzt gehts garnicht mehr :/ allerdings gibt er mir in der function keinen fehler, sondern in einer ganz anderen, die damit überhaupt nix zu tun hat (ist auch in ner anderen datei). Kann ich, weil sie in ner anderen Datei ist n Klammerfehler ausschließen ?


  • Seht ihr denn irgend einen Fehler im code?