2017-12-21 3 views
0

Dies ist meine erste Schritte in PHP, weil ich es nicht in meiner Arbeit verwenden. Ich möchte ein Formular vorbereiten, das Daten zu Datenbanktabellen hinzufügen wird. ich bereit, dieses Stück Code:PHP IF-Anweisung gibt nur einmal True-Wert in While-Schleife

<?php 

require "init.php"; 

$marina_id=$_POST["marina_id"]; 
$b_cor=$_POST["b_cor"]; 
$size=$_POST["size"]; 
$available_place=$_POST["available_place"]; 
$l_cor=$_POST["l_cor"]; 
$is_open=$_POST["is_open"]; 
$description=$_POST["description"]; 

$sql= "insert into marinas (marina_id, b_cor, l_cor, size, available_place, is_open, description) values('$marina_id', '$b_cor', '$l_cor', '$size', '$available_place', '$is_open', '$description');"; 
if (mysqli_query($con, $sql)) 
{ 
    echo "values were added"; 
} else { 
    echo "values were not added"; 
} 
$count = 0; 
while ($count<$size) 
{ 
    if ($count<$available_place) { 
     $isavailable = 1; 
     $accesscode = ""; 
    } else { 
     $isavailable = 0; 
     $accesscode = "abcdefgh"; 
    } 
    $dock_id=(string)$marina_id."0".(string)$count; 
    $nullObject=""; 
    $sql2= "insert into places (
     place_id, 
     b_cor, l_cor, 
     is_available, 
     plan, 
     depth, 
     width, 
     length, 
     description, 
     marina_id, 
     access_code, 
     reserved_from, 
     reserved_to, 
     last_update) values (

     '$dock_id', 
     '$b_cor', 
     '$l_cor', 
     '$isavailable', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$marina_id', 
     '$accesscode', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject');"; 
    if (mysqli_query($con, $sql2)) //$con comes from init.php 
    { 
    echo "complete."; 
    } else { 
    echo "something wrong with data."; 
    } 
    $count = $count+1; 
} 


?> 

Meine Idee eine Zeile mit Daten in Häfen Tisch und auf der Grundlage seines „Größe“ Wert hinzufügen, zusätzliche Zeilen mit Daten zu Orten Tabelle so oft eingefügt war, als Größenwert ist . Ich habe while-Schleife verwendet, aber meine IF-Anweisung für $ sql2 gibt nur einmal true zurück und ich habe keine Ahnung, warum das so ist. Für mich scheint Code-Logik in Ordnung und einige Daten wurden hinzugefügt. Gibt es irgendwelche Einschränkungen in PHP für die Lösung wie meine?

Antwort

1

Überprüfen Sie bitte, ob place_id ein Autoinkrement-Schlüssel ist. Vielleicht könnte es falsch sein, weil es die Einzigartigkeit des Schlüssels verletzt.

+0

Wenn das stimmt, dann warum * $ dock_id = (string) $ marina_id. "0". (String) $ count; * macht place_id nicht eindeutig? Ist es nicht korrekt, einen Integer-Wert mit einem String zu verbinden? – Darek

+0

Eine weitere Möglichkeit besteht darin, die Ganzzahl in Anführungszeichen zu kapseln: $ foo = 5; $ foo = "$ foo" setzen echo, um die Abfrage –

+0

Vielen Dank Francesco. Wie Sie sagten, gab es ein Problem mit dem eindeutigen Schlüssel. Ich habe einen Fehler bei der DB-Konfiguration gemacht und 'unique' für marina_id statt place_id gesetzt. – Darek