par
Ricou » 14 sept. 2009, 02:12
Ben j'ai bien fait de demander, car ça dépasse mes compétences, mais je crois avoir compris.
La dernière proposition me plait bien, assez courte, il me suffit de la répéter pour chaque table, 8 en tout.
j'ai juste besoin de 2 confirmations :
Cette ligne remplit un array avec en clé le nom de la variable et en valeur la nombre posté ou si ce n'est pas un nombre, par 0. Donc le point d'interrogation permet de dire l'un ou l'autre ?
Est-ce qu'il serait possible de remplacer le zéro par la valeur présente dans la table (comme j'ai fait ci-dessous) ?
Par contre ça je ne comprends pas :
Code : Tout sélectionner
$requete = "UPDATE rent_arme SET";
foreach ($tab_sortie as $cle => $valeur)
{
$requete .= $cle." = '".$valeur."'",
} si $requete contient le début de la requete sql, comment peut-elle contenir aussi les valeurs de la boucle ?
j'aurais plutot tendance à créer le début de la requete en brut, puis insérer les valeurs de l'array au mileu
Je mets en dessous le code complet comme je le comprends, est-ce que c'est correct ?
comme ça c'est bon :
$sql = mysql_query('SELECT * FROM arme') or die(mysql_error()); //au tout début du code je met la requete pour récupérer les infos avant modification
$resultat = mysql_fetch_array($req_rent_info) //ce qui donne par exemple : $resultat['arbalete'] pour avoir la valeur
//ensuite le code donné par aureusms
$tab_cle_autorise = array ("arbalete", "arc_acier", "arc_bois");
foreach ($_POST as $cle => $valeur)
{
if (in_array($cle,$tab_cle_autorise))
{
$tab_sortie[$cle] = (is_int($valeur)) ? $valeur : $resultat['$cle']; //donc là je remplace le zéro par la variable
}
}
foreach ($tab_sortie as $cle => $valeur)
{
$requete .= $cle." = '".$valeur."'", //n'y a-t-il pas d'erreurs dans les points et guillemets ?
}
//on retire la dernière virgule
$requete = substr ($requete,0,-1);
mysql_query ("UPDATE rent_arme SET ($requete) WHERE nom='".$nom."'" or die(mysql_error()); //la requete me semble mieux comme ça, mais je ne sais pas si elle fonctionnera
Là il est tard, je vois vos réponses demain et je testerai le tout demain soir si j'ai le temps.
Ben j'ai bien fait de demander, car ça dépasse mes compétences, mais je crois avoir compris.
La dernière proposition me plait bien, assez courte, il me suffit de la répéter pour chaque table, 8 en tout.
j'ai juste besoin de 2 confirmations :
[code]$tab_sortie[$cle] = (is_int($valeur)) ? $valeur : 0;[/code]Cette ligne remplit un array avec en clé le nom de la variable et en valeur la nombre posté ou si ce n'est pas un nombre, par 0. Donc le point d'interrogation permet de dire l'un ou l'autre ?
Est-ce qu'il serait possible de remplacer le zéro par la valeur présente dans la table (comme j'ai fait ci-dessous) ?
Par contre ça je ne comprends pas :[code]$requete = "UPDATE rent_arme SET";
foreach ($tab_sortie as $cle => $valeur)
{
$requete .= $cle." = '".$valeur."'",
}[/code] si $requete contient le début de la requete sql, comment peut-elle contenir aussi les valeurs de la boucle ?
j'aurais plutot tendance à créer le début de la requete en brut, puis insérer les valeurs de l'array au mileu
Je mets en dessous le code complet comme je le comprends, est-ce que c'est correct ?
comme ça c'est bon :
[php]
$sql = mysql_query('SELECT * FROM arme') or die(mysql_error()); //au tout début du code je met la requete pour récupérer les infos avant modification
$resultat = mysql_fetch_array($req_rent_info) //ce qui donne par exemple : $resultat['arbalete'] pour avoir la valeur
//ensuite le code donné par aureusms
$tab_cle_autorise = array ("arbalete", "arc_acier", "arc_bois");
foreach ($_POST as $cle => $valeur)
{
if (in_array($cle,$tab_cle_autorise))
{
$tab_sortie[$cle] = (is_int($valeur)) ? $valeur : $resultat['$cle']; //donc là je remplace le zéro par la variable
}
}
foreach ($tab_sortie as $cle => $valeur)
{
$requete .= $cle." = '".$valeur."'", //n'y a-t-il pas d'erreurs dans les points et guillemets ?
}
//on retire la dernière virgule
$requete = substr ($requete,0,-1);
mysql_query ("UPDATE rent_arme SET ($requete) WHERE nom='".$nom."'" or die(mysql_error()); //la requete me semble mieux comme ça, mais je ne sais pas si elle fonctionnera
[/php]
Là il est tard, je vois vos réponses demain et je testerai le tout demain soir si j'ai le temps.