Problema riguardo l'estrazione di record dal DB tramite codice univoco

  • Creatore Discussione Creatore Discussione Hackx
  • Data di inizio Data di inizio

Hackx

Utente Attivo
20 Ago 2013
108
0
16
Ciao a tutti :)

Cercherò di essere il più breve possibile..

Ho una tabella all'interno di un DB.. ed ha la seguente struttura:

1 - id
2 - nome
3 - cognome
4 - via
5 - codice ---> (Ad ogni iscrizione il programma crea un codice che appartiene solo a quella registrazione)

Tutti questi record li ho stampati a video con la solita procedura (mysqli_query + mysqli_fetch...).
Ho reso linkabile il nome (ed ho impostato come parte finale dell'URL il codice univoco precedentemente creato)

------------------------------------------------------------------------------------------------------------

IL FATTO E'
che quando clicco sul nome.. la pagina si apre correttamente.. il codice alla fine dell'URL è corretto ma i dati che il codice rappresenta non vengono stampati.. ma bensì viene stampato (giustamente) solo il primo della lista della tabella.


1 ) Come posso fare quindi per comparare il codice inviato dall'URL con quello scritto nel DB ?
2 ) E..una volta comparato, come posso far stampare solo i record che appartengono a quella riga di database ?

Spero davvero di essermi spiegato..e che qualcuno mi sappia aiutare :)

Vi ringrazio davvero tantissimo,
Andrea
 
supponiamo che tu abbia i dati letti dal db in un'array,
ricavi dall' url il numero di riga (attento allo zero), non codici ...

e poi ti estrai dall'array i dati che ti servono ...

io preferisco gestire l'array con indici numerici 0, 1, ....
ma tu puoi anche mettere il nome della colonna se usi la fetch_assoc

PHP:
  $j = ..... indice riga da url

  $id = $_SESSION[$swN.'_data'][$j][0];
  $nome  = $_SESSION[$swN.'_data'][$j][1];
  $cognome  = $_SESSION[$swN.'_data'][$j][2];

poi puoi usare la "riga" per fare quello che ti serve

spero di aver capito e spiegato bene
ciao
Marino
 
Ultima modifica:
in alternativa, puoi estrarre dall'url il codice univoco e poi rileggere la sola riga dal db
mettendo la clausola "where codiceunivoco=1234"
e poi ... sai come fare

tutto dipende da come hai impostato la tua applicazione
ciao
Marino
 
Ciao marino51 :)

Innanzitutto ti ringrazio moltissimo per avermi risposto ed ho capito perfettamente ciò che mi hai detto !!
Ti volevo chiedere solo un'altra piccola cosa ..

Come posso estrarre il (famoso) codice univoco dall'URL ..

Ti ringrazio ancora moltissimo,
Andrea

P.S.
Come avrai capito sono ancora all'inizio e mi serve una mano :)
 
ciao Andrea,

così lo porto a video

PHP:
$tabrow.= "<td><a href=\"$phpself?par=$j\">[upd]</a></td>";

e così lo leggo

PHP:
if (isset($_GET['par'])) {
  $j = $_GET['par'];

il controllo mi serve per distinguere se entro con un parametro (GET) o con submit (POST)

ciao
Marino
 
Ciao marino51 :)

Ci tengo a ringraziarti per la tua disponibilità !
Non vorrei disturbarti ancora, però, ci sono delle parti del codice che non ho capito bene.


1- Ho studiato un po di articoli in giro per il web e penso che con la variabile $phpself intendessi $_SERVER['PHP_SELF'] (se non mi sbaglio dovrebbe essere la prima parte dell'URL), giusto ?

2- Ora c'è la parte in cui è presente la variabile $j (che nel post precedente era scritto che doveva essere l'indice riga dell'url).. misà tanto di aver sbagliato poiché visto che sarebbe la parte che rimane dopo il ? ho pensato di metterci la sessione del codice univoco, con $j= $_SESSION['codice'] --> Però niente da fare errore (undefined variabile: _SESSION)!
Cosa mi consigli di metterci nella variabile $j ?

3- [upd] ..scusa l'ignoranza, ma a cosa serve? ... giusto per completare la sintassi corretta di "<a></a>"?


Ti sto domandando tutto questo perché ..

- Ho provato il codice, ma le variabili che ho impostato non erano corrette e se non le imposto non mi stampa niente visto che mancano.

e poi ..

- i tuoi consigli sono davvero molto utili per me .. era proprio ciò di cui avevo bisogno :)

Ti ringrazio,
Andrea
 
ciao Andrea,

1 si, messo in variabile perchè è richiamato tante volte,
in più se seguito da parametro lo ripulisco .... altrimenti ... sbaglia

$phpself = basename ($_SERVER['PHP_SELF'],".php").".php";

(ps non ho mai cercato la variabile che esclude il parametro, perciò faccio da me ... )

2 devi mettere session_start all'inizio (oppure settare in php.ini il parametro corrispondente)
per abilitare la gestione del $_SESSION,
fatto ciò da qualche parte nello script avrai scritto
$_SESSION['codice'] = $nome_della_variabile
ovvero sarà poi possibile allegarla come parametro,
in questo modo dovrai usare "l'alternativa" suggerita in un post precedente

[UPD}, [DEL] ... sono il "testo" su cui cliccare ...
ti posto la parte di un mio script che può darti l'info + completa

trovi in allegato anche uno script completo per gestire delle tabelle di riferimento nel DB
(ps ... poche critiche ... sono anch'io alle prime armi )

ciao
Marino

PHP:
// $data contiene tutti i valori
  foreach($_SESSION[$swN.'_data'] as $key => $val) {

// imposto l'indice
    $j = $key + 1;

    $tabrow = "<tr>";

// metto i valori in tabella
    for ($i = 0; $i <= 17; $i++) $tabrow.= "<td>".$val[$i]."</td>";

// rifer. per funzione update 'U' + indice (nel mio caso)
    $tabrow.= "<td><a href=\"$phpself?par=U$j\">[upd]</a></td>";

    $tabrow.= "<td>";
// rifer. per funzione delete ('D' + indice) con possibilità di colonna vuota
    if ( $val[18] == 0 ) $tabrow.= "<a href=\"$phpself?par=D$j\">[del]</a>"; 
    $tabrow.= "</td>";

// rifer. per un'altra funzione ('M' + indice)
    $tabrow.= "<td><a href=\"$phpself?par=M$j\">[MO]</a></td>";

    $tabrow.= "</tr>";

    $tabella.= $tabrow;
  }
// richiamo del form che lavora come un template con all'interno il richiamo alla $tabella
// per cui può essere richiamato sempre per operazioni simili
  require('_Form_table.php');
}
 

Allegati

Ciao marino51 :),

Perdona il mio ritardo nella risposta :) ! .. i tuoi consigli sono stati davvero preziosi :) !
Ho risolto il problema :) !

Grazie mille ancora,
Andrea
 

Discussioni simili