| 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: 14 let
|
|||
0