Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    problema con mysql update in ciclo for

    Salve, ho un problema che mi sta facendo vedere triplo,

    ho questo codice:

    Codice PHP:
    <?php
    //remove letters from urls
    function deleteFirstChar$string ) {
        return 
    substr$string14 );}

    #prendi da post
    $hit htmlspecialchars($_POST['links']);
    $folderId htmlspecialchars($_POST['foldercode']);

    #splitta le urls
    $pieces explode("\n"$hit);

    $nRow count($pieces);
    echo 
    '<center><table class="button"><td>';
    echo 
    "<center>Links: ".$nRow."</center><br>";

     echo 
    $folderId."<br>";
     
    #cicla ogni linea
    for ($linee=0$linee<$nRow$linee++)
    {

     
    $codekkdeleteFirstChar$pieces[$linee] );
    echo 
    $codePhp."<br>";
     
        
    // set folderId to files
    $change mysqli_query($con,"Update links SET folder='$folderId' Where php='$codekk'");

    ?>
    allora il funzionamento è questo:

    ricevo tot righe di urls attraverso post, uso la funzione explode,successivamente taglio l'url http://dominio/ e mi resta un codice che è presente anche nel database come record nel campo 'php'.
    se faccio un echo della variabile $codekk che si riallaccia all'array ( $codekk= deleteFirstChar( $pieces[$linee] ); ) mi visualizza tutti i campi che mi servono.

    uso questa variabile ($codekk) come Where in una chiamata mysql di update, in modo da poter modificare tutti i valori di un altro campo di quelle righe.

    in pratica è come se in $change = mysqli_query.. $codekk fosse vista come una variabile statica infatti mi viene inserito nel database solo l'ultimo record da aggiornare e gli altri vengono saltati nonostante nel ciclo for gli echo di $codekk siano perfetti (tutti diversi).

  2. #2
    ps ho provato anche a metterci una select così giusto per vedere e anche questa mi da un risultato solo.. nonostante nell'echo $codekk mi da tutti i risultati..

    Codice:
    Codice PHP:

    for ($linee=0$linee<$nRow$linee++)
    {
     
    $codekkdeleteFirstChar$pieces[$linee] );

    echo 
    $codekk."<br>";

    $findCode mysqli_query($con"SELECT * FROM links Where php='$codekk'");
    while(
    $row mysqli_fetch_array($findCode)) {
      echo 
    $row['php'] . "kkkkk " $row['owner'];
      echo 
    "<br>";
      } 
    Niente, $codekk dentro il ciclo viene visto una volta sola come variabile, ma come è possibile se in echo $codekk mi restituisce tutti i risultati?!?!?!.. omg!!!

  3. #3
    Quote Originariamente inviata da dk-wamp Visualizza il messaggio
    Salve, ho un problema che mi sta facendo vedere triplo,

    ho questo codice:

    Codice PHP:
    <?php
    //remove letters from urls
    function deleteFirstChar$string ) {
        return 
    substr$string14 );}

    #prendi da post
    $hit htmlspecialchars($_POST['links']);
    $folderId htmlspecialchars($_POST['foldercode']);

    #splitta le urls
    $pieces explode("\n"$hit);

    $nRow count($pieces);
    echo 
    '<center><table class="button"><td>';
    echo 
    "<center>Links: ".$nRow."</center><br>";

     echo 
    $folderId."<br>";
     
    #cicla ogni linea
    for ($linee=0$linee<$nRow$linee++)
    {

     
    $codekkdeleteFirstChar$pieces[$linee] );
    echo 
    $codePhp."<br>";
     
        
    // set folderId to files
    $change mysqli_query($con,"Update links SET folder='$folderId' Where php='$codekk'");

    ?>
    allora il funzionamento è questo:

    ricevo tot righe di urls attraverso post, uso la funzione explode,successivamente taglio l'url http://dominio/ e mi resta un codice che è presente anche nel database come record nel campo 'php'.
    se faccio un echo della variabile $codekk che si riallaccia all'array ( $codekk= deleteFirstChar( $pieces[$linee] ); ) mi visualizza tutti i campi che mi servono.

    uso questa variabile ($codekk) come Where in una chiamata mysql di update, in modo da poter modificare tutti i valori di un altro campo di quelle righe.

    in pratica è come se in $change = mysqli_query.. $codekk fosse vista come una variabile statica infatti mi viene inserito nel database solo l'ultimo record da aggiornare e gli altri vengono saltati nonostante nel ciclo for gli echo di $codekk siano perfetti (tutti diversi).
    Gli echo di $codekk sono tutti perfetti nel ciclo perchè tu stampi la variabile $codePHP

  4. #4
    damy sono tutto tranne che un genio di php , come posso utilizzare l'array dentro la query?

  5. #5
    Tu vuoi modificare tutti i dati presenti sul database che abbiano come condizione gli elementi dell'array giusto?
    Metti var_dump($nRow); prima del ciclo e dimmi cosa ti restituisce e cambia $codePhp con $codekk nel ciclo

  6. #6
    mettendo var_dump($nRow); mi viene scritto int(6) (a seconda dei link che inserisco che poi diventano parti dell'array).

    (codekk e codePhp erano la stessa variabile, ho sbagliato ad incollare il codice mentro lo stavo modificando, è codekk che in echo fa comparire perfettamente tutti i risultati ma poi nella query fa l'update solo all'ultima stringa)

    grazie intanto per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.