Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Dotaz do db MySQL na základě předané proměnné

Předám si přes $_GET proměnnou s id otázky. Podle ní si chci vytáhnout z databáze text otázky, aby to měl odpovídající na očích, ale nenačte se mi vůbec stránka, zase asi nějaký pžeklep, jsem na ně mistr, nebo jiná "kráťovina". kus kódu, s poznámkami.

<!--předání proměnné - pak ta echa vyndám-->
<?php
if (isset($_GET['id']))
echo 'Předána proměnná id = ',$_GET['id'],'<br>';
else
echo 'Proměnná id nebyla předána<br>';
$id = $_GET[id];
echo "$id";
?>

<!--když vyndám následující kousek php kodu, tak se to načte, jinak se stránka nenačte buuu-->
<?php 
include "pripojeni.php";
$vysledek = mysql_query ("SELECT * FROM rozhovory WHERE id = '$id'");
//zkoušel jsem i $vysledek = mysql_query ("SELECT * FROM rozhovory WHERE id = '".intval( $id )."'");
or die(mysql_error());
/* Konec přímé práce s databází. */

while ($zaznam = mysql_fetch_array ($vysledek)):
?>
<!--když vyndám předcházející kousek php kodu, tak se to načte, jinak se stránka nenačte buuu-->

<!--formulář do kterého se má podle té id načíst číslo autor otázka-->
<form method="post" name="odpoved" action="odpoved_zpracovani.php"....
Předmět Autor Datum
Prohoď typ uvozovek: $vysledek = mysql_query ("SELECT * FROM rozhovory WHERE id = '$id'"); na $vysl…
Flash_Gordon 21.01.2007 18:05
Flash_Gordon
Nefunguje bůůůůůůů a děkuji za předchozí bleskovou reakci. :-) k vidění na http://krata.bubakov.net/…
Kráťa 21.01.2007 18:12
Kráťa
Pozri sa na riadok "or die(mysql_error());" - prečo máš pred ním bodkočiarku? Keď tam pridáš ten whi…
los 21.01.2007 19:22
los
Dalsi chyba: $id = $_GET[id]; //namisto $id = $_GET['id'];…
Flash_Gordon 21.01.2007 19:35
Flash_Gordon
Kluci vy jste zlati, pouze mrknete a hned vidíte. Stránka už se po doplnění endwhile načítá, ale jen…
Kráťa 21.01.2007 21:51
Kráťa
Já nejsem programátor, ale jen uživatel. Programátor je tady asi los. Co se týče výpisu té tabulky d…
Flash_Gordon 21.01.2007 22:22
Flash_Gordon
Já tam mám toto: <form method="post" name="odpoved" action="odpoved_zpracovani.php"> <table cellpa…
Kráťa 21.01.2007 22:43
Kráťa
Musím zmizet. Pokud někde nahoře je začátek cyklu while pak bych očekával, že ti vyleze : 1) Každý…
Flash_Gordon 21.01.2007 23:04
Flash_Gordon
Nechci tam mít formuláře od všech otázek naráz (to už jsem měl), to je na předcházející stránce (fun…
Kráťa 21.01.2007 23:16
Kráťa
Nezabudni si to zabezpecit, skor nez ti niekto zmaze celu databazu... SQL_injection sql-injection.ht…
MM.. 22.01.2007 00:02
MM..
Klasika, překlep.
Kráťa 22.01.2007 03:01
Kráťa
Krato jeste dodam ze to muze byt i takto priklad $query = @mysql_query("SELECT * FROM rozhovory WHE… poslední
virus 22.01.2007 07:18
virus

Prohoď typ uvozovek:

$vysledek = mysql_query ("SELECT * FROM rozhovory WHERE id = '$id'");
na
$vysledek = mysql_query ('SELECT * FROM rozhovory WHERE id = "$id"');

// EDIT
Ještě lepší možná by bylo:

$dotaz = 'SELECT * FROM rozhovory WHERE id = "$id"';
$vysledek = mysql_query($dotaz);

Bez záruky

Kluci vy jste zlati, pouze mrknete a hned vidíte. Stránka už se po doplnění endwhile načítá, ale jen to echo od $_GET a textarea na odpověď. Když si dám zobrazit zdroják, vůbec tam není ono <table> atd.

edit.//bych potřeboval nějaký on line PHP validátor, který by mi ty ptákoviny odhalil. Nevíte o něčem?

Já nejsem programátor, ale jen uživatel.
Programátor je tady asi los.

Co se týče výpisu té tabulky databáze pracuje poněkud jinak :-)

while ($zaznam = mysql_fetch_array ($vysledek))

Databáze v tomto případě vypisuje pouze "surové data".
A to je dobře, protože máš pak více prostoru pro vlastní úkony.
Pokud chceš vypisovat do tabulky tak nějak takhle:

echo "<table>"; // Definuj zacatek tabulky
while ($zaznam = mysql_fetch_array ($vysledek)) //Vytahuj z databaze zaznamy po jednom radku
{
foreach ($zaznam as $mujVytazenyRadek) // Prohledej vytazeny radek po jednotlivych polozkach
{
echo "<td>$mujVytazenyRadek</td>";  // Vtiskni jednotlivy zaznam do samostatne bunky
}
echo "<tr>"; // Zakonci radek tabulky
}
echo "</table>"; // Zakoncime tabulku

Pisu to zase z hlavy, muzou tam byt i jine chyby nez neefektivne zapsany kod....

Já tam mám toto:


<form method="post" name="odpoved" action="odpoved_zpracovani.php">
<table cellpadding="5" class="tabulka">
<tr>
<td class="autor">
<b>autor:</b>&nbsp;
<?php echo $zaznam['autor'];?>
</td>
</tr>
<tr>
<td class="dotaz">
<b>otázka</b>
<br>
<br>
<?php echo $zaznam['otazka'];?>
</td>
</tr>
</table>
<?php endwhile;?>

<!--odpoved-->
<table cellpadding="5" class="tabulka">
<tr>
<td class="odpoved" style="text-align: center">
<b>odpověď:</b>
<br>
<br>
<textarea name="odpoved" rows="15" cols="69"></textarea>
</td>
</tr>
</table>
<input class="tlacitko" type="submit" value="ODESLAT">
</form>

jenže se mi to vůbec nenačte, až ta textarea, zase nějaký středník, či tak...

edit://ted jsem neco nasel a zobrazila se bunka pro odpoved.

Musím zmizet.
Pokud někde nahoře je začátek cyklu while pak bych očekával, že
ti vyleze :

1) Každý řádek z databáze bude v jedné tabulce (nikoliv buňce)
2) Každé jedné tabulce z předchozího bodu 1) bude předcházet otevřený tag definujicí formulář:

