Wieder mal die guten alten arrays :D

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wieder mal die guten alten arrays :D

    array_search

    (PHP 4 >= 4.0.5, PHP 5)
    array_search -- Durchsucht ein Array nach einem Wert liefert bei Erfolg den Schlüssel
    Beschreibung
    mixed array_search ( mixed needle, array haystack [, bool strict])

    Diese Funktion durchsucht haystack nach needle und gibt bei Erfolg den Schlüssel zurück, andernfalls FALSE.

    Anmerkung: Vor PHP 4.2.0 gibt array_search() im Fehlerfall NULL statt FALSE zurück.

    Ist der optionale dritte Parameter strict auf TRUE gesetzt, prüft array_search() auch die Typen von needle in haystack.
    joa ....das sagt php.net zu dieser Funktion....dann müsste doch eigentlich bei folgendem code die 2 zurückgegeben werden:

    PHP-Code:
    <?php
    $ipsausdatenbank 
    = array('2.2.3.2''2.4.5.6''5.5.3.2');

    $ipdesusers'5.5.3.2';

    $ergebnis array_search($ip, array($ipsausdatenbank), $strict=true);
    ?>
    oder nicht?
    wenn mein code stimmt, wie könnte ich den index(in diesem Fall 2) ausgeben?
    wenn mein code schwachsinn ist, bitte um richtigstellung...

  • #2
    1. $ip ist was anderes als $ipdesusers
    2. array($ipsausdatenbank) ist schwachsinn, $ipsausdatenbank ist doch schon ein array
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Re: Wieder mal die guten alten arrays

      Original geschrieben von schnidelwutz
      PHP-Code:
      <?php
      $ipsausdatenbank 
      = array('2.2.3.2''2.4.5.6''5.5.3.2');

      $ipdesusers'5.5.3.2';

      $ergebnis array_search($ip, array($ipsausdatenbank), $strict=true);
      ?>
      Naja, wenn du nicht unterschiedliche Variablennamen benutzen würdest,
      dann sähe es gar nicht mal schlecht aus...
      PHP-Code:
      $ip vs$ipdesusers 
      Aus was für einer DB kommen denn die Daten? Wenn es MySQL o.ä. ist,
      dann gäbe es wohl einfachere Methoden.
      EDIT:
      zu spät...

      Kommentar


      • #4
        die definition von $ipausdatenbank hab ich nur testweise gemacht.
        und wegen den andern variablen-namen --> ups hab nur mal n bisschen brainstorming gemacht.
        es ist mir schon klar dass $ipausdatenbank n array ist ^^
        @heini: jup is ne mysql--> aber wie einfacher?
        ich will nur sehen, ob die ip dieses users schon in der db vorhanden ist, und dazu brauch ich eig. nur den wert true oder false ^^

        Kommentar


        • #5
          SELECT ip
          FROM tabelle
          WHERE ip = '1.2.3.4'
          LIMIT 1

          und dann mysql_num_rows z. b.
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            ...hmmm....*michfragwarumichnichtselberdraufgekommenbin*....

            EDIT: Achja jetz fällts mir wieder ein ^^: das geht gar nich, weil das muss ich aus nem array auslesen: ich hab die tabelle cd-kritiken mit den spalten: text, ip bewertung(vereinfacht)
            jetz darf natürlich jeder user nur einmal bewerten, deshalb die ip-sperre. und die ips speichere ich durch ein ; getrennt in der tabelle: ip1;ip2;... dann mach ich da per implode nen schönes array draus und da geh ich dann über die schleife durch, ob die ip schon drinsteht
            hoffe das war verständlich ^^

            NOCHMAEDIT: ich hab den schnipsel jetz so :
            PHP-Code:
            <?php
            error_reporting
            (E_ALL);
            $ipsausdatenbank = array('2.2.3.2''2.4.5.6''5.5.3.2');

            $ipdesusers'52.23.332.23';

            $ergebniss array_search($ipdesusers, array($ipsausdatenbank), $strict=true);

            if(
            $ergebniss "FALSE"){
            echo 
            "der user darf voten";
            }
            else{
            echo 
            "der user darf nicht voten";
            }
            ?>
            und jetz wird auch "der user darf voten" ausgegeben....das problem ist nur, wenn die ip schon im array existiert, wird trotzdem "der user darf voten" ausgegeben anstatt,"der user darf nicht voten"
            Zuletzt geändert von schnidelwutz; 03.01.2005, 14:54.

            Kommentar


            • #7
              Und du bist sicher, dass du dir genug Gedanken über DB-Design gemacht hast?
              Würde ja eine zusätzliche Tabelle anlegen, in die dann jede Bewertung
              geschrieben wird: Bewertung, IP, Datum o.ä. ...

              Ist IMO auf jeden Fall performanter als eine Zelle, die du in ein Array schreibst.

              Kommentar


              • #8
                Und du bist sicher, dass du dir genug Gedanken über DB-Design gemacht hast?
                ja glaub ich schon


                Würde ja eine zusätzliche Tabelle anlegen, in die dann jede Bewertung
                geschrieben wird: Bewertung, IP, Datum o.ä. ...
                äääm...werd ich eher nicht machen, da die bewertungen auch dynamisch sind, heißt: du kommst auf anzeige.php?id=irgendwas und bekommst je nach id den inhalt serviert. in diesem inhalt ist auch die bewertung sowie eine zeichenkette mit den ips aller user, die schon gevotet haben. und wenn ich für jede bewertung( was mit der zeit einige hundert werden dürften) nen eigenen datensatz anlegen muss, wird das spätestens dann doof, wenn manche artikel wieder gelöscht werden
                Zuletzt geändert von schnidelwutz; 03.01.2005, 15:01.

                Kommentar


                • #9
                  Original geschrieben von schnidelwutz
                  und wenn ich für jede bewertung( was mit der zeit einige hundert werden dürften) nen eigenen datensatz anlegen muss, wird das spätestens dann doof, wenn manche artikel wieder gelöscht werden
                  eigentlich nicht, aber es ist dein system

                  warum suchst du denn nicht mit LIKE nach der ip?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Original geschrieben von mrhappiness
                    warum suchst du denn nicht mit LIKE nach der ip? [/B]
                    hey cool danke ^^

                    Kommentar


                    • #11
                      wobei ich mir doch lieber gedanken über das datenmodell machen würde...

                      kann da jeder bewerten?
                      dann schreibe ich dir nämlich irgendeinen mist als bewertung rein und wünsche dir viel spaß beim editieren der beurteilung(en)
                      oder beim löschen
                      oder beim nicht löschen aber auch nicht anzeigen
                      oder oder oder
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        NEIN es kann nicht jeder schreiben ^^ es gibt die "Kritik", die die Redakteure schreiben, und die Bewertung, welche die User abgeben(1-5) damit man ungefähr weiß, ob sie die cd lohnt.
                        die funktionsweise meiner ip-sperre glaub ich ja nun zu haben, aber irgendwo muss ich da noch nen wurm drinhaben...
                        wenn ich die zeile erweitern will, schreibt er nur die "neue" ip rein und die alte wird wieder rausgelöscht...


                        PHP-Code:
                        <?php
                        require '../smarty/libs/Smarty.class.php';
                        $smarty = new Smarty;
                        include(
                        'sqlopen.php');

                        $userip $_SERVER['REMOTE_ADDR'];
                        $ipchecksql "SELECT ips FROM muak_cds WHERE id = '$id' AND ips LIKE '$userip' ";
                        $ipcheckresult mysql_query($ipchecksql);
                        $hatusergevotet mysql_num_rows($ipcheckresult);

                        if(isset(
                        $vote) | $hatusergevotet ){

                        $getoldbewertungsql "SELECT * FROM muak_news WHERE id = '$id' ";
                        $getoldbewertungresult mysql_query($getoldbewertungsql);
                        $erg mysql_fetch_array($getoldbewertungresult);

                        $ips $erg['ips'];
                        $altewertung $erg['bewertung'];
                        $summevotes $erg['summevotes'];
                        $votesgesamt $erg['votesgesamt'];
                        $newips $ips.$userip;
                        $newbewertung = ($summevotes $vote)/($votesgesamt 1);
                        $newsummevotes $erg['summevotes'] + $vote;
                        $newvotesgesamt $erg['votesgesamt'] + 1;

                        $updatequery "UPDATE muak_cds SET bewertung = '$newbewertung', ips = '$newips',
                         summevotes = '
                        $newsummevotes', votesgesamt = '$newvotesgesamt' WHERE id = '$id'";
                        $updateresult mysql_query($updatequery);

                        $smarty->assign('infotext''Deine Bewertung wurde erfolgreich gezählt!');

                        $smarty->display('cd_kritik.tpl');
                        }
                        else
                        echo 
                        "Du hast was schon gevoted!!";

                        ?>
                        ich hoffe, jemand kann mir helfen ^^
                        Zuletzt geändert von schnidelwutz; 04.01.2005, 14:00.

                        Kommentar


                        • #13
                          linefeed-o-phobia = panische angst vor zeilenumbrüchen

                          Kommentar


                          • #14
                            1. zeilen umbrechen
                            2. abfragen mit echo ausgeben
                            3. inhalt relevanter variablen ausgeben
                            4. ausgaben anschauen
                            5. versuchen zu verstehen
                            6. wenn's nicht klappt: posten
                            Und ganz wichtig: Reihenfolge der Punkte beachten
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              werd ich ma machen

                              Kommentar

                              Lädt...
                              X