Autor | Zpráva | ||
---|---|---|---|
matata8611 Profil |
#1 · Zasláno: 1. 10. 2015, 22:15:15
AHoj,
mám tento kod: <?php global $wpdb; $result = $wpdb->get_results ("SELECT * FROM $wpdb->users" ); /* vytvoření názvu dočasné tabulky */ $temp_db = "makler_tab"; /* vytvoření dočasné tabulky */ mysql_query("CREATE TEMPORARY TABLE $temp_db (id VARCHAR(20), jmeno VARCHAR(20), hodnoceni VARCHAR(20), kraj VARCHAR(20))") or die("Nelze vykonat definiční dotaz: " . mysql_error()); /* vytvoření temp table */ foreach ( $result as $makler ) :?> <?php $_SESSION['userid'] = 'user_'.$makler->ID; $_SESSION['onlyid'] = $makler->ID;?> <?php $jmeno = $makler->display_name; echo $jmeno; $id = $makler->ID; echo $id; if((int)get_user_meta($makler->ID, 'total_celkem',true) != 0) $hodnoceni = (int)get_user_meta($makler->ID, 'rate_celkem',true) / (int)get_user_meta($makler->ID, 'total_celkem',true); else $hodnoceni = "x"; $kraj = get_field('lokalita_pusobnosti', 'user_'.$makler->ID); echo $kraj; ?> <?php mysql_query("INSERT INTO $temp_db (id, jmeno, hodnoceni, kraj) VALUES ($id, $jmeno, $hodnoceni, $kraj)");?> <?php endforeach; ?> <?php $result2 = mysql_query("SELECT * FROM $temp_db ORDER BY hodnoceni DESC"); print_r (mysql_fetch_array($result2)); ?> <?php while($row = mysql_fetch_array($result2)) { echo($row['id']); }; ?> Nevím co dělám špatně... temporary table se pravděpodobně vytvoří... echo $id; echo $kraj; apod se normalne vypisi. Pak se to ale budto nezapise do tabulky: <?php mysql_query("INSERT INTO $temp_db (id, jmeno, hodnoceni, kraj) VALUES ($id, $jmeno, $hodnoceni, $kraj)");?>
Nebo je spatne ten vypis hodnot $row['id']. |
||
mimochodec Profil |
Já se jen zeptám: co je cílem toho, o co se snažíš? A proč máš <?php na každém žádku extra? A proč nepíšeš přehledněji, jako třeba za středníkem zalomení řádku?
Možná vidím, proč se ti ten dotaz neprovede, chybí tam apostrofy. Při spojování řetězců používej tuto syntaxi: $q = "INSERT INTO ".$temp_db." (jmeno, hodnoceni, kraj) VALUES ( '".$jmeno."', '".$hodnoceni."', '".$kraj."')"; Dále: sloupec ID se používá jistým způsobem, na kterém panuje shoda doslova všude. Jestli chceš ukládat do tabulky nějaký string, nepoužívej pro to sloupec ID. Dále: zdá se, že se snažíš sloupce id, kraj a hodnoceni vytvořit jako řetězcové. Rozlišuj, kdy pracuješ s číslem a kdy s řetězcem a tomu uzpůsob tabulky. Mezi "123" a 123 je třeba při porovnávání nebo filtrování výrazný rozdíl. |
||
matata8611 Profil |
#3 · Zasláno: 2. 10. 2015, 10:04:38
Díky funguje to... napsal jsem to horkou jehlou, ještě to upravím.
Když vypisuji data z temporary files takto tak to funguje: <?php while($row = mysql_fetch_array($result2)) { echo($row['id']);echo($row['kraj']); }; ?> Raději bych to ale vypsal takto: <?php foreach ( $result2 as $makler2 ) { echo $makler2->id; }?> to ale vypíše tuto chybu: Warning: Invalid argument supplied for foreach() in /data/web/virtuals/111117/virtual/www/wp-content/themes/default/page-makleri.php on line 27 Poradíte prosím? |
||
Alphard Profil |
#4 · Zasláno: 2. 10. 2015, 10:41:33
Samozřejmě, vy vůbec nechápete, co ten kód dělá... mysql_query vrací tzv. resource, to je odkaz na data, která lze procházet pomocí speciálních mysql_* funkcí. Nelze je vynechat.
Ta dočasná tabulka vzniká jen kvůli řazení? Pokud ano, bude to hádám řádově pomalejší, než by mohlo být. (Jediná výhoda této šílenosti je, že nikdy nepotřebuje mít v paměti celou tabulku. Ale v situaci, kdy by to bylo relevantní, to hádám vyprší na max execution time :-)) |
||
tiso Profil |
#5 · Zasláno: 2. 10. 2015, 12:16:21
matata8611:
Najbližšie tomu, čo chceš je toto: <?php while($makler2 = mysql_fetch_object($result2)) { echo $makler2->id; } ?> |
||
matata8611 Profil |
#6 · Zasláno: 2. 10. 2015, 21:07:45
díky oběma... super.
|
||
Časová prodleva: 9 let
|
0