variablen übergabe in where klausel

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

  • variablen übergabe in where klausel

    hi ich hab da ein problem.
    ich hol mittels angeklickter checkbox daten aus ner tabelle.
    als value habe ich der checkbox die kundenID der tabelle angeben.
    nun will ich das er mir alle anzeigt welche die kundenID haben welche er durch die folgende foreach schleife rausholt

    so sieht der code aus

    PHP-Code:
    if ($auswahl  <>""

    {
      foreach(
    $_POST['auswahl'] as $value){
        
      }
    }

    $sql='SELECT * FROM Kunde where kundeID = .$value';
    $result mysql_query($sql) or die(mysql_error()); 
    ich glaub net das ich das so übergeben kann oder mit der where klausel.

    im endeffekt brauch ich eigentlich die daten welche in der vorherigen seite angelickt wurden... ich will am ende eine rechnung drucken für all die welche auf der vorherigen seite angeklickt wurden.

    kann mir mal jemand weiterhelfen danke...

  • #2
    PHP-Code:
    $sql ".... WHERE kundenid IN(".implode(', '$_POST['auswahl']).")" 
    Meinst du sowas?

    Übrigens wird das mit dem if nicht ganz hinhauen, wenn register_globals = off.

    Kommentar


    • #3
      genau

      ja das meinte ich...

      aber was meints du mit dem IF ....
      danke mal

      Kommentar


      • #4
        Re: genau

        Original geschrieben von death2dadas
        aber was meints du mit dem IF ....
        Du wolltest in der foreach-Schleife mit $_POST['auswahl'] arbeiten. Daraus schließe ich, dass dein Formular ein Input namens auswahl enthält. Darauf kannst du nicht als $auswahl zugreifen, wenn register_globals in der php.ini auf off gestellt ist.

        Falls $auswahl eine ganz andere Variable ist, sich also nicht auf das Formular bezieht, dann solltest du ihr einen anderen Namen geben. Erstens wird sie dann nicht durch die Formulardaten überschrieben, falls mal register_globals auf on gestellt wird, zweitens ist der Code leichter nachvollziehbar, wenn Variablen eindeutig benannt sind.

        Kommentar


        • #5
          Also...
          PHP-Code:
          if ($auswahl  <>""
          {

          In diesem Schnippsel verstecken sich (bei register_globals = off) sage und schreibe 3 Fehler.

          Der erste (nur bei register_globals = off) :
          $auswahl wird immer leer sein, da du mit $_POST auf die mit deinem Formular übergenenen Daten zugreifen musst. Sprich $_POST['auswahl'] (Wie du es in der Foreach-Schleife komischer Weise schon machst.)

          Der zweite:
          "<>" wird schätzungsweise nicht funktionieren und lediglich einen Parse Error ausgeben, anstelle dessen würde ich dir zu empty() oder isset() raten.

          Und zu guter Letzt:
          Zwei geschweifte, öffnende Klammern.

          Wenn man nun das alles zusammen fasst, sollte das ganze so aussehen:
          PHP-Code:
          if (isset($_POST['auswahl']))

          Zuletzt geändert von sagg; 12.02.2006, 02:08.
          mfg - sagg

          Kommentar


          • #6
            Original geschrieben von sagg
            In diesem Schnippsel verstecken sich (bei register_globals = off) sage und schreibe 3 Fehler.
            Ich will ja nicht klugscheißen, aber das stimmt nicht. Es ist nur ein Fehler, und das auch nur bei register_globals = off.

            <> ist das gleiche wie != und geschweifte Klammern kann man so viele öffnen, wie man möchte. Ein Fehler ist es erst, wenn man sie nicht alle wieder schließt.
            PHP-Code:
            <?php
            $auswahl 
            'nicht leer';
            if (
            $auswahl <> "") {{
                echo 
            'im IF-Zweig';
            }} else echo 
            'im ELSE-Zweig';
            ?>

            Kommentar


            • #7
              danke erstmal

              danke erstmal an euch beide...
              ich werd es gleich mal testen..
              ist die lösung eigentlich richtig so wie ich es vorhabe.
              also auswahl ist der name der checkbox. welche in der vorherigen seite angezeigt wird ...

              wie gesagt es soll mir ja nur die rechnungen von denen ausgeben welche ich vorher auf der seite ausgewählt habe...

              bis dann.. gruss

              Kommentar


              • #8
                Original geschrieben von onemorenerd
                <> ist das gleiche wie != ...
                Das ist mir schon klar, aber ich dachte dass das in PHP nicht geht?!
                Naja, dann weißt du ja jetzt wie kompetent unser PHP-Lehrer an der Berufsschule war, dass ich mir das auch noch so sehr eingeprägt habe..

                Original geschrieben von onemorenerd
                ...und geschweifte Klammern kann man so viele öffnen, wie man möchte.
                Über den Sinn der Sache lässt sich allerdings streiten.
                mfg - sagg

                Kommentar


                • #9
                  und was meint ihr jetzt ist das die beste lösung... oder soll ich es lieber anders machen

                  Kommentar


                  • #10
                    Nunja, ob die eine besser oder die andere schlechter ist, kann man so nicht sagen.

                    "!=" ist auf jeden Fall gebräuchlicher, daher würde ich dir das auch empfehlen.
                    mfg - sagg

                    Kommentar


                    • #11
                      Entschuldigung, falls ich dich verwirrt habe. sagg's Variante ist eindeutig die zu empfehlende.

                      Allerdings brauchst du ja jetzt weder das if noch das darin eingebettete foreach. Nimm die oben gepostete Query mit dem implode und verwende $_POST['auswahl'].

                      Kommentar


                      • #12
                        ok das klappt alles wunderbar... doch als ich meinte ob diese lösung richtig ist wie ich es vor habe.. um die rechnungen zu erstellen... das war die frage... schuldige wenn ich euch verwirrt habe

                        Kommentar


                        • #13
                          Wenn deine Checkboxen alle auswahl[] heißen, und als Value jeweils eine Kunden-ID enthalten, ist es okay. Dann wird dir ein Array übergeben, dass alle ausgewählten Kunden-IDs enthält, implode() setzt sie zu einer Kommaliste zusammen und ... ach was rede ich denn, probiere es doch einfach aus und lass dir die zusammengesetzte Query kurz vorm Absenden an die DB zur Kontrolle ausgeben. Wirst schon sehen, ob es das ist, was du willst.

                          Kommentar

                          Lädt...
                          X