Newsgroup: it.comp.www.php
Titolo: Mostrare il valore della FK tramite PHP

Salve,
 
sto studiando quindi le richieste che sto facendo sono da newbie giusto 
per mettere da subito le cose in chiaro! :)
 
Ho un database in MariaDB, la seguente query funziona:
 
SELECT 
endusers.name
, endusers.birthdate, users.username, 
cities.name
 
FROM endusers INNER JOIN cities ON FK_id_city=id_city INNER JOIN users 
ON FK_id_user=id_user;
 
Mettendola all'interno di uno script php non funziona:
 
$sql = "SELECT 
endusers.name
, endusers.birthdate, users.username, 
cities.name
 FROM endusers INNER JOIN cities ON FK_id_city=id_city INNER 
JOIN users ON FK_id_user=id_user";
if($result = mysqli_query($link, $sql)){
     if(mysqli_num_rows($result) > 0){
         echo "<table>";
             echo "<tr>";
                 echo "<th>Name</th>";
                 echo "<th>Birthdate</th>";
                 echo "<th>Username</th>";
                 echo "<th>City</th>";
             echo "</tr>";
         while($row = mysqli_fetch_array($result)){
             echo "<tr>";
                 echo "<td>" . $row['
endusers.name
'] . "</td>";
                 echo "<td>" . $row['endusers.birthdate'] . "</td>";
                 echo "<td>" . $row['users.username'] . "</td>";
                 echo "<td>" . $row['
cities.name
'] . "</td>";
             echo "</tr>";
 
Se faccio una select * della stessa tabella endusers mostrando quattro 
campi lo script funziona, probabilmente non devo inserire 
tabella.nome_tabella...
 
Saluti.
^Bart

              echo "</tr>";
 
Ho trovato l'inghippo:
 
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['birthdate'] . "</td>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
 
Però l'ultimo name è di una tabella esterna, ora devo capire come 
"tradurre" in PHP quello che MariaDB mi incolonna bene!
 
Saluti.
^Bart

Il 07/04/19 22:55, ^Bart ha scritto:

utilizza un alias
 
SELECT 
endusers.name
, endusers.birthdate, users.username, 
cities.name
 as 
cityname FROM endusers INNER JOIN cities ON FK_id_city=id_city INNER 
JOIN users ON FK_id_user=id_user;
 
.....
....
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['birthdate'] . "</td>";
  echo "<td>" . $row['username'] . "</td>";
  echo "<td>" . $row['cityname'] . "</td>";
.....
....
 
P.S.
invece di mysqli utilizza PDO.
 
P.S.2
Cerca di isolare (impara il pattern MVC)
la parte di presentazione (html, json, xml, o altro) dalla parte di 
business logic (controlli logici, accesso al db, il cosa deve fare la 
tua applicazione)
 
Saluti
 
 

 Saluti
 
Grazie ancora!
Saluti!
^Bart
 

 tua applicazione)
 
Ho capito cosa intendi ma devo capire bene come implementare il tutto e 
ti chiedo qualche ulteriore delucidazione, ora sono "fermo" qui:
 
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
require_once('conn.inc.php');
 
// Attempt select query execution
$sql = "SELECT 
endusers.name
, endusers.birthdate, users.username, 
cities.name
 AS cityname FROM endusers INNER JOIN cities ON FK_id_city=id_c$
$stmt = $pdo->prepare($sql);
$stmt->execute();
$total = $stmt->rowCount();
while ($row = $stmt->fetchObject()) {
     echo "<td>{$row->name}</td>";
     echo "<td>{$row->birthdate}</td>";
     echo "<td>{$row->username}</td>";
     echo "<td>{$row->cityname}</td>";
}
?>
 
A questo punto non ho capito se debba scrivermi la tabella html qui 
dentro (come e dove?).
 
Fin'ora ho sempre creato tutto in un'unico file...
 
Saluti!
^Bart

 
 
non si usa più da metà degli anni 90.
 
il pattern MVC (da decenni la base minima della progettazione di un 
applicazione) è un modello di sviluppo dove ogni componente fa una ed 
una cosa sola.
 
in genere conviene studiarlo per capirne i fondamenti, ma per usarlo 
meglio affidarsi ad un framework che lo implementi (quasi tutti).
 
in pratica si hanno per ogni sinogla azione della tua applicazione (dal 
caricamento della home al click di un pulsante o link)  l'applicazione 
viene divisa in 3 macro gruppi.
 
Controller che viene invocato dall'azione (il click di un pulsante o di 
un link, il caricamento della pagina, ajax, una chiamata REST API ecc) 
che prende il controllo della tua applicazione effettua alcuni controlli 
(in genere formali) e a seconda dell'azione invocare una View (magari 
perchè i controlli falliscono) o invocare il Model.
 
Model è il vero e proprio cuore della tua applicazione, qui vengono 
fatti i controlli logici e la logica di business, l'accesso al db, 
l'accesso al filesyste ecc, una volta esaurito il compito del model 
questo in genere (ma non sempre) ritorna il risultato al Controller che 
invoca la View più adatta.
 
View è la parte di presentazione del risultato del Model, può essere 
qualsiasi tipo di Output, HTML, json, xml, streaming, file ecc
 
 
ognuno di questi gruppi può e deve essere uno o più file php
 
un esempio GENERICO di pseudocodice
 
index.php è il bootstrap (entry point) della tua applicazione, ogni 
richiesta passa da qui.
 
al suo interno a seconda della richiesta chiama un controller adatto
 
esempio il click di un pulsante di un form di una qualsiasi pagina
 
<form action="aggiungiCarrello>
...
...
<input type="submit" value="add">
</form>
 
index.php
Riceve la richiesta vede che la action è aggiungiCarrello e chiama il 
controller AggiungiCarrelloController.php
 
AggiungiCarrelloController.php
Effettua i controlli formali (il form abbia tutti i campi compilati), in 
caso negativo richiama la view segnalando gli errori, oppure richiamando
il model AggiungiCarrelloModel.php
 
AggiungiCarrelloModel.php
prende i dati del form (passati dal controller) effettua i controlli 
logigi (che la quantità sia > 0, il prodotto esista, andando a 
verificare su db tramite il model che si occupa dei prodotti, che ci sia 
scorta in magazzino, richiamando il model che si occupa del magazzino) ecc.
effettua il calcolo del carrello, quello gia presente (richiamando 
l'array di sessione dove è memorizzato la lista del carrello, prende i 
dati di prodotto, effettua il calcolo (prezzo * quantità ) + iva
lo somma alla lista precedente e restituisce il risultato (un nuovo 
array in sessione) ritornando il controllo a 
AggiungiCarrelloController.php, che a questo punto può richiamare la 
view con il carrello aggiornato CarrelloView.php
 
CarrelloView.php
è l'html prodotto con i dati dell'array del carrello.
 
 
Saluti