Autor | Zpráva | ||
---|---|---|---|
Pavel Trololo Profil * |
#1 · Zasláno: 6. 1. 2015, 20:27:04
Ahoj, mám v databázi uložené v jednom ze sloupců data ve tvaru..
Auto => Škoda Rapid; Jméno => Pavel Trololo; Další => Cokoliv; Pak to vytáhnu z databáze a uložím to do pole takhle: $array1 = array($answer['info']); Ale vůbec mi nejde žádným způsobem z toho dostávat data. $array1[0] mi vypíše jen první písmeno. Co dělám špatně, zkoušel jsem i foreach i json_decode, ale pořád stejný nebo error. |
||
lionel messi Profil |
#2 · Zasláno: 6. 1. 2015, 20:30:51
Pavel Trololo:
„Pak to vytáhnu z databáze a uložím to do pole takhle:“ Ako presne ťaháš údaje z databázy? „$array1[0] mi vypíše jen první písmeno.“ Podobná situácia nastane, keď pristupuješ k reťazcu ako k poľu, to naznačuje, že $array1 je reťazec. Možno by som skúsil var_dump($array1) na ozrejmenie skutočného obsahu a typu premennej.
|
||
Pavel Trololo Profil * |
#3 · Zasláno: 6. 1. 2015, 20:34:01
lionel messi:
No, takhle.. mysql_query("SET NAMES utf8"); $question = mysql_query("SELECT * FROM Tabulka WHERE `URL` = '$vyraz'"); $answer=mysql_fetch_array($question); a var_dump mi vypíše array(1) { [0]=> string(121) "Auto => Škoda Rapid; Jméno => Pavel Trololo; Další => Cokoliv;" } |
||
lionel messi Profil |
#4 · Zasláno: 6. 1. 2015, 20:40:13
Pavel Trololo:
Až teraz som si všimol toto: > mám v databázi uložené v jednom ze sloupců data ve tvaru.. > Auto => Škoda Rapid; Jméno => Pavel Trololo; Další => Cokoliv; V prvom rade to zaváňa veľmi zlým databázoým návrhom. Máš nejaký (rozumný) dôvod na ukladanie takéhoto „gulášu“ do jedného stĺpca? Prečo neuložíš do jedného auto, do druhého meno a tak ďalej? |
||
Pavel Trololo Profil * |
#5 · Zasláno: 6. 1. 2015, 20:47:16
lionel messi:
Mno, ve skutečnosti jsem chtěl dát poddotaz jestli je to dobré řešení, ale pak jsem to smazal. Fakt. :) Důvody jsou: 1) Nevím kolik položek tam bude... cca 1 - 5, ale může být i víc. 2) Hlavně kvůli fulltextovému vyhledávání mi to příjde lepší řešení, než to rozložit do 5 sloupců. |
||
Fisir Profil |
Reaguji na Pavela Trolola:
Funkci array() předáš klíče a hodnoty a ona podle nich vytvoří pole. Ty ale z databáze vybereš string a ten jí předáš. Ona si to vyloží jako pole bez klíče s jedním prvkem, a proto ti var_dump vypisuje to, co ti vypisuje. Jak již zmínil [#4] lionel messi, pravděpodobně je to špatným návrhem databáze a pokud jej nezměníš, nepůjde to jednoduše řešit.
$array1 = array(); $items = explode(';', $answer['info']); foreach($items as $item){ $parsed = explode('=>', $item, 2); if(count($parsed) === 2){ $array1[trim($parsed[0])] = trim($parsed[1]); } } Tento kód provede to, co chceš. Je to ale prasácké řešení a doporučuji ho buď vůbec nepoužívat, nebo jen dočasně, než opravíš ten návrh databáze. Případně se jako lepší řešení jeví použít jednoduše parsovatelný JSON. |
||
Pavel Trololo Profil * |
#7 · Zasláno: 6. 1. 2015, 20:54:13 · Upravil/a: Pavel Trololo
Dobře, mám tam 1 až dejme tomu 10 položek, které chci vypsat a fultextově prohledávat. Navíc ty položky můžou být relativně unikátní, není dáno vždy jméno, auto. Prostě 1-10 různých položek, kde je název hodnoty a hodnota. A zároveň nikterak nepotřebuji sortovat podle jednotlivých položek. Je pak opravdu lepší to rozdělit do deseti sloupců?
Nebo univerzálně, chtěl bych prostě ukládat pole, lze to nějakým fíglem ukládat do databáze? |
||
Fisir Profil |
#8 · Zasláno: 6. 1. 2015, 21:01:25
Reaguji na Pavela Trolola:
„chtěl bych prostě ukládat pole, lze to nějakým fíglem ukládat do databáze?“ JSON. |
||
Pavel Trololo Profil * |
#9 · Zasláno: 6. 1. 2015, 21:41:42
Fisir:
„JSON.“ Tak děkuji, funguje to. $testJSON = array($array1); echo $testJSON[0]; echo "<hr>"; echo json_encode($answer['info']); Uložil jsem to do databáze ve formátu JSON, sice mi to funguje přes json_encode() prapodivně, ale přes ten array to jde zase hezky. |
||
Časová prodleva: 9 let
|
0