Skocz do zawartości

[PHP i MySql] Pomoc w rozwiązaniu problemu ze skryptem.


3aran

Rekomendowane odpowiedzi

Napisano

Witam.

Jako, że jest tu trochę informatyków mam nadzieję, że mi ktoś pomoże. :)

 

Mam skrypt php pobierający dane z bd mysql:

<?php

require_once('funkcje.php');

 

function pobierz_ogloszenia()

{

$lacz = lacz_bd();

$wynik = $lacz->query("select *

from wiad");

if (!$wynik)

return false;

$tablica_ogl = array();

for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik)

{

$tablica_ogl[$licznik] = $wiersz[0];

}

return $tablica_ogl;

}

i drugi skrypt mający za zadanie wyświetlić to w tabeli:

function pokaz_ogloszenia($tablica_ogl)

{

global $tabela_ogl;

$tabela_ogl = true;

?>

<br />

<form name=tabela_ogl action="usun_ogl.php" method=post>

<center>

<table width=1000 cellpadding=2 cellspacing=0>

<?php

$kolor = "#cccccc";

echo "<tr bgcolor=$kolor><td><strong>Nr ogloszenia</strong></td>";

echo "<td><strong>Temat</strong></td>";

echo "<td><strong>Wlasciciel</strong></td>";

echo "<td><strong>Data napisania</strong></td>";

echo "<td><strong>Tresc</strong></td>";

echo "<td><strong>Usun</strong></td>";

if (is_array($tablica_ogl) && count($tablica_ogl)>0)

{

foreach ($tablica_ogl as $ogl)

{

if ($kolor == "#cccccc")

$kolor = "#ffffff";

else

$kolor = "#cccccc";

echo "<tr bgcolor=$kolor><td>".$ogl[0]."</td>";

echo "<td>".$ogl[1]."</td>";

echo "<td>".$ogl[2]."</td>";

echo "<td>".$ogl[3]."</td>";

echo "<td>".$ogl[4]."</td>";

echo "<td><input type=checkbox name=\"usun_mnie[]\"value=\"$url\"></td>";

echo "</tr>";

}

}

else

echo "<tr><td>Brak zapisanych ogloszen</td></tr>";

?>

</table>

</center>

</form>

 

Powie mi ktoś, czemu wyświetla mi się tylko pierwsza kolumna? :D

 

Lista kolumn to id, temat, wlasciciel, data_n, tresc.

Napisano

Do pobierania danych zrob sobie cos takiego:

 

$query = 'SELECT * FROM `table` WHERE ... ORDER BY ...;';
$out=array();
$res = $db->query($query);
if(mysql_num_rows($res)==0)
{
return $out;
}
while($row = mysql_fetch_assoc($res))
{
$out[$row['incremented_field']]=$row;
}
return $out;


a potem juz sie tylko po tym iterujesz wyswietlajac dane w tabeli:

$html = '';
foreach($out AS $key => $item)
{
$html .= '<tr>';
$html .= '<td>'.$item['some_field'].'</td>';
$html .= '</tr>';
}

echo $html;

 

to tak w duzym uproszczeniu - na Twoje potrzeby powinno byc ok

Napisano

Wielkie dzięki. Sprawdzę wieczorkiem. :P

 

A wiesz może czemu mój skrypt nie chce działać? :thumbsup:

 

for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik)
{
$tablica_ogl[$licznik] = $wiersz[0];
}

 

Trochę niejasna pętla. Spróbuj zdebugować wynik, wykonując np.:

print_r($tablica_ogl)

Napisano

for ($licznik = 0; $wiersz = $wynik->fetch_row(); ++$licznik)
{
$tablica_ogl[$licznik] = $wiersz[0];
}

 

Trochę niejasna pętla. Spróbuj zdebugować wynik, wykonując np.:

print_r($tablica_ogl)

 

Dostaje coś taiego:

 

Array()Array( [0] => 1)Array( [0] => 1 [1] => 2)Array( [0] => 1 [1] => 2 [2] => 3)

Napisano

Do pobierania danych zrob sobie cos takiego:

 

$query = 'SELECT * FROM `table` WHERE ... ORDER BY ...;';
$out=array();
$res = $db->query($query);
if(mysql_num_rows($res)==0)
{
return $out;
}
while($row = mysql_fetch_assoc($res))
{
$out[$row['incremented_field']]=$row;
}
return $out;


a potem juz sie tylko po tym iterujesz wyswietlajac dane w tabeli:

$html = '';
foreach($out AS $key => $item)
{
$html .= '<tr>';
$html .= '<td>'.$item['some_field'].'</td>';
$html .= '</tr>';
}

echo $html;

 

to tak w duzym uproszczeniu - na Twoje potrzeby powinno byc ok

 

mógłbyś mi jeszcze powiedzieć jak to zapętlić? Wyświetla mi tylko jeden rekord... ^_^

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...