Visualizzazione risultati 1 fino 5 di 5

Discussione: aiuto per php e query

  1. #1
    Guest

    Predefinito aiuto per php e query

    ho la necessità di avere il risultato di alcune righe partendo dal risultato trovato.. spero che il codice sia esplicativo.. grazie
    Codice PHP:
    <?php
    include("connect.php");

    $email= 'xx.pippo@gmail.com';

    if (!
    $result = $link->query("SELECT ID,nome, cognome, mail, posizione FROM anagrafica WHERE mail LIKE '$email'" ))
    {
    echo
    "Errore della query: " . $link->error . ".";
    exit();
    }else{

    // conteggio dei record
    if($result->num_rows > 0) {

    //-----un tentativo ma -- non so come adndare avanti
    $pos =$row['posizione'];
    $result_array = array();

    $sql = mysql_query("SELECT FROM anagrafica WHERE `posizione` = .$posizione. ORDER BY `DESC` DESC LIMIT 3");
    //-------------qui mi fermo

    //il seguito echo $row[] ritorna la riga della mail con relativa posizione (variabile) mentre avrei necessità di avere il risultato
    //(nome/cognome ecc..) di (3)tre righe superiori in base all'ordinamento $posizione.. ovvero se la posizione dell'utente
    //($mail) è 11 mi serve l'echo delle righe con posizione 10/9/8
    while($row = $result->fetch_array(MYSQLI_BOTH))
    {
    echo
    $row['nome'] ." ". $row['cognome'] . " ". $row['mail'] . " ". $row['posizione'] . " ". $row['ID'] . "<br />";


    }
    // liberazione delle risorse occupate dal risultato
    $result->close();
    }
    }
    // chiusura della connessione
    $link->close();
    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Forse conviene che spieghi a parole cosa intendi ottenere.
    Nel codice ci sono un paio di errori che saltano subito all'occhio, ad esempio:
    Codice PHP:
    //-----un tentativo ma -- non so come adndare avanti
    $pos =$row['posizione'];
    $result_array = array();

    $sql = mysql_query("SELECT FROM anagrafica WHERE `posizione` = .$posizione. ORDER BY `DESC` DESC LIMIT 3");
    //-------------qui mi fermo
    in cui accedi alla variable $row la quale, però, a quel punto non è ancora stata definita. Forse intendevi utilizzare quel frammento di codice all'interno del ciclo while effettuando la stessa operazione per ogni risultato?

    Inoltre, negli altri punti del codice usi un oggetto $link, verosimilmente definito in connect.php, che a prima vista potrebbe essere un oggetto mysqli (...oppure no, non è chiaro senza conoscere il contenuto di connect.php), mentre lì utilizzi le (deprecate) funzioni mysql_*, probabilmente dovresti riscrivere utilizzando in modo coerente questo oggetto $link (e preferibilmente evitando l'uso di variabili globali).

  3. #3
    Guest

    Predefinito

    la parte ..tentativo... vabe!.. provo a spiegarmi meglio.. grazie in ogni caso
    Codice PHP:
    <?php //connect.php
    $db_user = 'root';
    $db_password = '';
    $db_host = 'localhost';
    $db_name = 'premium';
    $link = @mysqli_connect ($db_host, $db_user, $db_password, $db_name) OR die ('Could not connect to MySQL: ' . mysqli_connect_error());

    mysqli_select_db($link,$db_name) or die ("impossibile connettersi al database" .$connect_error);
    ?>
    Codice PHP:
    <?php
    include("connect.php");
    // if(!isset($_POST['email3'])){
    //
    // $rep= "Manca la mail per la ricerca!<br/>";
    //}
    //else{
    //$email = $_POST['email3'];}
    $email= 'xx.pippo@gmail.com'; //giusto per test
    //$email = trim(mysqli_real_escape_string($link, $_POST['email']));

    if (!$result = $link->query("SELECT ID,nome, cognome, mail, elo, posizione FROM anagrafica WHERE mail LIKE '$email'" ))
    {
    echo
    "Errore della query: " . $link->error . ".";
    exit();
    }else{

    // conteggio dei record
    if($result->num_rows > 0) {

    while(
    $row = $result->fetch_array(MYSQLI_BOTH))
    {
    echo
    $row['nome'] ." ". $row['cognome'] . " ". $row['mail'] . " ". $row['elo'] . " ". $row['posizione'] . " ". $row['ID'] . "<br />";
    }
    // e questo punto ho il record con i dati dalla mail compresa la posizione, adesso dovrei trovare, partendo dalla posizione $row['posizione'] i tre record che la precedono(nome /cognome ecc.) in ordine di posizione
    //------------------- tentativo
    // questa parte è giusto un codice buttato li...

    $pos =$row['posizione'];
    $result_array = array();
    $sql = mysqli_query($link, "SELECT FROM anagrafica WHERE `posizione` = .$posizione. ORDER BY `DESC` DESC LIMIT 3");

    echo
    $row['posizione'];
    //------------------- tentativo
    // liberazione delle risorse occupate dal risultato
    $result->close();
    }
    }
    // chiusura della connessione
    $link->close();
    ?>
    es. dal db
    Codice:
    ID   nome     cognome   mail                        posizione
    
    7    pluto    pluti    01.pippo@gmail.com'       4
    9    qua      peppa    qua.pio@gmail.com'        5
    11   qui      pop      qui.qui@gmail.com'        6
    3    quo      pap      quo.quo@gmail.com'        7
    10   pippo    pippi    xx.pippo@gmail.com'       8
    in questo caso avendo la posizione di "pippo" vorrei riuscire ad avere i dati di quo/qui/qua

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Hai mostrato altro codice, ma la spiegazione di cosa ti serve esattamente ancora manca .
    Se ho interpretato correttamente, la situazione è questa: ha una tabella contenente i dati di utenti/giocatori (anagrafici come nome e cognome e di altra natura, come ELO e posizione in classifica). Dato un indirizzo email, intendi recuperare i dati dell'utente da esso identificato (supponendo che l'email sia univoca) e dei tre giocatori immediatamente precedenti in classifica (anche qui supponendo che la posizione sia unica e non ci siano giocatori nella stessa posizione a pari merito).

    In questo caso puoi cavartela agilmente con due interrogazioni, la prima per recuperare i dati dell'utente e la seconda per recuperare quelli dei tre giocatori che lo precedono:
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);

    include
    "connect.php";

    $email= 'xx.pippo@gmail.com';


    // Estrae i dati di un giocatore data l'email
    $query = "SELECT ID, nome, cognome, mail, elo, posizione FROM anagrafica WHERE mail LIKE '$email'";
    $result = $link->query($query);
    if (!
    $result) {
    echo
    "Errore della query: " . $link->error . ".";
    exit();
    }

    if (
    $result->num_rows == 0) {
    echo
    "Nessun record corrispondente all'email '$email'.";
    exit();
    }

    $record = $result->fetch_assoc();
    $result->close();


    // Estrae i dati dei record nelle 3 posizioni precedenti
    $query = "SELECT ID, nome, cognome, mail, elo, posizione FROM anagrafica WHERE posizione < " . $row['posizione'] . " ORDER BY posizione DESC LIMIT 3";
    $result = $link->query($query);
    if (!
    $result) {
    echo
    "Errore della query: " . $link->error . ".";
    exit();
    }

    while (
    $row = $result->fetch_assoc()) {
    echo
    "<pre>";
    var_dump($row);
    echo
    "</pre>";
    }
    $result->close();
    $link->close();
    ?>
    Potrebbero esserci errori di sintassi, non ho provato.

  5. #5
    Guest

    Predefinito

    direi che hai capito benissimo.. e, a parte qualche micro errore di sintassi, è perfetta ora cerco di adattarla al resto del codice
    mille grazie

Regole di scrittura

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