Visualizzazione risultati 1 fino 10 di 10

Discussione: query sql

  1. #1
    Guest

    Predefinito query sql

    ho un problema con questa query

    $sqlmodifica="SELECT * FROM users WHERE username = '$nickname' AND userid = '$id' SET email_address = '$email', allineamento = '$allineamento', avatar = '$avatar', info = '$info'";

    volevo sapere cosa sbaglio visto che mi esce

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET email_address = 'asda', allineamento = 'Legale_Buono',

    l'obbiettivo della quey è modificare i dati in un determinato campo di una delle righe che ci sono alll'interno della tabella

  2. #2
    L'avatar di makpaolo
    makpaolo non è connesso Utente storico
    Data registrazione
    08-05-2003
    Residenza
    Brescia ( prov.)
    Messaggi
    9,399

    Predefinito

    ricontrolla i nomi dei campi con quelli scritti ..
    Edit: se deve aggiornare non devi fare SELECT ( che così non funziona) ma UPDATE, perciò la query sarà
    $sqlmodifica="UPDATE users SET email_address = '$email', allineamento = '$allineamento', avatar = '$avatar', info = '$info' WHERE username = '$nickname' AND userid = '$id' ";
    il WHERE alla fine
    Ultima modifica di debug : 18-09-2006 alle ore 19.34.04
    Se smetti di imparare e evolverti sei morto dentro

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da sayuky
    ho un problema con questa query

    $sqlmodifica="SELECT * FROM users WHERE username = '$nickname' AND userid = '$id' SET email_address = '$email', allineamento = '$allineamento', avatar = '$avatar', info = '$info'";

    volevo sapere cosa sbaglio visto che mi esce

    .......

    l'obbiettivo della quey è modificare i dati in un determinato campo di una delle righe che ci sono alll'interno della tabella
    Sbagli tutto... (scusa la franchezza)
    Se vuo modificare i record di una tebella devi utilizzare l'UPDATE!!!
    Ne tuo caso è:

    UPDATE users
    SET email_address = '$email',
    allineamento = '$allineamento',
    avatar = '$avatar',
    info = '$info'
    WHERE username = '$nickname' AND userid = '$id'

    Ciao

  4. #4
    Guest

    Predefinito

    Scusate se mi intrometto, ma ho lostesso problema, solo che io sapevo dell'update, ma il mio problema è che devo modificare (ad esempio il campo "contatore") contatore, ma in tutte le righe della tabella...ora..io ho fatto lo script...ma ci sarà qualche problema nel ciclo...xkè le legge...e di modificare modifica solo l'ultima riga...cioè se io ho una colonna con tutti i contatori...dal primo all'ultimo...e li edito con il mio script poi le modifiche avvengono soltanto per l'ultimo come ordine(che viene mantenuto dal campo ID) come si può fare un ciclo per modificare tutte le righe nel campo contatore? :(

  5. #5
    Guest

    Predefinito

    dovresti semplicemente fare
    update tabella set contatore = quello_che_vuoi_tu

    oppure posta il codice

  6. #6
    Guest

    Predefinito

    Non è così semplice...xkè ho detto che i campi sono tanti, cioè è come se fosse la tabella dei post di un blog, ogni post ke viene aggiunto va a inserire nuovi dati nella tabella...questa tabella contiene(oltre alla colonna ID, Autore, ecc) una colonna "Contatore" che ho aggiunto io, e vorrei poter attribuire a questa colonna(per ogni post ke viene inserito) un valore a mio piacimento, in modo da potermi impostare l'ordine di visualizzazione dei post a mio piacimento...tutto questo,anticipo,mi servirà per decidere io in quale ordine(diverso dal cronologico o alfabetico) impostare i post nel mio blog fatto con wordpress.

  7. #7
    Guest

    Predefinito

    posta la struttura delle tabelle con qualche riga di esempio così capisco meglio

  8. #8
    Guest

    Predefinito

    Allora, questa è l'immagine di una parte della tabella:
    http://www.mwolf.altervista.org/tabella.gif

    Come si vede chiaramente ci sono il campo ID, quello contatore, e il campo ordine.Questi campi sono della tabella dei post del blog.

    Il campo "ordine" l'ho creato io...e per ogni post che viene aggiunto gli posso attribuire un numero(nel campo ordine).

    Lo script che volevo realizzare è per poter modificare il campo ordine per ognuno dei post..quindi questo è il codice che ho provato:

    Codice PHP:
    <?php
    $connessione
    = mysql_connect("localhost", "root", "password")
    or die(
    "Impossibile stabilire una connessione.");

    if (
    $connessione) {
    $msg = "Operazione riuscita!";
    echo
    $msg;
    }

    $database = mysql_select_db('nadir');

    $nome_tabella = "wp_posts";


    $visua = "select ID, ordine from $nome_tabella ";

    $risult = @mysql_query($visua,$connessione) or die ("Non si possono vedere i risultati.");

    ?>
    <table border=0 width="700" align="center">
    <tr><td colspan=2><h2>Tabella ID e Contatori</h2></td></tr>
    <tr><td>ID</td><td>Ordine</td></tr>

    <form method="POST" action="modificacontatti.php">

    <input type="hidden" name="ID" value="<?php echo "$ID";?>">

    <?php
    while ($row = mysql_fetch_array($risult)) {

    $ID = $row['ID'];
    $ordine = $row['ordine'];



    echo
    "<tr><td><h3> ID</h3></td><td><h3>Modifica Ordine</h3></td></tr>"; ?>
    <tr><td><h3><?php echo"$ID"?></h3></td><td><h3><?php echo"$ordine"?></h3></td></tr>
    <tr><td><input type="text" name="ID" value="<?php echo"$ID"?>" ></td><td><input type="text" name="ordine" value="<?php echo"$ordine"?>" ></td></tr>

    <?php

    }

    ?>

    Con questo script creo il form dove ci sono sia l'id che il contatore per ogni post(spero sia giusto).Con il form tramite il metodo "post" mando tutto al file che modificherà il database,e questo file(modificacontatti.php) contiene questo script:
    Codice PHP:
    <?php

    $connessione
    = mysql_connect("localhost", "root", "password")
    or die(
    "Impossibile stabilire una connessione.");

    if (
    $connessione) {
    $msg = "Operazione riuscita!";
    echo
    $msg;
    }

    $database = mysql_select_db('nadir') or die ("Impossibile selezionare il database.");
    $nome_tabella = "wp_posts";
    $sele = "select ordine from $nome_tabella";

    $vai = @mysql_query($sele,$connessione) or die ("Non si può eseguire la query!");


    $ordine = $_POST['ordine'];

    $avviamodifica = "UPDATE $nome_tabella SET ordine = \"$ordine\"

    WHERE ID = \"
    $ID\"
    "
    ;

    $modifica = @mysql_query($avviamodifica, $connessione) or die ("Impossibile effettuare la modifica.");

    ?>
    Solo che facendo la prova, questo codice mi modifica solo l'ultimo dei post inseriti, cioè nella visualizzazione li visualizza tutti, ma se modifico(tramite il file di prima) il numero "ordine" in tanti campi, l'unico che prende è l'ultimo.
    E' come se il ciclo fosse sbagliato, e di tutti quelli che fa modifica solo l'ultimo della lista.
    Dove sbaglio? :(
    P.S. ovviamente i codici che ho postato sono privi della formattazione della tabella che ritenevo di poca importanza.)

    [DS] Usa dei link al posto delle immagini pesanti, pensa anche a chi ha una connessione lenta...

    nessuno ha qualche idea su come incrementare il valore di ordine quando si va a modificare il database?:(

    [DS] Non inviare messaggi consecutivi, usa la funzione EDIT del forum...
    Ultima modifica di dementialsite : 20-09-2006 alle ore 13.02.29

  9. #9
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Vediamo un po' di capire quello che vuoi fare...
    - vuoi fare in modo che al campo ordine venga assegnato automaticamente un nuovo valore diverso da quelli precedenti? Devi dichiararlo a monte, quando crei la tabella (o aggiungi il campo), specificando la clausola AUTO_INCREMENT. Ma perché poi, visto che esiste già il campo ID?
    - vuoi aumentare il valore di ordine di una certa quantità? Con una query di aggiornamento puoi benissimo farlo, ecco come, ad esempio, aumentare di 1 il valore di ordine su tutti i record:
    Codice:
    UPDATE tabella SET ordine = ordine + 1
    - vuoi aumentare il valore di ordine di una certa quantità, ma solo per una determinata discussione? La query è simile a quella di prima:
    Codice:
    UPDATE ordine SET ordine = ordine + 1 WHERE ID = ...
    dove al posto dei puntini va scritto l'ID della discussione

    Da quel che vedo nel codice che hai postato, inoltre, vedo che finisci per creare più campi che hanno lo stesso nome. Per elaborarli tutti non puoi usare una semplice sequenza, dovresti:
    - o diversificarli in qualche modo nella pagina precedente (basta anche aggiungere un numero ogni volta diverso) e, nella pagina successiva, elaborarli separatamente (come ID1/ordine1, ID2/ordine2 etc.)
    - oppure usare un ciclo un po' più sofisticato:
    Codice PHP:
    foreach ($_POST['ordine'] as $ordine) { ... }
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  10. #10
    Guest

    Predefinito

    Allora, prima di tutto grazie delle correzioni ai moderatori.


    Quello che volevo fare era creare una tabella dinamica che mi prendesse i dati da una tabella di database(quella dell'immagine) dove poter vedere i campi "ID" e "ordine".
    Fatto questo, tramite gli input volevo poter modificare il campo "ordine" per ogni singolo dato del database...

    CI SONO RIUSCITO...mi stavo complicando la vita..avevo fatto il ciclo while giusto, ma come dicevi tu avevo sbagliato a mettere i nomi delle variabili, quindi quando ad esempio richiamavo $ordine non prendeva quella che dicevo io.

    Inoltre sbagliavo a mandare i dati al databae tramite il metodo POST proprio a causa del nome sbagliato e della sbagliata concatenazione delle variabili.

    Ora ho risoltto, cambiando nome alle variabili...e posso andare a modificare il database.

    Tutto questo mi serviva perchè voglio creare un plugin per WordPress....con il quale si potranno ordinare tutti i post dei blog a proprio piacimento...ordinandoli non per ID ma per "ordine"....anche se ancora devo studiarci su..xkè non ho ancora letto tutto su come creare un plugin per wordpress.

    Anzi..se qualcuno fosse a conoscenza di una breve guida per creare primi piccoli plugin per wordpress gli sarei grato se postasse quì il link!

    Grazie mille a tutti!!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •