Velice vám děkuji za veškerou vaši pomoc. Speciál dík pro gna, díky Tvým posledním radám jsem to spatlal dohromady a vše funguje, jak má Pár věcí mě ještě potrápilo, práce do školy je hotová, ale budu na tom dělat dál . Až budu v koncích, přijdu zas pro radu. Mějte se
Příspěvky odeslané z IP adresy 188.116.67.–
Předně děkuji za pomoc, jsem začátečník v PHP. Aktuálně pracuji na hlavní tabulce (ZELEZNICNI_PREJEZDY) a aktualizačním formuláři.
http://projekt.vsps-su.cz/ita15/ita15krnavekd/ASW/zaverecna_prace/databaze.php?id=default
Dělám to částečně jako středoškolský projekt, ale dále to chci využít v rámci svého koníčku. Zadání ze školy bylo dost osekané a to by mě moc nebavilo...
Zde je PHP kód:
<?php
$id = $_POST["id"];
$cislo = $_POST["cislo"];
$sirka = $_POST["sirka"];
$delka = $_POST["delka"];
$rok_rekonstrukce = $_POST["rok_rekonstrukce"];
$foto = $_POST["foto"];
$PZZ = $_POST["PZZ"];
$obec = $_POST["obec"];
$silnice = $_POST["silnice"];
if(IsSet($_POST["vystrazniky"])) {
$vystrazniky_vyber = implode(', ', $_POST["vystrazniky"]);
}
include("pripojeni.php");
if($rok_rekonstrukce != '' or $rok_rekonstrukce != null) {
$sql = "UPDATE ZELEZNICNI_PREJEZDY SET cislo_prejezdu='$cislo', zemepisna_sirka='$sirka', zemepisna_delka='$delka', rok_rekonstrukce='$rok_rekonstrukce', foto='$foto', ZELEZNICNI_PREJEZDY.id_PZZ='$PZZ', ZELEZNICNI_PREJEZDY.id_obce='$obec', ZELEZNICNI_PREJEZDY.id_silnice='$silnice' WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
else {
$sql = "UPDATE ZELEZNICNI_PREJEZDY SET cislo_prejezdu='$cislo', zemepisna_sirka='$sirka', zemepisna_delka='$delka', rok_rekonstrukce=null, foto='$foto', ZELEZNICNI_PREJEZDY.id_PZZ='$PZZ', ZELEZNICNI_PREJEZDY.id_obce='$obec', ZELEZNICNI_PREJEZDY.id_silnice='$silnice' WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
$sql = "UPDATE ZELEZNICNI_PREJEZDY, PREJEZDY_VYSTRAZNIKY SET cislo_prejezdu='$cislo', zemepisna_sirka='$sirka', zemepisna_delka='$delka', foto='$foto', ZELEZNICNI_PREJEZDY.id_PZZ='$PZZ', ZELEZNICNI_PREJEZDY.id_obce='$obec', ZELEZNICNI_PREJEZDY.id_silnice='$silnice' WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
if($rok_rekonstrukce != '' or $rok_rekonstrukce != null) {
$sql_rok = "UPDATE ZELEZNICNI_PREJEZDY SET rok_rekonstrukce='$rok_rekonstrukce' WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
else {
$sql_rok = "UPDATE ZELEZNICNI_PREJEZDY SET rok_rekonstrukce=null WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
if(IsSet($vystrazniky_vyber)) {
$vystrazniky[] = explode(', ', $vystrazniky_vyber);
}
$sql_prejezdy_vystrazniky_smazat = "DELETE FROM PREJEZDY_VYSTRAZNIKY WHERE id_prejezdu='$id'";
if (IsSet($vystrazniky))
{
foreach($vystrazniky AS $id_vystrazniku) {
$sql_prejezdy_vystrazniky = "INSERT INTO PREJEZDY_VYSTRAZNIKY (id_prejezdu, id_vystrazniku) VALUES ('$id', '$id_vystrazniku'[\"id_vystrazniku\"])";
mysql_query($sql_prejezdy_vystrazniky);
}
if (mysql_query($sql) && mysql_query($sql_rok) && mysql_query($sql_prejezdy_vystrazniky_smazat)) {
echo "<br>Aktualizace proběhla úspěšně."; }
else {
echo "<br>Aktualizace neproběhla úspěšně."; }
}
else {
if (mysql_query($sql) && mysql_query($sql_rok)) {
echo "<br>Aktualizace proběhla úspěšně."; }
else {
echo "<br>Aktualizace neproběhla úspěšně.";
echo $id . "\r\n";
echo $cislo . "\r\n";
echo $sirka . "\r\n";
echo $delka . "\r\n";
echo $rok_rekonstrukce . "\r\n";
echo $foto . "\r\n";
echo $PZZ . "\r\n";
echo $obec . "\r\n";
echo $silnice . "\r\n";
}
}
?>
Dáváš do value id záznamu?
Ano, dávám, ale stále to píše chybu (Array to string conversion)
Select ve formuláři vypadá takto:
echo "Typ výstražníku: <select name=\"vystrazniky[]\" method=\"get\"" . $radek['id_vystrazniku']."\" multiple />";
if($vysledek_vystrazniky = mysql_query($sql_vystrazniky)) {
while ($radek_vystrazniky = mysql_fetch_array($vysledek_vystrazniky)) {
echo "<option value='" . $radek_vystrazniky['id_vystrazniku'] . "'>" . $radek_vystrazniky['oznaceni_vystrazniku'] . "</option>";
}
}
echo "</select><br />";
#5 MilanL
Opakovanému doplňování jsem se pokusil zabránit tak, že při aktualizaci záznamu budou smazány původní vazby - do kódu jsem doplnil SQL dotaz: DELETE FROM PREJEZDY_VYSTRAZNIKY WHERE id_prejezdu='$id'.
Zda je $id_vystrazniku nějaká hodnota, jsem se pokusil vyřešit podmínkou - IsSet.
Je to tak, jak píše MilanL, jde mi opravdu o to spárování. Mám vytvořené tabulky:
- ZELEZNICNI_PREJEZDY
- PREJEZDY_VYSTRAZNIKY (vazební tabulka)
- TYP_VYSTRAZNIKU
Chyby v kódu jsem se pokusil opravit. Neumím si poradit s tím, jak dostat typy výstražníků z formuláře (z prvku multiple select) do vazební tabulky - aby byly vloženy jednotlivé položky, nikoliv řetězec - např. 1 přejezd, 2 typy výstražníků. Vstupní formulář vypadá následovně:
Ještě jednou moc děkuji za váš čas a vaši pomoc.
David
Zdravím,
prosím o pomoc, mám následující problém:
Tvořím databázi železničních přejezdů. Databáze obsahuje relaci M:N pro přejezdy a výstražníky (jeden železniční přejezd může mít více typů výstražníků).
Zde je PHP skript, který předává data z formuláře do MySQL:
<?php
$id = $_GET["id"];
$cislo = $_GET["cislo"];
$sirka = $_GET["sirka"];
$delka = $_GET["delka"];
$rok_rekonstrukce = $_GET["rok_rekonstrukce"];
$foto = $_GET["foto"];
$PZZ = $_GET["PZZ"];
$obec = $_GET["obec"];
$silnice = $_GET["silnice"];
$vystrazniky_vyber = implode(', ', $_GET["vystrazniky"]);
include("pripojeni.php");
$sql = "UPDATE ZELEZNICNI_PREJEZDY, PREJEZDY_VYSTRAZNIKY SET cislo_prejezdu='$cislo', zemepisna_sirka='$sirka', zemepisna_delka='$delka', foto='$foto', ZELEZNICNI_PREJEZDY.id_PZZ='$PZZ', ZELEZNICNI_PREJEZDY.id_obce='$obec', ZELEZNICNI_PREJEZDY.id_silnice='$silnice', WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
if($rok_rekonstrukce != '' or $rok_rekonstrukce != null) {
$sql_rok = "UPDATE ZELEZNICNI_PREJEZDY SET rok_rekonstrukce='$rok_rekonstrukce' WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
else {
$sql_rok = "UPDATE ZELEZNICNI_PREJEZDY SET rok_rekonstrukce=null WHERE ZELEZNICNI_PREJEZDY.id_prejezdu='$id'";
}
$vystrazniky[] = explode(', ', $vystrazniky_vyber);
foreach($vystrazniky AS $id_vystrazniku) {
$sql_prejezdy_vystrazniky = "INSERT INTO PREJEZDY_VYSTRAZNIKY (id_prejezdu, id_vystrazniku) VALUES ('$id', '$id_vystrazniku'[\"id_vystrazniku]\")";
}
if (mysql_query($sql) && mysql_query($sql_rok) && mysql_query($sql_prejezdy_vystrazniky)) {
echo "<br>Aktualizace proběhla úspěšně."; }
else {
echo "<br>Aktualizace neproběhla úspěšně."; }
?>
Nedaří se mi aktualizovat pole pro typy výstražníků - skript pro aktualizaci vyhazuje tuto hlášku:
Děkuji za případnou pomoc
David