[PHP] merge di 2 tabelle e insert su terza tabella

pabbelus

Nuovo Utente
25 Apr 2017
15
1
3
Ciao a tutti

Ho un problemino, ho le 2 seguenti tabelle

¦---bb_tickets---¦
¦ id ¦ owner ¦
¦-------------------¦
¦ 111 ¦ 2 ¦
¦ 145 ¦ 2 ¦
¦ 152 ¦ 3 ¦
¦-------------------¦


¦---bb_users-----¦
¦ id ¦ user ¦
¦-------------------¦
¦ 1 ¦ Admin ¦
¦ 2 ¦ PG ¦
¦ 3 ¦ FS ¦
¦-------------------¦


devo esportare le tabelle ottenendo quanto segue:


¦----Result----¦
¦ id ¦ user ¦
¦-----------------¦
¦ 111 ¦ PG ¦
¦ 145 ¦ PG ¦
¦-----------------¦



Come posso realizzare tutto ciò? Devo utilizzare la funzione JOIN? e in che modo?
Grazie in anticipo
PG
 
ciao
prova così
PHP:
//dati di connessione
$utente="PG";
$query="SELECT  owner.t as ow, user.u as us FROM bb_tickets as t, bb_users as u WHERE owner.t= id.u AND user.u='$utente'";
$result=mysqli_query($conn, $query);
while($riga=mysqli_fetch_assoc($result)){
    $id=$riga['ow'];
    $user=$riga['us'];
    //e qui fai quello che devi fare con le due variabili
}
 
Ciao, purtroppo non mi dà alcun risultato in uscita, ma:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, string given in
 
ciao
metti un var_dump
PHP:
//dati di connessione
$utente="PG";
$query="SELECT  owner.t as ow, user.u as us FROM bb_tickets as t, bb_users as u WHERE owner.t= id.u AND user.u='$utente'";
$result=mysqli_query($conn, $query);
var_dump($result);//poi lo togli
while($riga=mysqli_fetch_assoc($result)){
    $id=$riga['ow'];
    $user=$riga['us'];
    //e qui fai quello che devi fare con le due variabili
}
se il var_dump ti da FALSE vuol dire che ho fatto probabilmente un errore nella querystringa, per prima cosa verifica l'esatta corrispondenza tra i nomi nella query e quelli che hai nella tabelle
 
bool(false)
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in

corrispondenza ok :-(
 
ciao
scusa, ma probabilmente dormivo (non avevo ancora preso il caffe) e ho invertito tutto:(
correggi
PHP:
$query="SELECT  owner.t as ow, user.u as us FROM bb_tickets as t, bb_users as u WHERE owner.t= id.u AND user.u='$utente'";
in
PHP:
$query="SELECT  t.owner as ow, u.user as us FROM bb_tickets as t, bb_users as u WHERE t.ownwr= u.id AND u.user='$utente'";
lascia il var_dump e verifica e sappimi dire

dimenticavo:
dai anche un occhio a https://www.mrw.it/mysql/join_6812.html
 
il file php:

PHP:
<?php

$host = "localhost";
$username = "root";
$password = "--------";
$dbname = "bb";

$conn =  new mysqli($host, $username, $password, $dbname) ;

$utente="PG";
$query="SELECT  t.owner as ow, u.user as us FROM bb_tickets as t, bb_users as u WHERE t.ownwr= u.id AND u.user='$utente'";
$result=mysqli_query($conn, $query);
//var_dump($result);//poi lo togli
while($riga=mysqli_fetch_assoc($result)){
    $id=$riga['ow'];
    $user=$riga['us'];
    //e qui fai quello che devi fare con le due variabili
}

?>

midà come risultato:

HTML:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\xxxxx on line 19
 
ciao
scusa rimetti il var_dump, anzi aggiungine un altro per vedere se la querystringa viene scritta come deve essere
poi prova la query senza gli alias
PHP:
//...
$query="SELECT  bb_tickets.owner, bb_users.user FROM bb_tickets, bb_users WHERE bb_tickets.ownwr= bb_users.id AND bb_users.user='$utente'";
var_dump($query);//poi lo togli
$result=mysqli_query($conn, $query);
var_dump($result);//poi lo togli
while($riga=mysqli_fetch_assoc($result)){
    $id=$riga['bb_tickets.owner'];
    $user=$riga['bb_users.user'];
    //e qui fai quello che devi fare con le due variabili
}
se il secondo var_dump da ancora false il problema è o nella $conn e in $query

dimenticavo:
se non funziona ancora proviamo con due query senza join per capire dove è l'inghippo
 
ciao
oho oho mi sono accorto adesso, tu fai la connessione ad oggetti io sto usando il metodo procedurale
al posto di
$conn = new mysqli($host, $username, $password, $dbname) ;
metti
$conn = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
oppure trasforma in oggetti le varie chiamate al db
 
allora, ora ho il secondo bool false, e:

HTML:
Notice: Undefined variable: utente in C:\xampp\htdocs\hesk\tickets\test4.php on line 15
string(122) "SELECT bb_tickets.owner, bb_users.user FROM bb_tickets, bb_users WHERE bb_tickets.ownwr= bb_users.id AND bb_users.user=''" bool(false) 
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\hesk\tickets\test4.php on line 19
 
ciao
ho fatto le prove e questo funziona
controlla di aver scritto bene i nomi delle variabili, dei campi e delle tabelle e bisogna mettere l'alias ai nomi dei campi
PHP:
<?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$db = 'prove';
$conn = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
//prova per vedere le tabelle
$query="SELECT * FROM bb_tickets";
$ris=mysqli_query($conn,$query);
while($riga=mysqli_fetch_assoc($ris)){
    $id=$riga['id'];
    $owner=$riga['owner'];
    echo "$id - $owner<br>";
}
$query="SELECT * FROM bb_users";
$ris=mysqli_query($conn,$query);
while($riga=mysqli_fetch_assoc($ris)){
    $id=$riga['id'];
    $user=$riga['user'];
    echo "$id - $user<br>";
}
/*output
111 - 2
145 - 2
152 - 3
1 - Admin
2 - PG
3 - PG
*/
$utente="PG";
//verificato: BISOGNA usare gli alias per i nomi dei campi
$query="SELECT  bb_tickets.id as idu, bb_users.user as us FROM bb_tickets, bb_users WHERE bb_tickets.owner= bb_users.id AND bb_users.user='$utente'";
$ris_r=mysqli_query($conn,$query);
//var_dump($ris);// OK
while($riga=mysqli_fetch_assoc($ris_r)){
    $id=$riga['idu'];
    $user=$riga['us'];
    echo "$id - $user<br>";
}
/*output
111 - PG
145 - PG
152 - PG
*/
?>
tra l'altro il tuo var_dump ti restituisce ....bb_users.user='' dove è andato a finire il valore di $utente?
 
ok, secondo me va, io nel frattempo sono riuscito a creare questa query:

PHP:
SELECT bb_tickets.id, bb_users.user FROM bb_tickets, bb_users WHERE bb_users.id = '3';

e il risultato:

id user
111 FS
145 FS
152 FS

ora devo copiare i valori dentro result e dovrei essere a posto

ti faccio sapere e ti ringrazio tantissimo per l'aiuto

GRAZIE

Pablo
 

Discussioni simili