-
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();
?>
-
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).
-
la parte ..tentativo... vabe!:oops:.. 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
in questo caso avendo la posizione di "pippo" vorrei riuscire ad avere i dati di quo/qui/qua
-
Hai mostrato altro codice, ma la spiegazione di cosa ti serve esattamente ancora manca http://forum.it.altervista.org/image...e/icon_lol.gif.
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.
-
direi che hai capito benissimo.. e, a parte qualche micro errore di sintassi, è perfetta ora cerco di adattarla al resto del codice
mille grazie:lol: