Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php + mysql + smarty] Problem z LIKE
sivyer
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 17.04.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z ponizszym zapytaniem SQL, pierwsze 3 rekordy dla litery A wyciaga poprawnie, pozniej sie sypie z bledem o nieprawidlowym argumencie dla foreach(). Chce, aby kolejno z bazy zawodnikow wyciagane byly nazwiska zaczynajace sie na kolejne litery alfabetu i wyswietlane:

A
nazwiska na A

B
nazwiska na B

itd.

[php:1:efb69e4755]
<?php
$ar = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","W","X","Y","Z");
for( $i=0; $i<count($ar); $i++ ) {
$pl_loop[] = $i;
$smarty->assign("pl_loop", $pl_loop );
$smarty->assign("pl_litera", $ar );
$litera = $ar[$i];
$res = $db->get_results("SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname LIKE '".$litera."%'");
foreach( $res as $player ) {
$pl_id[] = $player->playerID;
$pl[] = "$player->pl_surname, $player->pl_name";
}
// ...
?>
[/php:1:efb69e4755]

Probowalem:
[sql:1:efb69e4755]
SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname LIKE '".$litera."%'
SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname LIKE '$litera%'
SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname REGEXP '^$litera.*'
SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname REGEXP '^$litera.*'
SELECT playerID,pl_name,pl_surname FROM pro_players WHERE pl_surname REGEXP '^".$litera.".*'[/sql:1:efb69e4755]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
HaRy
post
Post #2





Grupa: Zarejestrowani
Postów: 152
Pomógł: 0
Dołączył: 15.05.2002
Skąd: Łódź

Ostrzeżenie: (0%)
-----


hmm

ja zrobil bym to tak:

[php:1:547f9e8aad]<?php

$literki =
array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U
","V","W","X","Y","Z");
$tmp = array();
foreach($literki as $litera) {
$r = mysql_query("select nazwisko from tabela where nazwisko like '".$litera."%'");
$tmp2 = array();
while($t = mysql_fetch_assoc($r)) {
array_push($tmp2,array("nazwisko" =>$t[nazwisko]));
}
array_push($tmp,array("litera" => $litera,"nazwiska" => $tmp2));
}
$smarty -> assign('dane',$tmp);


?>[/php:1:547f9e8aad]

a w tpl'u
Kod
{section name=l loop=$dane}

   <b>{$dane[l].litera}<br>

   {section name=t $dane[l].nazwiska}

      {$dane[l].nazwiska[t].nazwisko}<br>

   {sectionelse}

      Brak nazwisk na {$dane[l].litera}<br>

   {/section}

   <hr>

{/section}

zapodaj do tego swoje style obslugi bazy danej i powinno dzialac, chyba ze gdzies jakas literowke zrobilem ...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 20:30