Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Abfragen in einem Formular nacheinander ausführen?!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mehrere Abfragen in einem Formular nacheinander ausführen?!

    Hallo Liebe Community,

    ich bin ganz frisch angemeldet und noch nicht soo lange in der Materie PHP drin, aber dennoch lernwillig.

    Ich erwarte auch kein fertiges Script, sondern möchte nach einem Lösungsansatz fragen, da ich immens aufm Schlauch stehe.

    Folgendes Problem ist gegeben:

    Ich bin dabei eine Produktdatenbank zu erstellen.
    Diese läuft in einer Session. (Ja ich weiß, man kann dies wahrscheinlich darüber lösen...verstehe nur noch nicht wie )
    Mit Hilfe von Checkboxen können unterschiedliche Kriterien, wie Beschreibung, Farbe, etc gefiltert werden.

    Durch die Eingabe des Artikelnamens oder der Artikelnummer wird der oder diejenigen Artikel gesucht.

    Wenn ich nun den Submit-Button betätige wird die SELECT-Abfrage ohne Probleme ausgeführt und der Artikel mit den geforderten Daten erscheint.

    Nun möchte ich aber noch mehr Artikel mit den gleichen Kriterien Abfragen, welche an die vorhandene Tabelle angefügt werden.

    Anbei einmal der Code des Formulars:

    Code:
    <?PHP
    	session_start();
    	if(isset($_SESSION["username"]))
    	{
    ?>
    <?php
    //Verbindung zur Datenbank herstellen
    $conn=mysqli_connect("localhost","administrator","administrator"); 
    $db=mysqli_select_db($conn,"db_produktdatenbank"); 
    ?> 
    
    <html> 
    <head> 
    <title>Angebot erstellen</title> 
    <h1>Angebot erstellen</h1>
    <button onClick="window.location.href='http://100.1.1.45:80/produktdatenbank/main.php'">Hauptmen&uuml;</button>
    <!--<meta charset="utf-8" />-->
    </head> 
    <body> 	
    	
    <?php 
    // Einzeln auswählen
    if(count($_POST['produktinfo'])){ 
     while(list($key,$val)=each($_POST['produktinfo'])){ 
      $daten[]=$val; 
     } 
     $query="artikelnummer"; 
     $query.=",".$daten[0]; 
     $i=1; 
    
     while($i<count($daten)){ 
      $query.=",".$daten[$i]; 
      $i++; 
     } 
    
    //Auswahl des Artikels aus Textfeld und Checkbox
     if($_POST['suchfeld']){ 
      $sql="select $query from tbl_basisdaten where artikelnummer LIKE'".$_POST['suchfeld']."' OR artikelname LIKE'".$_POST['suchfeld']."'"; 
     }else{ 
     			 mysqli_error ;
     			 } 
     $result=mysqli_query($conn,$sql); 
     $row=mysqli_fetch_array($result, MYSQLI_ASSOC); 
     echo "<table border=\"1\">"; 
    
    
     while($field=key($row)){ 
      echo "<th>$field</th>"; 
      next($row); 
     } 
    
      
     echo "</tr>"; 
     echo "<tr><td>"; 
     echo implode("<td>", $row); 
     echo "</tr>"; 
     
     while($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
      echo "<tr><td>"; 
      echo implode("<td>", $row); 
     echo "</tr>"; 
     } 
    
     echo "</table><hr>"; 
    } 
    ?> 
    
    	<form action="Formular.php" name="produktinfo" method="post">
    		
    
    <?php 
    $sql="select * from tbl_basisdaten"; 
    $result=mysqli_query($conn,$sql); 
    $row=mysqli_fetch_array($result, MYSQLI_ASSOC); 
    next($row); 
    
    while($field=key($row))
    	{ 
    		echo "<input type=\"checkbox\" name=\"produktinfo[]\" value=$field>$field<br>"; 
    		next($row); 
    
    	}
    
    ?> 
    
    <br>
    
    Welcher Artikel?<br> 
    	<form action='Formular.php' method='POST'>
    		<input type='text' name='suchfeld'> <input type="submit" name="suche_enter" value="suchen"> 
    		<input type="reset" value="Zur&uuml;cksetzen">
    	</form>
    	
    <?php 
    
    echo "</select>"; 
    
    ?>
     
    <hr> 
    
    <?PHP
    }
    ?>
    
    </form> 
    </body> 
    </html>
    Schonmal im Voraus vielen vielen Dank, für jede noch so kleine Hilfe!

  • #2
    Bevor du dir überlegst wie es weitergeht, solltest du erstmal das was du hast überarbeiten.
    Z.B. sowas hier:
    PHP-Code:
    $sql="select * from tbl_basisdaten"
    $result=mysqli_query($conn,$sql); 
    $row=mysqli_fetch_array($resultMYSQLI_ASSOC); 
    next($row); 

    while(
    $field=key($row))
        { 
            echo 
    "<input type=\"checkbox\" name=\"produktinfo[]\" value=$field>$field<br>"
            
    next($row); 

        } 
    Nee, so macht man das einfach nicht.

    E: Hab mir das Dingen jetzt mal in Ruhe angesehen. Das ist von oben bis unten totaler Murks.
    Wo hast du das mit dem $field = key($row); und next($row); eigentlich her?

    PHP-Code:
    $result=mysqli_query($conn,$sql); 
     
    $row=mysqli_fetch_array($resultMYSQLI_ASSOC); 
     echo 
    "<table border=\"1\">"


     while(
    $field=key($row)){ 
      echo 
    "<th>$field</th>"
      
    next($row); 
     } 

      
     echo 
    "</tr>"
     echo 
    "<tr><td>"
     echo 
    implode("<td>"$row); 
     echo 
    "</tr>"
     
     while(
    $row=mysqli_fetch_array($resultMYSQLI_ASSOC)){ 
      echo 
    "<tr><td>"
      echo 
    implode("<td>"$row); 
     echo 
    "</tr>"
     } 

     echo 
    "</table><hr>"
    Das mit dem implode() funktioniert so nicht. Und diese while-Konstruktionen sind auch nicht sehr sinnhaft.

    PHP-Code:
     <?php 

    echo "</select>"

    ?>
    Wo ist denn das <select> ? Und warum wird das überhaupt mit PHP ausgegeben?

    PHP-Code:
    if(count($_POST['produktinfo'])){ 
     while(list(
    $key,$val)=each($_POST['produktinfo'])){ 
      
    $daten[]=$val
     } 
     
    $query="artikelnummer"
     
    $query.=",".$daten[0]; 
     
    $i=1

     while(
    $i<count($daten)){ 
      
    $query.=",".$daten[$i]; 
      
    $i++; 
     } 
    Da würde ich eher
    PHP-Code:
    if(isset($_POST['produktinfo'])){
       
    $info $_POST['produktinfo'];
       
    $query = array();
       
    $query[] = 'artikelnummer';
       foreach(
    $info as $value){
           
    $query[] = $value;
       }

    draus machen und in der query dann
    PHP-Code:
    implode(","$query); 
    PHP-Code:
     if($_POST['suchfeld']){ 
      
    $sql="select $query from tbl_basisdaten where artikelnummer LIKE'".$_POST['suchfeld']."' OR artikelname LIKE'".$_POST['suchfeld']."'"
     }else{ 
                  
    mysqli_error ;
                  } 
    1. Kann man das auch vernünftig einrücken.
    2. was soll mysqli_error; sein? Ich kenne nur mysqli_error();
    3. Gibt man mysql-erros nicht aus
    4. ist if(isset($_POST['suchfeld'] && !empty($_POST['suchfeld'])){} besser
    5. Fehlt da nicht generell ein
    PHP-Code:
    if(isset($_POST['suche_enter']) && $_POST['suche_enter'] == 'suchen')

       
    // mach den ganzen scheiß 

    6. Sollte man POST-Inhalte nicht einfach in die Query schießen
    Die mysql_* Erweiterung ist veraltet!
    Besser: mysqli_* oder (noch besser) PDO

    Kommentar


    • #3
      Noch einmal größten Dank für die schnellen und verständlichen Infos/Anmerkungen!
      Bin gerade dabei, die Änderungen vor zu nehmen.

      Kommentar

      Lädt...
      X