Autor Zpráva
matata8611
Profil
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."')";
To, jaks to napsal ty, může fungovat taky, ale trochu jinak a hlavně bys u toho musel vědět, co děláš. Pokud v tom jasno nemáš, používej spojování tečkou.

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
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
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
matata8611:
Najbližšie tomu, čo chceš je toto:
<?php
while($makler2 = mysql_fetch_object($result2))  {
    echo $makler2->id;
}
?>
Trváš na tom foreach cykle?
matata8611
Profil
díky oběma... super.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0