Autor | Zpráva | ||
---|---|---|---|
skrebl Profil |
#1 · Zasláno: 10. 2. 2013, 13:36:45
Zdravim,
mám array a mám v něm nějaké hodnoty a všechny ty hodnoty bych potřeboval dostat do tabulky do jednoho sloupečku aby tam bylo např. hodnota1, hodnota2, hodnota3.... ale problém je ten, že počet hodnot v tom arrayi se mění tak mě napadlo, že by se to dalo vyřešit spočítáním hodnot v poli, ale nenapadá jak to zapsat tady je kod: $pole = array(); if(count($_FILES["S_IMAGE"]['name'])>0) { $GLOBALS['msg'] = ""; for($j=0; $j < count($_FILES["S_IMAGE"]['name']); $j++) { $filen = $_FILES["S_IMAGE"]['name']["$j"]; //file name $path = 'uploads/'.$filen; if(move_uploaded_file($_FILES["S_IMAGE"]['tmp_name']["$j"],$path)) { $GLOBALS['msg'] .= "soubor# ".($j+1)." ($filen) byl uploadnut<br>"; $pole[$j+1] = "$filen"; } } $pocet = 0; foreach ($pole as $hodnota) { echo $hodnota.", "; $pocet++; } a dotaz: $sql= mysql_query("INSERT INTO reference VALUES ('','$nadpis','$mesto','$text','$obrazek','$odkaz')") or die(mysql_error());
Potřeboval bych to získat do té hodnoty $obrazek |
||
juriad Profil |
#2 · Zasláno: 10. 2. 2013, 13:39:58
Jdeš na to špatně, Některé časteji řešené dotazy pro MySQL - FAQ » Více hodnot ve sloupci
|
||
skrebl Profil |
#3 · Zasláno: 10. 2. 2013, 13:50:42
juriad:
Když já nevím jak bych pak získal názvy těch souborů které jsem zrovna uploadnul Já to potřebuju udělat jako reference.. tzn že z té tabulky pak budu potřebovat vypsat názvy těch obrázku Takže bych potřeboval nějak oddělit ty zrovna uploadnuté názvy od těch starších Jednoduše řečeno.. Pak bych je nějak potřeboval přiřadit k těm hodnotám $nadpis $mesto $text $odkaz... |
||
skrebl Profil |
#4 · Zasláno: 10. 2. 2013, 15:23:30
juriad:
Jak se pozná co k čemu patří? Pomohlo by třeba kdybych do té druhé tabulky dal stejný nadpis nebo nějaké další id? |
||
juriad Profil |
Nerozumím tomu, co jsou u tebe "reference".
Ale obecně zde jde o vazbu 1:n: Jedné referenci přísluší více obrázků a zároveň jeden obrázek přísluší jedné referenci. Ta se v databázi realizuje dvěma tabulkami následovně: tabulka reference (id_reference, nadpis, text, odkaz) tabulka obrazky (id_obrazku, id_reference, obrazek) Jednoduše v tabulce reference budeš mít nějaký primární klíč - jednoznačný identifikátor, obvykle se používá sloupec id s vlastností AUTOINCREMENT. Každý obrázek bude u sebe mít to id_reference a navíc ještě své id_obrazku. Přes id_reference bude svázaný s referencí a id_obrazku bude sloužit pro jeho identifikaci. |
||
skrebl Profil |
#6 · Zasláno: 10. 2. 2013, 17:00:33
juriad:
Ano, to chápu, ale nevím jak dostat do té druhé tabulky id té reference.. |
||
juriad Profil |
#7 · Zasláno: 10. 2. 2013, 17:31:51
Napřed provedeš insert do tabulky reference. Jaké id dostala nově vzniklá reference zjistíš pomocí mysql_insert_id (pokud použiješ autoincrement). A další sérií insertů vložíš do tabulky obrazky postupně všechny obrázky spolu s id reference, které již znáš (z prvního kroku).
|
||
skrebl Profil |
#8 · Zasláno: 10. 2. 2013, 18:19:07
juriad:
To id jsem vyřešil takto: // získání id $tablename = "reference"; $next_increment = 0; $qShowStatus = "SHOW TABLE STATUS LIKE '$tablename'"; $qShowStatusResult = mysql_query($qShowStatus) or die ( "Query failed: " . mysql_error() . "<br/>" . $qShowStatus ); $row = mysql_fetch_assoc($qShowStatusResult); $next_increment = $row['Auto_increment']; /// -------------- Akorát teď zase nevím jak ty obrázky které patří příslušné referenci vypsat všechny. Vždy se mi vypíše pouze ten první s tím id reference if ($_GET['id'] == $_GET['id']) { $id = $_GET['id']; echo $id; $vysledek = mysql_query("SELECT * FROM reference WHERE id = '$id'") or die(mysql_error()); $row = mysql_fetch_array($vysledek); echo "<h2>".$row["nadpis"]."</h2>\n"; //zobrazíme nadpis echo "<p>".$row["mesto"]."</p>\n"; //zobrazíme nadpis echo "<p>".$row["text"]."</p>\n"; //zobrazíme nadpis echo "<p>".$row["odkaz"]."</p>\n"; // zobrazíme text $pocetobr = $row["obrazek"]; $refobr = mysql_query("SELECT * FROM obrazky WHERE id_reference = '$id'") or die(mysql_error()); $row2 = mysql_fetch_array($refobr); $obr = $row2["obrazek"]; foreach($obraz as $obr) { echo $obraz; } echo $obr; for($i = 1; $i < $pocetobr; $i++) { echo '<img src="uploads/$obr">'; } } Jak můžete vidět tak jsem zkusil několik různých možností |
||
Majkl578 Profil |
#9 · Zasláno: 10. 2. 2013, 18:53:42
skrebl:
„To id jsem vyřešil takto:“ To je velmi špatné řešení. Může nastat situace, že poběží více požadavků paralelně (což je vysoce pravděpodobné) a v tu chvíli je tato informace nespolehlivá -- v obou scriptech může být stejná popř. jeden script proběhne rychleji, tudíž některý z běžících scriptů bude ukládat neplatné údaje. Použij správný přístup, tj. mysql_insert_id již zmíněné v [#7]. |
||
skrebl Profil |
#10 · Zasláno: 10. 2. 2013, 19:18:01
Majkl578:
juriad: Dobře, použil jsem mysql_insert_id a funguje to, ale stále nevím jak to z té databáze vypsat. |
||
Majkl578 Profil |
#11 · Zasláno: 10. 2. 2013, 21:15:38
Dotaz vrací víceřádkový výsledek, je tedy nutné použít výpis v cyklu (to jsou ale základy). Příklad použití je např. ve FAQ (tj. ta část s while).
|
||
skrebl Profil |
#12 · Zasláno: 10. 2. 2013, 21:34:55
Jj, děkuju za rady :) Už jsem na to přišel. Předtim sem zkoušel cyklus for a foreach, ale teď jsem použil while a ten funguje :)
|
||
Časová prodleva: 11 let
|
0