Visualizzazione risultati 1 fino 10 di 10

Discussione: problema risultato stringa sql con php

  1. #1
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito problema risultato stringa sql con php

    salve a tutti!.....pongo subito il mio problema

    in pratica ho questo frammento di codice all'interno di una connessione:


    Codice PHP:
    $query = "SELECT COUNT(*) FROM risorse WHERE type = '{$_GET['type']}'";
    $result = mysql_query($query);
    if(
    $result == 0 ){
    include
    'notfound.html';
    exit;
    }
    il parametro $_GET['type'] viene richiamato da questo form:

    Codice HTML:
    <select name="type">
            	 <option >seleziona la categoria</option>
                 <option >template</option>
                 <option >css</option>
    	<option >script</option>
                 <option >jsp</option>
                 <option >java</option>
              </select>
    ora...nella tabella del db in type sono presenti solo template e css ...quando digito script dovrebbe caricare la pagina notfound ...e invece quando nell'url c'è type=script succede un casino e mi da un errore di connessione....

    premetto che ho cambiato la tabella del database prima la stringa sql era

    Codice PHP:
    $query = "SELECT COUNT(*) FROM {$_GET['type']}"
    e funzionava tutto ossia mi caricava anche la pagina notfound quando mi dava 0 come result
    Ultima modifica di zulukwebsite : 01-06-2008 alle ore 14.27.14

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    manca qualcosa nella tua spiegazione, o non capisco io. Così per sicurezza ti ricordo che mysql_query() non ti restituisce il "risultato" vero e proprio della query, ovvero il numero di righe. Se prima funzionava forse era un caso, perché quando la query non può venir eseguita ritorna false, che in effetti è == 0.

  3. #3
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    manca qualcosa nella tua spiegazione, o non capisco io. Così per sicurezza ti ricordo che mysql_query() non ti restituisce il "risultato" vero e proprio della query, ovvero il numero di righe. Se prima funzionava forse era un caso, perché quando la query non può venir eseguita ritorna false, che in effetti è == 0.
    si si lo so infatti prima avevo provato anche con === FALSE però è uguale....avevo provato anche con !$result... cmq questo è il codice per la paginazione...se ti va di guardarlo ti posto tutto :) ...p.s. c,q spiego mejo quella sopra...quando seleziono dal form principale la voce script succede un casino,poichè script nella cella type della tabella nn esiste ancora...quindi siccome nn esistono record mi dovrebbe richiamare la pagina notfound e uscire
    Ultima modifica di zulukwebsite : 01-06-2008 alle ore 15.39.30

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    "si si lo so infatti", ma ancora non hai capito... Ripeto, più conciso: mysql_query ritorna false solo se la query è sbagliata. Per avere il numero di elementi devi guardare il risultato della query, con mysql_result o mysql_fetch_row, etc.

    In più, quel parametro get forse è meglio passarlo attraverso mysql_real_escape_string(), giusto per sicurezza

  5. #5
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    "si si lo so infatti", ma ancora non hai capito... Ripeto, più conciso: mysql_query ritorna false solo se la query è sbagliata. Per avere il numero di elementi devi guardare il risultato della query, con mysql_result o mysql_fetch_row, etc.

    In più, quel parametro get forse è meglio passarlo attraverso mysql_real_escape_string(), giusto per sicurezza
    non potrei usare mysql_affected_rows() per risalire al numero dei record interessati alla query??

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    no, la tua non è una delle query che modificano righe in una tabella:
    mysql_affected_rows ([ resource $link_identifier ] )
    Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE query associated with link_identifier.
    Non hai mai fatto query count prima d'ora ?
    Codice PHP:
    $count = 0;

    if (isset(
    $_GET['type']))
    {
    $type = mysql_real_escape_string($_GET['type']);
    $query = "SELECT COUNT(*) FROM risorse WHERE type = '{$type}'";

    if (
    $result = mysql_query($query))
    {
    $risultato = mysql_fetch_array($result, MYSQL_ASSOC);
    $count = $row['COUNT(*)'];
    }
    }

    if(
    $count == 0)
    {
    include
    'notfound.html';
    die();
    }

  7. #7
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    mah... l'ho usato col copia e incolla per la paginazione....no in effetti nn sapevo bene come funzionava....cmq ho provato codice da te passato ma count rimane sempre zero ....quindi mi richiama sempre notfound.html
    Ultima modifica di zulukwebsite : 01-06-2008 alle ore 21.10.00

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    buttaci dentro un po' di echo e guarda cosa succede

  9. #9
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    buttaci dentro un po' di echo e guarda cosa succede
    ok ci provo :)

    edito:


    allora $risultato

    con parametro template

    array(1) { ["COUNT(*)"]=> string(1) "2" }

    con parametro string

    array(1) { ["COUNT(*)"]=> string(1) "0" }

    echo $row['COUNT(*)'] non da nulla

    count è sempre NULL

    EDIT2

    alla fine ho risolto così lasciando il mio codice

    Codice PHP:
    $tot_righe = mysql_result($result,0);

    if(
    $tot_righe == 0){
    include
    'notfound.php';
    exit;
    }
    Ultima modifica di zulukwebsite : 02-06-2008 alle ore 09.18.40

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @zulukwebsite:
    anch'io ho degli interessanti problemi... nel codice sopra:
    Codice PHP:
    $risultato = mysql_fetch_array($result, MYSQL_ASSOC);
    $count = $row['COUNT(*)'];
    la seconda riga dovrebbe prendere il contenuto di $risultato, non di $row! mi ero svanito di rinominare la seconda occorrenza della variabile

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •