• User Attivo

    Query errata aiuto!

    Ciao cari,
    ho un problemi con la parte di uno script, premetto che sono una novellina del php e sto cercando per diletto di capirci qualcosa :bho:😢

    La query è questa

    [PHP]

    $strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
    $rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());

    $strsql2 = "INSERT INTO jos_core_acl_aro (name, section_value) VALUES ('$name', '$section_value')";
    $rs2=@mysql_query ("$strsql2") or die ("Errore di Connessione" .mysql_error());

    $strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE jos_users.name = jos_core_acl_aro.name";
    $rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());

    [/PHP]
    L'ultima mi dà il problema che la tabella "jos_core_acl_aro.name" risulta sconosciuta 😞

    In poche parole, ma non so se la sintassi è giusta vorrei fare:

    inserisci nel campo "value" della tabella "jos_core_acl_aro" il valore "id" preso dalla tabella jos_users dove "name" di "jos_users" è uguale a "name" di "jos_core_acl_aro.name"

    Dov'è l'erroreeeeeeeeeeeeeeeee???? :arrabbiato:
    Mi date un suggerimento?
    Grazie!
    baci 💋


  • User Attivo

    PS:
    se la modifico così

    [PHP]

    $strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'";
    $rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());

    [/PHP]

    Va tutto bene ma in value nella tabella jos_core_acl_aro non inserisce nulla


  • ModSenior

    Ciao Sara1985,

    prova cosi:
    [php]

    INSERT INTO jos_core_acl_aro (value) VALUES((SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'))"

    [/php]


  • User Attivo

    Grazie della risposta 🙂

    Facendo con la tua modifica ottengo questo errore

    Errore di ConnessioneColumn 'value' cannot be null

    😢


  • User Attivo

    Ho provato anche così

    [php]
    $strsql3 = "INSERT INTO jos_core_acl_aro (value) SELECT id FROM jos_users WHERE name = 'jos_core_acl_aro.$name'";
    [/php]Tutto bene, nessun errore ma il campo "value" in "jos_core_acl_aro" rimane vuoto.
    Ma questa sintassi è errata? Io vorre dirgli

    "SELEZIONE id DA jos_users DOVE "name" (inteso quello in jos_users) è UGUALE al valore di "name" in jos_core_acl_aro

    E' tutto cannato??? ❌x

    Sembra che non trovi alcun campo dove i due "name" sono uguali, in realtà con le query precedenti metto lo stesso valore "name" in tutte e due le tabelle


  • ModSenior

    Ma questa query:
    [php]
    SELECT id FROM jos_users WHERE 'jos_users.$name' = 'jos_core_acl_aro.$name'
    [/php]

    È sbagliata per cui restituisce null, generando quell'errore.


  • User Attivo

    Mi spieghi in che senso è sbagliata?
    Io vorre estrapolare ild ato dove i due campi "name" delle tue tabelle hanno lo stesso valore... ed è certo che c'è perchè lo immetto io stessa con le query precedenti.. e la riprova l'ho guardando il DB dal phpmyadmin

    Grazie ancora della pazienza


  • ModSenior

    Togli gli apici, visto che sono nomi di campi allora, e non stringhe.


  • User Attivo

    Ho tolto gli apici

    [PHP]$strsql3 = "INSERT INTO jos_core_acl_aro (value) VALUES((SELECT id FROM jos_users WHERE jos_users.$name = jos_core_acl_aro.$name))";[/PHP]

    Nel form nel campo "name" metto PINCO e il risultato è:

    Unknown column 'jos_users.PINCO' in 'where clause' :bho:


  • ModSenior

    Dice che nella tabella jos_users non esiste il campo PINCO.


  • User Attivo

    @Thedarkita said:

    Dice che nella tabella jos_users non esiste il campo PINCO.

    Appunto, certo che non esiste dovrebbe essere il valore che va nel campo "name".. e che se lascio gli apici ci va....
    Con gli apici lasciati non dà alcun errore solo che non popola il campo "value" di "jos_core_acl_aro" con il valore che dovrebbe prendere dal campo "id" in jos_users.
    Non capisco


  • ModSenior

    Mi sà che stai mischiando troppe cose, allora se devi ottenere l'id di un utente devi fare:

    
    SELECT id FROM users WHERE campo_nome = '$nome'
    
    

    Indipendentemente se questa è in una subquery o no.


  • User Attivo

    Ti riassumo il problema:

    devo far in modo che tramite uno script si possa inserire un utente nel CMS Joomla.
    Scoperti quali sono i campi interessati per far funzionare il tutto (tramite phpmyadmin) ora devo automatizzare la cosa con questo script.

    I passi sono inserire name, username, email, password ecc ecc in JOS_USERS, quando avviene questo inserimento il DB assegna in automatico al nuovo utente un ID.
    Devo poi inserire parte degli stessi campi in "JOS_CORE_ACL_ARO".. tra questi campi devo mettere anche l'ID di JOS_USERS che è stato prima generato in automatico.

    la soluzione che ho pensata è stata:
    dove il campo "name" è uguale (nelle due distinte tabelle), prendi ID di JOS_USERS e mettilo nel campo VALUE di JOS_CORE_ACL_ARO

    Inserisce tutto ma il campo VALUE rimane vuoto.

    Spero di essermi fatta capire...ma è un casino 😞


  • ModSenior

    Ma se utilizzi la funzione mysql_insert_id per recuperare l'id non è meglio considerando ciò che devi fare?


  • User Attivo

    @Thedarkita said:

    Ma se utilizzi la funzione mysql_insert_id per recuperare l'id non è meglio considerando ciò che devi fare?

    Se lo sapessi fare sicuramente sì 😞
    ma te l'ho detto che sono una novellina....

    Quindi con qiella funzione che non conosco ma che mi sa che è utilissima.. come devo fare?
    Grazie ancora


  • ModSenior

    [php]
    $strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
    $rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());

    $id_utente = mysql_insert_id();
    [/php]

    In $id_utente ha l'id dell'utente.


  • User Attivo

    @Thedarkita said:

    [php]
    $strsql = "INSERT INTO jo_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
    $rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());

    $id_utente = mysql_insert_id();
    [/php]In $id_utente ha l'id dell'utente.

    Ihuhhhuuuuu
    ci siamo quasi 🙂
    Facendo così

    [PHP]

    $strsql = "INSERT INTO jos_users (name, username, email, password, usertype, gid, params) VALUES ('$name', '$username', '$email', '$password', '$usertype', '$gid', '$params')";
    $rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());
    $id_utente = mysql_insert_id();

    $strsql2 = "INSERT INTO jos_core_acl_aro (name, section_value) VALUES ('$name', '$section_value')";
    $rs2=@mysql_query ("$strsql2") or die ("Errore di Connessione" .mysql_error());

    $strsql3 = "INSERT INTO jos_core_acl_aro (value) VALUES ('$id_utente')";
    $rs3=@mysql_query ("$strsql3") or die ("Errore di Connessione" .mysql_error());

    [/PHP]

    Succede che... in JOS_USERS è tutto ok come sempre
    in JOS_CORE_ACL_ARO crea due record in uno ci sonoi valori (name, section_value) inseriti da $strsql2 e nell'altro c'è il valore (value) inserito da $strsql3.
    Devo unirle in un'unica query?


  • ModSenior

    Si.


  • User Attivo

    @Thedarkita said:

    Si.

    Scusa la mia perseverante ignoranza...
    uso "inner join" ? :mmm:


  • ModSenior

    Scusa ma la tabella non è la stessa in quelle 2 query? Per cui devi semplicemente aggiungere un campo nella query di insert.