2017-01-17 21 views
0

Ich habe diesen Code unterAnzeigen verfügbar intergers im Bereich von 0000-9999

<?php 
if(isset($_POST['add_site'])){ 
    $req_fields = array('siteid'); 
    validate_fields($req_fields); 
    if(empty($errors)){ 
    $p_siteid = remove_junk($db->escape($_POST['siteid'])); 
    $query = "INSERT INTO site_table (siteid)"; 
    $query .=" VALUES ("'{$p_siteid}')"; 

    if($db->query($query)){ 
     $session->msg('s',"Site Added "); 
     redirect('site.php', false); 
    } else { 
     $session->msg('d',' Sorry failed to add!'); 
     redirect('site.php', false); 
    } 
    } else{ 
    $session->msg("d", $errors); 
    redirect('site.php',false); 
    } 
} 
?> 

Aber ich wollte eine Funktion hinzuzufügen, dass mein Tisch überprüfen wird und zeigt nur die ersten 5 möglichen Zahlen i wählen könnte/verwenden, die ist nicht auf meinen Tabellenwerten vorhanden.

oder

automatisch vorge wählt einen Wert aus dem gleichen Bereich 0000-9999, der noch nicht auf meinen Tabellenwert existieren auf die Form zu öffnen.

Meine Form div ist unten wie folgt ..

<div class="row"> 
<div class="col-md-12"> 
    <form method="post" action="add_site.php"> 
     <div class="form-group"> 
     <div class="input-group"> 
      <span class="input-group-addon"> 
      <i class="glyphicon glyphicon-picture"></i> 
      </span> 
      <input type="text" class="form-control" name="siteid" placeholder="Site Number"> 
     </div> 
     </div> 
     <div class="form-group clearfix"> 
     <button type="submit" name="add_site" class="btn btn-primary">Add Site</button> 
     </div> 
    </form> 
</div> 
</div> 

Also, wenn meine Tabelle A Werte von

, ich konnte also
id siteid 
1 0000 
2 0001 
3 0004 
4 1000 
5 2000 
6 5555 
7 0006 
8 0010 

haben bereits nur möglicherweise die ersten 5 Werte von

wählen

, die es noch nicht auf meinen vorhandenen Tabellenwerten existiert und es auf meinem Div-Formular zur Auswahl zeigen.

Oder

Voreinstellung der Wert 0002 beim Öffnen des Dialogform.

+0

Dies ist der Code für nur die Einfügung richtig? In welchem ​​Teil der Seite möchten Sie die 5 ersten ids aus der Datenbank bekommen? Hast du schon mal was probiert? - Oder meinst du mit dem Einfügen die 5 ersten (verfügbaren) IDs? –

+0

Wenn es möglich ist, die ersten 5 verfügbaren IDs vor dem Einfügen zu erhalten, könnte es eine Dropdown-Liste der 5 möglichen IDs haben. – Jovanni

+0

Sie müssen vor dem Formular eine Abfrage SELECT p_siteid FROM site_table LIMIT 5 durchführen (Sie können auch die Reihenfolge verwenden) und die Ergebnisse in einem Array ablegen. Danach im Formular nur diese Ergebnisse als Optionen anzeigen. –

Antwort

0

Die einfachste Lösung ist eine Hilfstabelle, die alle möglichen Werte auflistet oder die Zahlen von 0 - 9 auflistet und Sie die Zahlen durch 3 Self-Joins kombinieren, um den Bereich zu erstellen. Der Grund dafür ist, dass SQL nicht etwas erstellen kann, das nicht existiert.

Wenn Sie einen Helfer Tabelle mit allen möglichen Zahlen 0000-9999 in einem Feld namens siteid, dann links verwenden beitreten:

select ht.siteid 
from helper_table ht 
left join site_table st on st.siteid=ht.siteid 
where st.siteid is null 
order by ht.siteid asc 
limit 5 

Wenn der Helfer Tabelle die Zahlen 0 enthält - 9 nur dann Sie schaffen eine cartesianischen zwischen ihnen anzuschließen und zu tun mit der linken auf das Ergebnis der cartesianischen Join:

select concat(ht1.siteid, ht2.siteid, ht3.siteid, ht4.siteid) as siteid 
from (helper_table ht1 join helper_table ht2 join helper_table ht3 join helper_table ht4) 
left join site_table st on st.siteid=concat(ht1.siteid, ht2.siteid, ht3.siteid, ht4.siteid) 
where st.siteid is null 
order by concat(ht1.siteid, ht2.siteid, ht3.siteid, ht4.siteid) asc 
limit 5 

Wenn Sie wirklich darauf bestehen, auf keinen Helfer Tabelle mit Ihnen die 0 erstellen können - 9 Datensätze dynamisch mit Gewerkschaften, aber Ich sehe den Vorteil nicht wirklich darin.

+0

Es ist in Ordnung, aber im Zusammenhang mit PHP ist es völlig unnötig. – Strawberry

+0

Wie wäre es, wenn die erste ID, die im selben Bereich (0000-9999) verfügbar ist, automatisch beim Anzeigen des Dialogs angezeigt wird.Welche Funktion sollte ich verwenden, um die Site-Tabelle zu überprüfen? – Jovanni

+0

Es tut mir leid, aber ich verstehe deine Frage nicht. – Shadow

Verwandte Themen