2016-07-28 11 views
-1

Ich muss 2 verschiedene Spalten in einer Tabelle vergleichen: tbl_Try (Land, Name). wenn es 2 Kolumnen mit dem gleichen Wert gibt, nichts tun. Wenn es nicht die gleichen Werte dieser 2 Spalten gibt, fügen Sie die gleichen ein. Vergleichen Sie mehrere Spalten in MySql

dies ist die Verbindung zur Datenbank:

 <?php 
     require_once("menu.php"); 
     require_once("function.php"); 

    ?> 

Hier ist der Hauptcode (lesen Sie die Kommentare zu versuchen zu verstehen)

  <?php 
      $conn = ConnectToSql(); 

      $query= "Select * FROM tbl_countries"; 
      $result = mysqli_query($conn, $query) 
      or die("Error in query: ". mysqli_error($conn)); 

      $choose = ''; 

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

       $choose .= '<option value = "'.$row['name'].'">'.$row['name'].'</option>'; 
      } 

      ?> 
     <div class="form-group"> 
      <label class="control-label col-sm-2" for="Country">Choose a country:</label> 
      <div class="col-sm-5"> 
       <select class="form-control" name ="reg_country" > 
        <option></option> 
        <?php echo $choose;?></select> 
      </div> 
      </div> 
      <br> 
      <div class="form-group"> 
      <div class="col-sm-offset-4 col-sm-10"> 
      <button type="submit" name="submit" class="btn btn-default">Submit</button> 
      </div> 
     </div> 

      <?php 

      if(isset($_POST['submit'])) 
      { 

       $country = $_POST['reg_country']; 

       $_SESSION['country'] = $country; 




       $query2 = "SELECT name,id FROM tbl_flowertypes "; 
       $result2 = mysqli_query($conn, $query2) or die("Error in query: ". mysqli_error($conn)); 
       $result2_rows = mysqli_num_rows($result2); 


       //this code is not working. Need to count the 2 columns (name AND country) 
       // if in tbl_try there is already country:italy name:12 red roses. DO NOTHING if there is no data the same 
       // insert data 
       $query3 = "SELECT count(*) FROM tbl_try WHERE name='$_SESSION[flower_type_name]' AND country ='$_SESSION[country]' "; 


       $result3 = mysqli_query($conn, $query3) or die("Error in query: ". mysqli_error($conn)); 
       $result3_rows = mysqli_num_rows($result3); 




       // loop counting how many record are in table flowertype and loop to insert data in tbl_try (this code is working fine)  
      for($i = 1; $i <= $result2_rows;$i++) 
       { 



        while($row = mysqli_fetch_assoc($result2)) 
         { 

          $_SESSION['flower_type_name'] = $row['name']; 
         // this is the insertion of the data 
          $inserting = "INSERT INTO tbl_try(name,country) VALUES ('$row[name]','$_SESSION[country]')"; 
          $result3 = mysqli_query($conn, $inserting) or die("Error in query: ". mysqli_error($conn)); 

         } 



       } 
      } 

das Ergebnis sein müssen:

muss die Datenbank einmal einfügen. NUR, WENN ES KEINE GLEICHEN SPALTEN IN DER TABELLE GIBT. WENN ES DIE GLEICHEN DATEN IST, TUN SIE NICHTS.

Ich muss diesen Code durch eine Tabelle mit einigen Aufzeichnungen vervollständigen, aber ich weiß, wie das geht.

Irgendwelche Vorschläge?

+1

Warum fügen Sie nicht einfach einen eindeutigen Index für diese beiden Spalten hinzu? – Paul

Antwort

1

Der beste Weg ist einzigartig Definition hinzuzufügen, für die beiden Spalten so DB:

ALTER TABLE tbl_Try 
ADD UNIQUE (name, country) 

Dann können Sie den Ergebniscode von DB und auf der Grundlage des Ergebniscode überprüfen Sie nun, wenn die Zeile wurde in der DB gespeichert oder aufgrund von Fall, dass der gleiche Name und Land bereits in der DB ist.

+0

vielen Dank. kannst du mir genau sagen, was ich tun soll, weil ich immer noch Student bin und versuche Erfahrungen zu sammeln. Ich denke das Problem ist, dass wenn der Benutzer einen anderen Namen hinzufügt, er alle Datensätze erneut eingeben wird? –

+0

Nach Snippet schrieb ich höher, Sie müssen es zu * .sql Skript hinzufügen und auf MySQL laufen oder z. [phpMyAdmin] (https://www.phpmyadmin.net/) und definiere diese zwei Spalten als einzigartig dort. Zweite Frage: Es ist nicht notwendig, dass der Benutzer alle Datensätze erneut eingibt. Es hängt davon ab, wie Sie ein Benutzerformular erstellen und die Formulardaten auf der Grundlage vorheriger Daten des Benutzers ausfüllen. –

+0

Ich benutze phpmyadmin. also muss ich zu phpymyadmin gehen, sql gehen und alter tbl schreiben .... ?? und dann, was ich tun muss .. Entschuldigung, dass ich Ihre Zeit verschwende, aber ich bin begierig zu lernen:/und wenn ich keine Fragen stelle ich nicht lernen –

Verwandte Themen