Autor Zpráva
tomas2245
Profil
Zdravím, už dlhšie si lámem hlavu s tým, ako by som spravil to, že keď beriem z databáze ID ktoré vyzerá typu: ,,1." je tam aj tá bodka, tak by som to chcel vytiahnuť z tej databázy bez tej bodky čiže len ,,1"

bolo by to možné? napadlo ma, že by sa to dalo pomocou str_replace ale neviem ako by som to zakombinoval do toho môjho kódu, môžete sa nato niekto prosím pozrieť, prípadne iné riešenie navrhnúť?

Kód:

$vnrzp = mysqli_query($pripoj,"SELECT * FROM tabulka ORDER BY id + 0 ASC");

while($vnrzp2 = mysqli_fetch_array($vnrzp)){

    $pridat .= ''<input type="number" name="'.$vnrzp2['id'].'">';

}
pcmanik
Profil
tomas2245:
<input type="number" name="'. rtrim($vnrzp2['id'], '.') .'">

To tvoje ID nieje unikátny identifikátor, ale obyčajný string = máš zle navrhnutú databázu.
Joker
Profil
Tak v první řadě je divné už to, co dělá ta tečka u čísla v databázi.
tomas2245
Profil
pcmanik:

vďaka funguje to..:)
tomas2245
Profil
Zdravím,

nechcem zakladať ďalšie téma v jeden deň, tak využijem túto tému nato.
Chcel by som sa spýtať ako by som mohol usporiadať od A-Z tento kód:

$vobj = mysqli_query($pripoj2,"SELECT * FROM tabulka WHERE id='$idecko'");
$vobj = mysqli_fetch_array($vobj);


$tovar = array();

$tovar = unserialize($vobj['tovar']);

$vrat_tovar = "";

foreach($tovar as $kluc => $obsah){
    $vtvr = mysqli_query($pripoj,"SELECT * FROM tabulka WHERE id='$kluc'");
    $vtvr = mysqli_fetch_array($vtvr);
    }
    $vrat_tvr .= $kluc.': '.$obsah.'';
}
pcmanik
Profil
tomas2245:
Pridaj do dotazu/ov ORDER BY stlpec ASC

ASC - ascending - A-Z
DESC - descending - Z-A
tomas2245
Profil
pcmanik:

nefunguje, ale ďakujem za nápad..
pcmanik
Profil
tomas2245:
Ale funguje, ukáž ako sa to snažíš použiť. Zrejme robíš niečo zle.
tomas2245
Profil
ono v tom stĺpci v databáze ktorý chcem usporiadať to vyzerá serializované nejak takto: a:7:{s:4:"131.";i:5;s:3:"21.";i:20;}

pôjde to vôbec usporiadať?

<?php

$test = mysqli_query($pripoj2,"SELECT * FROM tabulka WHERE id='$idecko' ORDER by nazovstlpca ASC");
$test = mysqli_fetch_array($test);

$tovar = array();
 
$tovar = unserialize($test['tovar']);
 
$vrat_tovar = "";
 
foreach($tovar as $kluc => $obsah){
    $vtvr = mysqli_query($pripoj,"SELECT * FROM tabulka WHERE id='$kluc'");  //odtiaľto získavam len názvy z inej tabuľky
    $vtvr = mysqli_fetch_array($vtvr);
    }
    $vrat_tvr .= $vtvr': '.$obsah.'';
}

?>
Keeehi
Profil
tomas2245:
$test = mysqli_query($pripoj2,"SELECT * FROM tabulka WHERE id='$idecko' ORDER by nazovstlpca ASC");
$test = mysqli_fetch_array($test);

$tovar = unserialize($test['tovar']);

$vtvr = mysqli_query($pripoj, "SELECT * FROM tabulka WHERE id IN ('".implode("','", array_keys($tovar))."') ORDER BY sloupec ASC");

while ($row = mysqli_fetch_array($pripoj, $vtvr)) {
    print_r($row);
}

Měl by ses co nejdříve zastavit a nechat si od někoho zkontrolovat návrh databáze. Joker už v [#3] upozorňoval na to, že IDčko máš jako hodně divný string. Ty to teď ještě nevidíš, ale nejde podle něj například řadit.
Dále si ukládáš PHP serializovaná pole, které ti reprezentují vazby mezi tabulkami. No, databáze to umí samy o sobě. Navíc když použiješ jejich přístup, zvládnou s tím pracovat - můžeš vytvářet kombinované dotazy, nebo zvládnou třeba kontrolovat, zda nemažeš něco co bys neměl. Co když bys teď smazal položku s id 21.? Té položce, b které je to serializované pole najednou bude chybět.

Čím dříve se zastavíš a předěláš to tak, jak se to dělá normálně, tím méně toho budeš muset přepsat. Protože je prakticky jisté že dříve nebo později narazíš na limity takto znásilněného návrhu.
tomas2245
Profil
Keeehi:
Ja tie ID so znakmi mám iba u tovarov, inde už mám normálne čísla...a ďakujem za kód :)
Keeehi
Profil
tomas2245:
Tak měj všude čísla.
tomas2245
Profil
Keeehi:
prerobím to teda na tie čísla, a ešte otázka: ,,Dále si ukládáš PHP serializovaná pole, které ti reprezentují vazby mezi tabulkami. No, databáze to umí samy o sobě. Navíc když použiješ jejich přístup, zvládnou s tím pracovat - můžeš vytvářet kombinované dotazy, nebo zvládnou třeba kontrolovat, zda nemažeš něco co bys neměl. Co když bys teď smazal položku s id 21.? Té položce, b které je to serializované pole najednou bude chybět."
nerozumiem tomu moc, ako by som mohol ten môj kód upraviť?
Keeehi
Profil
tomas2245:
Mohu ti to vysvětlit, ale budu k tomu potřebovat vědět, jaké máš v databázi tabulky a s jakými sloupci*. A pak taky popsat, co ta vazba má vyjadřovat. Z náznaků bych hádal, že jde o doporučené produkty k nějakému výrobku ale opravdu jen hádám. Čím více se o tom rozepíšeš tím přesnější může rada být.

*předpokládám, že to co tu ukazuješ je jen něco zjednodušeného.
tomas2245
Profil
Keeehi:
ďakujem ti za snahu mi pomôcť, ale zatiaľ by som to nechal tak ako to je, veď keď to funguje tak je to fajn..
Keeehi
Profil
OK, tvoje volba. Viděl bych to asi takto
www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself
www.commitstrip.com/en/2014/05/13/a-coders-biggest-lie
www.commitstrip.com/en/2016/07/18/where-does-it-come-from
tomas2245
Profil
ešte mám otázku ako upravím tento dotaz ak chcem brať údaje z tabuľky 1 aj 2?

<?php

$dotaz = mysqli_query($pripoj,"SELECT * FROM tabulka1, tabulka2 WHERE id='1'");

?>
Keeehi
Profil
tomas2245:
Jelikož nevíme, co je v tabulce 1 a co v 2, a jaký je mezi nimi vztah, tak ti nemůžeme poradit. A pokud ten vztah je reprezentovány právě tím serializovaným polem, tak pak nijak. Kdyby jsi to měl pořádně, tak pak půjde nejspíše o nějaký JOIN.
tomas2245
Profil
Keeehi:

a ak mám príklad:

$dotaz1 = mysqli_query($pripoj,"SELECT * FROM tabulka1 WHERE id='1'");
$dotaz2 = mysqli_query($pripoj,"SELECT * FROM tabulka2 WHERE id='1'");

tak to nejako spomaľuje tú databázu alebo je to v poriadku? (určite že to trochu možno škodí ale nie je to až tak hrozné či?)
Keeehi
Profil
Nápíšu ti potřetí a naposledy. Z takto obecného popisu nejsme schopni říct, zda to máš dobře nebo ne. Pro některé případy je toto správné řešení, pro některé to zase optimální není a dalo by se to zapsat lépe.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0