<form method="post" name="odpoved" action="odpoved_zpracovani.php">

Raději se dívej do zdrojáku stránky(view - source). Vizualizovaná část nemá relevantní vypovidací hodnotu, různé prohlížeče reagují různě na chybné kódy.

Nechci tam mít formuláře od všech otázek naráz (to už jsem měl), to je na předcházející stránce (funkční). Chci docílit toho, aby když se dá na té předchozí odpovědět, předala se id otázky jako $_GET a načetla se pouze tato otázka, k níž se do textarea napíše odpověď a odešle na ten odpoved_zpracovani.php.
Mrkni na http://krata.bubakov.net/rozhovory/pokusnik/odpovid ani.php budeš v obraze.

Krato jeste dodam ze to muze byt i takto priklad

$query = @mysql_query("SELECT * FROM rozhovory WHERE id = '".$_GET['id']."' limit $a,$b",$database);
if (@mysql_num_rows($query)>0) {
for ($c=0;$c<mysql_num_rows($query);$c++) {
echo mysql_result($query,$c,0); // vypise ID
echo mysql_result($query,$c,1); // vypise dalsi polozku z tabulky
// atd.
}}
mysql_close($database);

Vse funguje i bez prevodu promenne.

Zpět do poradny Odpovědět na původní otázku Nahoru