Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] multiple choice Problem

Einklappen

Neue Werbung 2019

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

  • [Erledigt] multiple choice Problem

    Hallo alle zusammen. Habe ein riesen Problem. Ich habe eine job-Datenbank welche nun mit multiple choice ausgestattet werden soll. Man sollte zum Beispiel im Bereich mehrere Bereiche eintragen um abrufen können.
    Code:
     <tr>
            <td colspan="4" class="stellen"> Bereiche</td>
            </tr>
          <tr>
            <td width="30%" align="left" valign="bottom">
              <input type="checkbox" name="beruf[]2" value="kauf', 'tech', 'kader', 'bau', 'informatik', 'verkauf" />Alle Berufe</td>
            <td width="29%" align="left" valign="bottom"><input type="checkbox" name="beruf[]" value="tech" />Technische Berufe</td>
            <td width="23%" align="left" valign="bottom"><input type="checkbox" name="beruf[]" value="bau" />Bau</td>
            <td width="18%" align="left" valign="bottom"><input type="checkbox" name="beruf[]" value="verkauf" />Verkauf</td>
          </tr>
    Dies ist das Formular welches dann mit dem folgendem PHP verarbeitet wird.

    PHP-Code:
     $whereclause '';
        
        if (isset(
    $_POST['beruf']))
        {
            
    $berufe join("', '"$_POST['beruf']);
            
    $where[] = "(beruf IN ('$berufe'))" ;
        }

        if  (
    count($where) > 0$whereclause ' WHERE ' join (' AND '$where);
        
        
    $sql "SELECT * FROM jobs $whereclause order by datumsanzeige = 'fake' DESC, datum DESC"
    Habe es mal so ausprobiert:
    PHP-Code:
     if (isset($_POST['beruf']))
        {
            
    $berufe join("', '"$_POST['beruf']);
            
    $where[] = "(beruf IN ('$berufe'))" ;
        
    $where[] = "(beruf2 IN ('$berufe'))" ;
        } 
    Aber dann findet die Abfrage nur noch Einträge welches beides erfüllt. Das heisst wenn ich im Formular zum Beispiel nur noch bau ankreuze, dann findet die Abfrage gar nichts mehr.

    Ich müsste also so was sagen falls beruf angekreuzt wurde, dann join und check ob es Einträge mit diesen angekreuztem Wert in beruf und auch in beruf 2 hat.

    Oh mann ich hoffe Ihr versteht was ich meine, denn ich finde es recht kompliziert zum erklären. Ich wäre wirklich extrem froh wenn mir jemand helfen könnte.... Dank, Rilana

  • #2
    Ein Problem könnte ein leeres Array sein. Wenn Du dann implodest entsteht
    WHERE ... IN ('')
    Das ist m.E. keine gültige Syntax.

    Aber sicher wurde Dir schon öfter gesagt, Du sollst die mysql-Fehler anzeigen lassen und die PHP Fehlerausgabe aktivieren...

    Kommentar


    • #3
      Hoi, danke aber es gibt keinen Fehler an. Die Ausführung ist nur eine andere als ich gern hätte. Wenn ich bau und kauf ankreuze dann gibt es mir die Stellen an welche in beruf bau und beruf1 kauf hat aus.

      Kommentar


      • #4
        Ja und? Erklär es ordentlich und laß Dir nich alles aus der Nase ziehen!

        Kommentar


        • #5
          Ok sorry aber bin wohl selber confused.

          Ich habe eine Datenbank mit den Feldern beruf und beruf2.
          beruf=kauf und beruf2=bau im Frontend-Formular habe ich aber nur eine Kategorie beruf mit den folgenden Möglichkeiten:

          Technische Berufe, Bau, Verkauf, Kaufmännische Berufe, Kader, Informatik

          Bis anhin hatte ich in der Datenbank nur ein Feld beruf. Und alles hatte Einwandfrei funktioniert. Doch da es nun scheinbar möglich ist dass ein Beruf kaufmännisch sowie Kader sein kann, muss es möglich sein mit dem gleichen Frontend-Formular die Datenbank zu fragen: Nimm den beruf-Array des Fromulars und gib die jobs aus welche in der Datenbank im Feld beruf sowie im Feld beruf2 die angekreuzten Beufskategorien haben.

          Sorry find ich recht kompliziert zum erklären, verstehst du eventuell was ich meine??

          Danke Rilana

          Kommentar


          • #6
            UND oder ODER? Mit einer Eigabe vermutlich ODER? Was Du mit Kadern etc. meinst überschreitet meine Fachkenntnisse (obwohl ich selbst schon mal ne Jobvermittlung geschrieben habe).

            PHP-Code:
            $query 'SELECT ... WHERE beruf="'.$_POST['...'].'" OR beruf2="'.$_POST['...'].'"'
            bzw.
            PHP-Code:
            $query 'SELECT ... WHERE beruf IN(\''.$berufe.'\') OR beruf2 IN(\''.$berufe.'\')'

            Kommentar


            • #7
              Danke aber ich habe eben diese komplizierte Klausel welche ich nicht weis wie damit umgehen...

              PHP-Code:
               $where = array();
                  
              $whereclause '';
                  
                  if (isset(
              $_POST['region']))
                  {
                      
              $regions join("', '"$_POST['region']);
                      
              $where[] = "(region IN ('$regions'))" ;
                  }
                 [
              COLOR="Red"] if (isset($_POST['beruf']))
                  {
                      
              $berufe join("', '"$_POST['beruf']);
                      
              $where[] = "(beruf IN ('$berufe'))" ;
                  
              $beruf2 "$beruf";
                  
              $where[] = "(beruf2 IN ('$berufe2'))" ;
                  }[/
              COLOR]
                  if (isset(
              $_POST['anstellung']))
                  {
                      
              $anstellungen join("', '"$_POST['anstellung']);
                      
              $where[] = "(anstellung IN ('$anstellungen'))" ;
                  }
                  
                  if  (
              count($where) > 0$whereclause ' WHERE ' join (' AND '$where);
                  
                  
              $sql "SELECT * FROM jobs $whereclause order by datumsanzeige = 'fake' DESC, datum DESC"
              habe dies
              PHP-Code:
              $beruf2 "$beruf";
                  
              $where[] = "(beruf2 IN ('$berufe2'))" 
              noch hinzugefügt in der Hoffnung es funktioniert. Aber leider tut es dass nicht. Es muss irgend eine andere Möglichkeit geben... oder was mach ich falsch?

              Kommentar


              • #8
                oder könnte ich eventuell der checkbox 2 Werte mitgeben?
                Code:
                 
                <input type="checkbox" name="beruf[]" value="tech" />Technische Berufe<br />
                Falls man Technische Berufe checked, dann hat berufe den value tech
                und gleichzeitig berufe2 den value tech.....

                Kommentar


                • #9
                  Kannst Du die Anforderung mal spezifizieren:

                  - Welche Eingabefelder gibt es
                  - Wie ist das DB Design
                  - Welches Verhalten wird wann erwartet

                  Mit Probieren kommen wir hier nicht weit und Deine Postings sind einfach zu ungenau.

                  Kommentar


                  • #10
                    das Frontend sieht so aus: smart personal gmbh

                    Die Datenbank sieht so aus:


                    Und das Problem ist nun dass ich mit einem Formular mehrere Sachen abchecken muss. Das genaue Problem liegt beim Bereich. Es gibt jobs welche auf mehrere Bereiche zutreffen, ein job kann zum Beispiel kaufmännisch sein aber auf der baubranche.

                    job 1 bereich=bau bereich2=tech region=ZH anstellung=fest

                    Das PHP dazu habe ich ja schon publiziert. Ist es nun verständlich?

                    Danke für deine Hilfe.

                    Kommentar


                    • #11
                      schlage mich nun mit join herum

                      Hallo zusammen, ich versuche das ganze nun mit join zu lösen, da es anscheinend die einzige Lösung ist. Dies ist das erste join für mich und ich finde es mega kompliziert!!!! Kann mir jemand sagen wieso ich bei folgendem script keinen Output habe? Wäre wirklich cool... thank you verry much.

                      PHP-Code:
                      <?

                      $con = mysql_connect("", "", "") or die(mysql_error());
                      mysql_select_db("smartper_jobs") or die(mysql_error());

                      mysql_query("SET NAMES 'UTF8'");  

                      $sql = "SELECT j.jobID,j.jobName,j.jobDesc,c.catName FROM jobs2, j
                      JOIN jobs_categories jc ON(j.jobID = jc.jobID)
                      JOIN categories c ON(jc.catID = c.catID)
                      WHERE j.jobID IN(1)"; 

                      $result = mysql_query($sql, $con) or trigger_error("SQL", E_USER_ERROR);


                      while($row = mysql_fetch_array( $result )) {


                          // Print out the contents of each row into a table
                          echo "<tr><td class='stellen'>"; 
                          echo $row['JobName'];
                          echo "</td></tr><tr><td>"; 
                          echo substr($row['JobDesc'],0,100);
                          echo "... ";
                          echo "<a href=\"stellenDetail.php?id=$row[id]\">|weiter > </a>";
                          echo "</td></tr>"; 
                          echo "<tr><td>";
                          echo "</td></tr>";
                          echo "<tr><td colspan='2' class='line'><br></td><td></td></tr>"; 
                          
                          } 
                      echo "<tr><td>";

                      ?>
                      Die Ausgabe ergibt einfach nur 2 Linien mit ...> |weiter > Es sind momentan auch nur 2 Einträge in der Datenbank, aber wo ist der Rest?

                      Wäre dankbar um eure Hilfe! Danke, Rilana

                      Kommentar


                      • #12
                        OK ich glaube ich komme meiner Lösung näher. Meine sql Ausgabe sieht nun so aus
                        PHP-Code:
                        SELECT FROM jobs2 JOIN jobs_categories ON jobs_categories.jobID=jobs2.jobID JOIN categories ON categories.catID=jobs_categories.catID [COLOR="Red"]' [/COLOR]WHERE categories.catName IN ('office', 'technical')[COLOR="Red"]'[/COLOR
                        Nur diese roten Zeichen sind noch zuviel, denk ich zumindest... bis jetzt habe ich aber noch nicht herausgefunden wo ich diese löschen kann, sieht das jemand in folgendem Code?

                        PHP-Code:
                        if (isset($_POST['btnSubmit']))
                        {
                            
                        $where = array();
                            
                        $whereclause '';
                            
                            if (isset(
                        $_POST['categories']))
                            {
                                
                        $categoriess join("', '"$_POST['categories']);
                                
                        $where[] = "categories.catName IN ('$categoriess')" ;
                            }
                           
                            if  (
                        count($where) > 0$whereclause ' WHERE ' join (' AND '$where);
                            
                            
                        $sql "SELECT
                                    *
                                FROM 
                                    jobs2 
                                JOIN 
                                    jobs_categories
                                ON
                                    jobs_categories.jobID=jobs2.jobID
                                JOIN
                                    categories
                                ON
                                    categories.catID=jobs_categories.catID
                                
                                '
                        $whereclause'"

                        Kommentar


                        • #13
                          meine güte holt Euch jemanden der zumindest die Syntax beherrscht und debuggen kann.
                          lass Dir dein sql ausgeben dann wirste sehen was falsch ist. Ein etwas geübtes Auge sieht das auf den ersten Blick

                          Kommentar


                          • #14
                            Nur diese roten Zeichen sind noch zuviel, denk ich zumindest...
                            Das funktioniert in diesem Board nicht. Das hättest Du eigentlich schon oben merken müssen.

                            Bisher dachte ich, die checkboxes beziehen sich auf beruf und beruf2. Wo Du jetzt auch einmal jobs_categories und damit den JOIN herzauberst ist mir schleiderhaft. Hast Du das DB Layout verändert?

                            Kommentar


                            • #15
                              Ok Jungs habs gefunden, sorry aber war völlig am Ende, hatte keine Hirnzelle mehr übrig... Nikosch was meinst du mit hätte ich oben merken müssen?

                              Kommentar

                              Lädt...
                              X