variablen übergabe in where klausel

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


    • #3
      genau

      ja das meinte ich...

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

      Comment


      • #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.

        Comment


        • #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']))

          Last edited by sagg; 12-02-2006, 01:08.
          mfg - sagg

          Comment


          • #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';
            ?>

            Comment


            • #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

              Comment


              • #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

                Comment


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

                  Comment


                  • #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

                    Comment


                    • #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'].

                      Comment


                      • #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

                        Comment


                        • #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.

                          Comment

                          Working...
                          X