Autor Zpráva
majja01
Profil
Ahoj neumím moc s mysqli a tak sem sesmolil tento kod
   <?php $mysqli = new mysqli();
$mysqli -> connect ("127.0.0.1","root", "","mak");
        if(empty($_GET["type"])) $type="'venecek', 'krasohled','obraz'"; 
        else $type="'".$_GET["type"]."'"; $query = "select * from vyrobek  ";
        $result = $mysqli->query($query,MYSQLI_USE_RESULT);
        while ($zaznam=$result->fetch_array(MYSQLI_ASSOC)):
             ?>
            <a href="detail.php?id=<?php echo $zaznam["id"];?>"> 
                <li style="background:url(img/<?php echo $zaznam["picture"];?>); background-size:contain;">
                    <div class="info">
                           <?php echo $zaznam["name"];?>
                            <span class="right"><?php echo $zaznam["price"];?> Kč</span>
                    </div>
                </li>
            </a>
     <?php 
     $result->free();
    endwhile; ?>
nefunguje mi čeština a vypíše se jenom jedna položka + ukazuje chybu Warning: mysqli_result::fetch_array(): Couldn't fetch mysqli_result in D:\php\mak\index.php on line 139
Děkuji všem za pomoc
Lamicz
Profil
A když dáš $result->free(); až za while cyklus?
Kubo2
Profil
majja01:
Čo keby si sa aspoň letmo pozrel do dokumentácie a pokúsil sa tam nájsť nejakú funkciu pre nastavenie znakovej sady/kódovania prenosu? (V angličtine sa to nazýva charset/transfer encoding.) Problém s diakritikou bude zrejme (určite) v tom, že sa ti dáta prenášajú v inom kódovaní, aké používaš vo webových stránkach.

Ak chceš programovať v PHP, mal by si sa naučiť porozumieť, čo znamenajú chybové hlášky (odkazovanú stránku si určite prečítaj, mala by ti s tým pomôcť). Ďalej si pozri, čo všetko môže vrátiť mysqli::query() a dokumentáciu k metóde mysqli_result::fetch_array().
majja01
Profil
Lamicz:
Děkuji teď to funguje...
Kubo2
čeština už mi taky funguje...
teď mám jiný problém.. potřebuji zjistit kolik má daný sloupec (uid) výsledků.
$mysqli = new mysqli();
$mysqli->connect ("127.0.0.1","root", "","mak");
$mysqli->set_charset("utf8");
  $sql = "SELECT COUNT(*) FROM komenty WHERE uid = '$uid'";
  $result = $mysqli->query($sql,MYSQLI_USE_RESULT);
   $result->result();
Fisir
Profil
Reaguji na majju01:
potřebuji zjistit kolik má daný sloupec (uid) výsledků
Pokud uid znamená unikátní ID a máš dotaz WHERE uid = $uid, tak jen jeden. Nebo je tu jiný problém?
Kubo2
Profil
Doplnené.

Fisir:
Nebo je tu jiný problém?
Minimálne jeden ďaľší by sa tu našiel, viď nižšie.


majja01:
Trieda mysqli_result neimplementuje metódu result(). Čo chceš dosiahnuť týmto bezhlavým vymýšľaním a používaním neexistujúcich metód?
majja01
Profil
Kubo2:
původní kod je tento:
for ($pokus = 0;; $pokus++) {
  
$uid = md5 (uniqid (rand())); 
  $result = mysql_query("SELECT COUNT(*) FROM komenty WHERE uid = '$uid'");
  $pocet = mysql_result($result, 0, 0);
   
  if ($pocet == 0) {
  $_SESSION["com"] = $uid;
   $insert = mysql_query("INSERT INTO komenty (id,proid,uid,name,email,content) VALUES('','$id','$uid','$jmeno','$email','$zprava')"); 
    break;
     
  } else if ($pokus > 5000) {
    
  }

}
a já ho potřebuji převést do mysqli
Fisir
Profil
Reaguji na majju01:
potřebuji převést do mysqli
Tak se snaž. Když si klikneš na funkci mysql_result, přesuneš se tím do dokumentace a zjistíš, jaké jsou její ekvivalenty v MySQLi.
majja01
Profil
Fisir:
nevím ??
Fisir
Profil
Reaguji na majju01:
nevím ??
To je potom těžký. Nečekej, že ti tu bude někdo přepisovat celý kód, musíš projevit trochu vlastní iniciativy.

$pocet = mysql_result($result, 0, 0);
$pocet = $result->num_rows;
majja01
Profil
Fisir:
$result = mysqli_query("SELECT COUNT(*) FROM komenty WHERE uid = '$uid'");
  $pocet = $result->num_rows;
díky moc :)))
abc
Profil
$result = mysqli_query("SELECT COUNT(*) FROM komenty WHERE uid = '$uid'");
$pocet = $result->num_rows;
Vrátí 1 i kdyby tam bylo uid 1000.
Buď je třeba změnit dotaz na např.
SELECT uid FROM komenty WHERE uid = '$uid'

Nebo získat počet z výsledku (COUNT(*)):
$result = mysqli_query("SELECT COUNT(*) FROM komenty WHERE uid = '$uid'");
$row = $result->fetch_row();
$pocet = $row[0];
Kubo2
Profil
majja01:
V $result->num_rows budeš mať vždy jedničku, pretože dotaz vráti jeden riadok s návratovou hodnotou COUNT(*).
majja01
Profil
abc, Kubo2:
jo díky... mám se ještě hodně co učit...

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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