Problema con $_GET

  • Creatore Discussione Creatore Discussione Allison
  • Data di inizio Data di inizio

Allison

Nuovo Utente
20 Mar 2012
20
0
0
Salve,

sono alle prime armi col php e avrei un problemino con questo codice, i pratica quando clicco su di un link mi da tutti i risultati e vorrei che mi desse solo il risultato del singolo link. Grazie per eventuali risposte.
PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

$query = "SELECT chanid, channel, currentusers FROM chan ORDER BY channel ASC";
$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0 ; $j < $rows ; ++$j)
{

$row = mysql_fetch_row($result);
if(!$_GET)
{
echo '<a href="?id=' . $id . '">' . $row[1] . '</a><br /><br />';
}
else
{

$canale = array($id=>'' . $row[2] . '');
$id = $_GET['' . $id . ''];

echo $canale[$id] . '<br><br>';

}
}
?>

Qui il risultato: http://stats.atomirc.net/counter.php
 
Ultima modifica:
Ciao,

l'id via GET non passa perche quando stampi $id non è ancora valorizzato
prova a cambiare
PHP:
if(!$_GET)
{
echo '<a href="?id=' . $id . '">' . $row[1] . '</a><br /><br />';
}
else
con
PHP:
if (!$_GET) {
        echo '<a href="?id=' . $row[0] . '">' . $row[1] . '</a><br /><br />';
    } else {
presumendo che il primo elemento della tua tabella sia l'id

Se come ho capito vuoi modificare i risultati della query in base al GET devi cambiare la query piu o meno in questo modo

PHP:
// inizi la query
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
// verifichi il GET
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    // modifichi la condizione
    $query.= " && id = " . $_GET['id'] . "";
}
// chiudi la query
$query.= " ORDER BY channel ASC";
 
Esatto criric, il primo elemento della mia tabella sia l'id e vorrei modificare i risultati della query in base al GET.

Ho provato quanto hai scritto mi da un errore di sintassi:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '&& id = 6' at line 1
 
prova a stampare la query

PHP:
echo $query;

forse manca lo spazio tra 1=1 e &&
 
ho riletto il tuo codice se ho capito bene quello che vuoi fare credo che nel ciclo sia sufficente scrivee cosi:
PHP:
for ($j = 0; $j < $rows; ++$j) {
    // estrai i record
    $row = mysql_fetch_row($result);
    // se non è settato il get 
    if (!$_GET) {
        // stampi i link
        echo '<a href="?id=' . $row[0] . '">' . $row[1] . '</a><br/><br/>';
    } else {
        // altrimenti stampi il canale
        echo $row[2] . '<br/><br/>';
    }
}
 
Niente da fare :incazz2:, ho provato a modificare come hai detto mi da questo:

SELECT chanid, channel, currentusers FROM chan WHERE 1 = 1 ORDER BY channel ASC & & id = 6Accesso al database fallito: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '& & id = 6' at line 1
 
posta il codice modificato

c'è un po di confusione
 
PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1 = 1 ORDER BY channel ASC";
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
   $query.= " & & id = " . $_GET['id'] . "";
}
$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j) {
    $row = mysql_fetch_row($result);
    if (!$_GET) {
        echo '<a href="?id=' . $row[0] . '">' . $row[1] . '</a><br/><br/>';
    } else {
        echo $row[2] . '<br/><br/>';
    }
}
?>
 
Attenzione alla sintassi un semplice spazio puo causare un errore fatale

ho commentato le modifiche

PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

// modificata
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    // modificata
   $query.= " && id = " . $_GET['id'] . "";
}
// modificata
$query.= " ORDER BY channel ASC";

$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j) {
    $row = mysql_fetch_row($result);
    if (!$_GET) {
        echo '<a href="?id=' . $row[0] . '">' . $row[1] . '</a><br/><br/>';
    } else {
        echo $row[2] . '<br/><br/>';
    }
}
?>
 
vuol dire che il primo campo della tua tabella non si chiama id

ho visto ora che si chiama chanid

cambia id con chanid
 
PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

// modificata
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    // modificata
   $query.= " && chanid = " . $_GET['id'] . "";
}
// modificata
$query.= " ORDER BY channel ASC";

$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j) {
    $row = mysql_fetch_row($result);
    if (!$_GET) {
        echo '<a href="?id=' . $row[0] . '">' . $row[1] . '</a><br/><br/>';
    } else {
        echo $row[2] . '<br/><br/>';
    }
}
?>
 
Grandeeeeeeeeeeeeeeeeeeeeeeeee!!!!!! Un drink per festeggiare!!! :beer:
Un bacio lo meriti Kissssss!!!!!!
:fonzie:
 
Volevo cambiare la vsualizzazione del chanid (numero) con il nome del canale
PHP:
<a href="?id=' . $row[1] . '">
però se cambio sono punto e a capo. Mi da tutti i risultati, dove sbaglio ? :confused:
 
Hai cambiato la query?

PHP:
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
// non devi piu controllare se è numerica
if (isset($_GET['id'])) {
    // devi modificare la condizione e visto che non è numerico mettere il GET tra apici
   $query.= " && channel= '" . $_GET['id'] . "'";
}

$query.= " ORDER BY channel ASC";
 
Facendo come dici quando clicco per vedere i risultati mi da pagina bianca, mentre se sostituisco solo $row[0] con $row[1] quando clicco mi restituisce tutti i risultati:


Questo mi da pagina bianca:
PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

// modificata
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
if (isset($_GET['id'])) {
    // modificata
   $query.= " && channel = '" . $_GET['id'] . "'";
}
// modificata
$query.= " ORDER BY channel ASC";

$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j) {
    $row = mysql_fetch_row($result);
    if (!$_GET) {
        echo '<a href="?id=' . $row[1] . '">' . $row[1] . '</a><br/><br/>';
    } else {

echo $row[2] . '<br/><br/>';
    }
}
?>

Questo, invece, mi restituisce non il singolo valore ma tutti.
PHP:
<?php
require_once '123login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

// modificata
$query = "SELECT chanid, channel, currentusers FROM chan WHERE 1=1";
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    // modificata
   $query.= " && chanid = " . $_GET['id'] . "";
}
// modificata
$query.= " ORDER BY channel ASC";

$result = mysql_query($query);

if (!$result) die ("Accesso al database fallito: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j) {
    $row = mysql_fetch_row($result);
    if (!$_GET) {
        echo '<a href="?id=' . $row[1] . '">' . $row[1] . '</a><br/><br/>';
    } else {
        echo $row[2] . '<br/><br/>';
    }
}
?>
 
Ciao, non mi sembra ci siano errori

prova a stampare la query

PHP:
echo $query;
 
mi dice:
Codice:
SELECT chanid, channel, currentusers FROM chan WHERE 1=1 ORDER BY channel ASC#atomirc
 
Controlla bene cosa hai scrittop nel codice php

la query dovrebbe essere cosi

Codice:
SELECT chanid, channel, currentusers FROM chan WHERE 1=1 && id='#atomirc' ORDER BY channel ASC
 
ora è come se non leggesse l'id grrrrrrrrrrrrrrrrrrrrrrrrrr

Codice:
SELECT chanid, channel, currentusers FROM chan WHERE 1=1 && channel= '' ORDER BY channel ASC
 

Discussioni simili