Visualizzazione risultati 1 fino 8 di 8

Discussione: * richiama solo testo?

  1. #1
    Guest

    Predefinito * richiama solo testo?

    Ciao a tutti, lavoro in ospedale ma mi diletto con il php, sto cercando di fare un sito per tenere traccia delle chiamate che facciamo all'assistenza tecnica ora sono fermi qui ... vi spiego:

    creata la pagina per inserire il ticket della chiamata e della sede ora c'è bisogno di creare una pagina per cercare le chiamte e anche questa l'ho fatta ma quella che mostra i risultati mi da qualche problema... mi spiego. ammettiamo che voglia ricercare tutte le chiamate di una sede senza inserire il numero di ticket nella pagina dei risultati ho scritto così

    Codice PHP:
    $RISticket_Recordset1 = "*";
    if (isset(
    $_GET['ticket'])) {
    $RISticket_Recordset1 = $_GET['ticket'];
    }
    solo che mostra solo i risultato quando il numero di ticket è un testo (numeri+lettere) se si tratta di solo numeri non mostra niente

    help

    grazie
    Ultima modifica di alemoppo : 09-09-2012 alle ore 16.46.40 Motivo: +tag [php]

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Teoricamente, dovrebbe funzionare ugualmente.

    Non ho capito lo scopo della riga:
    Codice PHP:
    $RISticket_Recordset1 = "*";
    A che serve inizializzare quella variabile, se poi si modifica il contenuto?

    Non conoscendo bene il codice che viene dopo a cui non piace il numero, ma solo la stringa, è difficile rispondere.

    Prova così:

    Codice PHP:
    if (isset($_GET['ticket'])) {
    $RISticket_Recordset1 = (string) $_GET['ticket'];
    }
    Ma molto probabilmente non funzionerà ugualmente.
    Puoi scrivere la linea (o la funzione) che mostra il risultato?

    Ciao!

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

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    A che serve inizializzare quella variabile, se poi si modifica il contenuto?
    Ehm... valore di default se il parametro GET non è definito?

    Per la domanda iniziale, la risposta è "boh". Dipende tutto da cosa fai con l'asterisco nel resto della pagina. Elenchi file? Cerchi in un database? Sguinzagli furetti in un archivio?
    Ultima modifica di dreadnaut : 09-09-2012 alle ore 18.00.13

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Ehm... valore di default se il parametro GET non è definito?
    Avevo pensato anche a questo.. e pensato alla isset($RISticket_Recordset1 ), o ad un else... però vero: tutto dipende da quel che c'é dopo...

    Ciao!
    Ultima modifica di alemoppo : 09-09-2012 alle ore 19.14.56

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Ehm... valore di default se il parametro GET non è definito?
    ... si l'intento era proprio questo

    il resto de codice è questo e mi servirebbe per cercare in un DB

    Codice PHP:
    <?php
    if (!function_exists("GetSQLValueString")) {
    function
    GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    if (
    PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    }

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

    switch (
    $theType) {
    case
    "text":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case
    "long":
    case
    "int":
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
    break;
    case
    "double":
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
    break;
    case
    "date":
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
    break;
    case
    "defined":
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
    break;
    }
    return
    $theValue;
    }
    }

    $RISsede_Recordset1 = "1";
    if (isset(
    $_GET['sede'])) {
    $RISsede_Recordset1 = $_GET['sede'];
    }
    $RISticket_Recordset1 = "*";
    if (isset(
    $_GET['ticket'])) {
    $RISticket_Recordset1 = $_GET['ticket'];
    }

    mysql_select_db($database_labaslto5, $labaslto5);
    $query_Recordset1 = sprintf("SELECT noemalife.ticket, noemalife.id_sede, sedi.id_sedi, sedi.sedi FROM noemalife, sedi WHERE sedi.id_sedi=noemalife.id_sede AND noemalife.id_sede=%s AND noemalife.ticket=%s", GetSQLValueString($RISsede_Recordset1, "int"),GetSQLValueString($RISticket_Recordset1, "int"));
    $Recordset1 = mysql_query($query_Recordset1, $labaslto5) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);

    ?>
    Grazie
    Ultima modifica di dreadnaut : 10-09-2012 alle ore 11.41.58 Motivo: + tag [php] per il codice, indentazione

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

    Predefinito

    Codice PHP:
    $query_Recordset1 = /* ... */ GetSQLValueString($RISsede_Recordset1, "int"),GetSQLValueString($RISticket_Recordset1, "int"));
    Stai convertendo i due valori in stringhe, quindi l'asterisco non arriverà mai alla query. Se anche arrivasse, l'asterisco non è un carattere wildcard in SQL, e non avresti tutti i record.

    Per avere tutti i record devi semplicemente non richiedere alcun valore per il campo in questione. Devi quindi scrivere un'altra query che non prende in considerazione quel campo.

  7. #7
    Guest

    Predefinito

    ok grazie ma non capisco

    siccome nella pagina del corm ho 2 campi: uno è quello ticket e uno è quello sede. io voglio che l'utente quando compila il campi ticket questo passi alla pagina della query filtrando per quanto scritto, se invece lascia il campo vuoto voglio che la query come dici te non consideri quel campo...

    devo dunque scrivere due query a seconda se il campo è compilato o no?

    se è corretto come gli dico che il campo per form è vuoto? is_null?

    grazie mille della disponibilità scusa l'ignoranza ma non sono un programmatore.


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

    Predefinito

    La query fa una serie di controlli sui campi:
    Codice:
    WHERE sedi.id_sedi=noemalife.id_sede AND noemalife.id_sede=%s AND noemalife.ticket=%s
    Se non vuoi che controlli il campo ticket, non deve esserci alcun controllo sul campo ticket

    Codice:
    WHERE sedi.id_sedi=noemalife.id_sede AND noemalife.id_sede=%s
    A quel punto otterrai tutte le righe con la sede corretta, qualsiasi sia il valore del loro campo ticket.

    Fare questo con una sola query è contorto, quindi ti conviene averne due separate, ed un if in php che scelga: se il campo ticket è stato compilato (puoi controllare ad esempio con isset() o empty()) esegui quella scritta nel tuo codice, altrimenti esegui quella più breve.

Regole di scrittura

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