Autor | Zpráva | ||
---|---|---|---|
martinenecek Profil |
#1 · Zasláno: 28. 2. 2007, 18:13:16
Ahoj do fora,
mam takovy dotaz... Mam databazi studenti, v ni rekneme dva zaznamy student Petr Novosad a Patrik Novak. A ted co potrebuji. Potrebuji zjistit pocet zaznamu... v tomto pripade 2 a vypsat prvne zaznam prvni to znamena Petr Novosad a pak druhy Patrik Novak podle razeni prijmeni vzestupne. Jak to udelat ? Zaznamy jsou ciselne razeny podle ID, ktere je vsak ruznocisle. Tak jak to mam nize to nechci. Tak jak to mam nize to pracuje tak, ze do promenne jmeno to ulozi obe jmena a do promenne prijmeni to ulozi obe prijmeni. Potrebuji projet vsechny zaznamy, ale jednotlive radky ulozit zvlast do promenne nejlepe pomoci cyklu for a do pole. Potrebuji prave jeste zmeni pro kazdy zaznam ono id na 1 a 2. Dekuji $result = mysql_query ("SELECT `id` FROM `studenti`") or die ("SQL dotaz neslo provest"); $pocet_zaznamu = mysql_num_rows($result); $result = mysql_query ("SELECT * FROM `studenti`") or die ("SQL dotaz neslo provest"); for ($counter=0;$counter<$pocet_zaznamu;$counter++) { while($row = mysql_fetch_array ($result)) { $prijmeni=$row["prijmeni"]; $jmeno=$row["jmeno"]; } |
||
nightfish Profil |
#2 · Zasláno: 28. 2. 2007, 18:54:43
select count(*) from studenti
select * from studenti order by prijmeni |
||
martinenecek Profil |
#3 · Zasláno: 28. 2. 2007, 19:15:32
jasne ale ja potrebuji nacist kazdy zaznamy do promenne, u teto promenne zmenit ID podle poradi prijmeni a vypsat, pote nacist dalsi zaznam do te same promenne, zase zmenit ID ted uz 2 a zase vypsat. Nebo nacist do pole a pak v cyklu zmenit ID. Nevim jak vypisovat jednotlive zaznamy v databazi, jak se posouvat. Zaznamy jsou razeny podle ID, ale ID je ruznorode. Proto by bylo fain i ID nejakym prikazem setridit v databazi treba podle prijmeni od 1 do xx ale nevim jak :(
|
||
tiso Profil |
#4 · Zasláno: 28. 2. 2007, 19:28:45
martinenecek prečo chceš meniť id podľa radenia stĺpca? Nie je to zbytočné? Načo to potrebuješ?
|
||
martinenecek Profil |
#5 · Zasláno: 28. 2. 2007, 20:11:33
To:
ja bohuzel potrebuji vypsat do vystupniho souboru prave zaznamy a jejich hodnoty ze sloupcu a ID musi jit od 1 do XX.... bohuzel kdyz se v databazi maze a pridavaji zaznamy, je to ID uplne rozhozene, nebo to udelat jinak, ale netusim jak. Na vystupu musi byt presne to, co potrebuji na vstupu do excel, bohuzel musi to tak byt bez dalsich uprav v excel. |
||
nightfish Profil |
#6 · Zasláno: 28. 2. 2007, 20:21:48
martinenecek
a co ti brání jako ID použít hodnotu řídicí proměnné cyklu? ($counter) |
||
martinenecek Profil |
#7 · Zasláno: 28. 2. 2007, 20:52:46
To : nightfish jenze mne ten cyklus nefunguje, jak rikam, ten cyklus se provede vzdy jen jednou. Ja nevim jak udelat nacist jeden zaznam, do ID priradit $counter cyklu a zapsat tento zaznam do vystupniho souboru a pak nacist druhy zaznam a tak pokracovat. Nevim, jak se mam posunout na dalsi zaznam, jak pristupovat do databaze vzit jeden zaznam a pak dalsi v cyklu, kdyz se nemohu o nic oprit, Nemohu ze oprit o zadny sloupec, pouze o ID databaze ktery je autoincrement ale jak rikam jsou tam ruzna ID. Mozna by mi stacil SQL dotaz, ktery setridi databazi podle prijmeni a predela ID podle razeni prijmeni od 0 do xx
$result = mysql_query ("SELECT `id` FROM `studenti`") or die ("SQL dotaz neslo provest"); $pocet_zaznamu = mysql_num_rows($result); $pole=array(); $result = mysql_query ("SELECT * FROM `studenti`") or die ("SQL dotaz neslo provest"); for ($counter=0;$counter<$pocet_zaznamu;$counter++) { while($row = mysql_fetch_array ($result)) { $id=$counter; $prijmeni=$row["prijmeni"]; $jmeno=$row["jmeno"]; $pole[$counter] = "$id;"."$prijmeni;"."$jmeno;"; FWrite ($filename, "$pole[$counter] "); } } FClose ($filename); |
||
djlj Profil |
#8 · Zasláno: 28. 2. 2007, 20:59:35 · Upravil/a: djlj
$result = mysql_query ("SELECT * FROM `studenti`") or die ("SQL dotaz neslo provest");
$id=1; while($row = mysql_fetch_array ($result)) { $pole[$id] = $id.$row["prijmeni"].$row["jmeno"]; FWrite ($filename, $pole[$id]); FClose ($filename); $id++; } Jen jsem nepochopil, odkud bereš $filename. |
||
martinenecek Profil |
#9 · Zasláno: 28. 2. 2007, 21:39:29
To: djlj
chybi mi tam prave zainteresovany cyklus, tohle mi vypise pouze jeden zaznam z databaze, ja potrebuji projet vsechny zaznamy a tak jak pises, menit ID a zapisovat jednotlive zaznamy do souboru. $filename mam definovano pred touto problematikou, ale do souboru mi to uklada..alespon neco :( tak poradi nekdo presneji ? dekuji za kazdou radu. |
||
djlj Profil |
#10 · Zasláno: 28. 2. 2007, 21:45:10 · Upravil/a: djlj
martinenecek
Toto nevypíše jeden záznam z databáze, ale všechny. Ještě jsem to teď trochu poupravil, zkus to. |
||
martinenecek Profil |
#11 · Zasláno: 28. 2. 2007, 22:15:30
To: djlj
bohuzel to vypisuje pouze jeden zaznam stale... tohle resim od sameho zacatku i kdyz jinak :) proste se nedokazu posunout na dalsi zanam. Vyresil jsem to cyklem for, ale ten se chova nekorektne. |
||
djlj Profil |
#12 · Zasláno: 28. 2. 2007, 22:17:53
martinenecek
A co vrací echo mysql_num_rows($result);? |
||
martinenecek Profil |
#13 · Zasláno: 28. 2. 2007, 22:27:46
To: djlj
vraci cislo 2, protoze v databazi mam cvicne 2 zaznamy.. dva studenty, takze tady chybka neni... |
||
djlj Profil |
#14 · Zasláno: 28. 2. 2007, 22:30:02
martinenecek
V tom případě i ten cyklus while bude proveden 2x. Není problém v tom, že pokud je již soubor vytvořen, script nemá práva do něj znovu zapisovat? |
||
tiso Profil |
#15 · Zasláno: 1. 3. 2007, 00:22:34 · Upravil/a: tiso
ja to vidím tak že zápis do toho súboru musí byť mimo cyklu...
$id=1; okrem toho dúfam že ten for cyklus tam už nepcháš, je celkom zbytočný... |
||
martinenecek Profil |
#16 · Zasláno: 1. 3. 2007, 08:42:38
To: tiso
problem bohuzel nevyresen tohle do souboru vypise pouze cisla 12 a nic vice :( |
||
nightfish Profil |
#17 · Zasláno: 1. 3. 2007, 09:12:48
martinenecek
shrňme si to 1) potřebuješ zjistit počet řádků tabulky 2) potřebuješ z této tabulky vypsat postupně všechny řádky, přičemž je chceš postupně očíslovat (od 1 dál) 3) potřebuješ takto zjištěná data vložit do souboru ad 1) k tomu jsme se dobrali ad 2) napiš, jaká je struktura tabulky - tzn. jaké má sloupce, jakého typu jsou ty sloupce ad 3) tohle vyřešíme, až bude všechno ostatní fungovat |
||
martinenecek Profil |
#18 · Zasláno: 1. 3. 2007, 09:42:52
ok.. takze databaze studenti/tabulka studenti.... v ni sloupce:
id int(5) auto_increment prijmeni varchar(20) jmeno varchar(20) jinak je tam dalsich 35 sloupcu, vsechny typu var, varchar, integer, asi je zbytecne je zde vsechny vypisovat. Staci mi funkcnost na tyto 3 sloupce, pak to bude fungovat na vse. Do souboru jich potrebuji vypsat kolem 10. Ale problem neni ve vypisu sloupcu, spise vhodne umistit cyklus. Ten muj puvodni kod funguje, vypise to vsechny databazove zaznamy korektne, ale nezmeni id, protoze cyklus for se vykona pouze jednou a tudiz $counter je vzdy 0 nebo 1 podle podminky. Potrebuji nejak tomu while rict, vypis pouze jeden zaznam tabulky, a cyklu for rict prepni se na dalsi zaznam v tabulce zvys $counter a tento $counter uloz do ID. Vsechny zaznamy ulozit nejlepe do $pole[$counter] a pak ulozit do souboru. Nevim, jestli je to takhle mozne. Vnitrni while mi funguje, dokud je co z tabulky vypisovat, ale vypise vsechno. Jeste me napadlo prepsani ID do databaze od 1 do xx a pak bych si to bral z databaze dotazem, kde bude podminka a cyklus na ID. ale nevim, jak zaznamy setridit podle prijmeni tak, ze prijmeni bude vzestupne a id bude k temto zaznamu prinalezet take vzestupne. Jestli to resi Update nebo neco podobneho ? |
||
nightfish Profil |
#19 · Zasláno: 1. 3. 2007, 10:06:25
zkus tohle... jediná potřebná úprava je doplnění připojení k databázi na úplný začátek
$result = mysql_query("select count(*) from studenti"); |
||
tiso Profil |
#20 · Zasláno: 1. 3. 2007, 12:05:23
martinenecek tak potom: mysql_fetch_array zmeň na mysql_fetch_assoc v tom mojom skripte...
|
||
martinenecek Profil |
#21 · Zasláno: 2. 3. 2007, 18:47:16
Dekuji vsem podle scriptu od nightfish to uz funguje, jen musim pokoumat, jak si to vlastne udelal :)
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0