Besoin d'aide

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'aide

Re: Besoin d'aide

par moogli » 22 juil. 2011, 19:27

de rien :)

si tu a des questions, des messages, d'erreur ont pourra t'aider a les résoudre :)

@+

Re: Besoin d'aide

par cagouille65 » 22 juil. 2011, 15:41

Je te remercie pour ton message, je vais reprendre mon code initial et le remodeler le plus simplement possible, puis je le mettrais en ligne pour que vous puissiez tous y jeter un coup d'oeil et si cela fonctionne alors peut etre certain seront intéressé pour le réutiliser. En tout cas je vous tiens au courant.

Et merci pour tout.

Re: Besoin d'aide

par moogli » 22 juil. 2011, 14:43

en fait la démarche est différente, tu a bucher sur le code. ça ne fonctionne pas on t'aide, pour cela montre nous ce que tu a fait (le dernier code testé) et dit nous ce qui ne va pas, message d'erreur, action non effectuées etc.

dans les script que tu a fournit il y a des input qui ne sont pas dans des formulaires des foreach inutile (qui d’ailleurs sont même une aberration, on ne boucle pas sur une seul valeur et vu le traitement derrière cela ne présente aucun intérêt).

donc essai de faire le script seul, sans fioriture, et de le faire fonctionner.

le principe est le même :
- une requête SQL avec la condition where pour prendre des éléments précis.
- un affichage dans un formulaire avec l'exemple que j'ai donné avant (notation tableau, 3 champs input, un text, un hidden et une checkbox par élément a afficher).
- finaliser le formulaire
traitement :
- vérifier l’existence des 3 tableaux
- boucler sur le plus petit (celui des checkboxs car, quand on coche la case c'est que l'on confirme la mise a jour).
- utiliser une requête update avec la condition where pour faire bonne mise a jour.
- afficher un beau message comme quoi c’est bon ou qu'il y a une erreur.

si tu fait cela pas a pas il n'y a rien de sorcier.
si tu ne comprend pas le fonctionnement php / html je te conseil (par exemple) l'article zéro de phpdebutant.org (explication du principe de base).

on vois aussi un mélange sur les utilisations des connexions au sgbd, je pense que tu essai de modifier un script déjà prêt ?

@+

Re: Besoin d'aide

par cagouille65 » 21 juil. 2011, 13:55

J'ai bossé sur les tutos du site du zero mais mon soucis reste le même, je ne trouve pas comment mettre à jour tout un tableau en même temps même sur les autres tutos, je n'ai pas trouver de solution. Je ne vous demande pas de faire mon petit programme à ma place, ce que je demande c'est que quelqu'un me montre un exemple qui fonctionne complètement pour voir quel est la démarche logique à adopter et voir pourquoi je merde. C'est juste une fonction au final mais le problème c'est que les solutions que vous m'avez apportées sont certes bonnes (et je vous en remercie) mais quand je les intègre dans mon code ça merde. C'est pour cela que je demande si quelqu'un pourrait me faire un code complet que je puisse comprendre où sont mes multiples erreurs. Je sais que l'on a tous tendance à se méfier car souvent des gens demande de l'aide et en fait on fait leur travail à leur place. Moi pour le moment je ne cherche pas à faire de sites web ou programme quelconque. Ce que je veux, c'est comprendre, c'est où je merde et pour quoi je merde, tout simplement.

Merci en tout cas pour ta réponse

Re: Besoin d'aide

par moogli » 21 juil. 2011, 13:21

Franchement ton dernier commentaire ne me donne pas envie de t'aider.
Oui je suis perso mais je préfèrees vacances en pays malouin (j'attend ma galette sur une terrasse de la cité corsaire en plein soleil ;) )

Le code que je t'ai fournis n'est pas complet ? C'est normal le but n'est pas de faire l'encode complet.
Tu parle d'habitude de programmation, j'ai commencé par de l'assembleur ...

Essai avec l'exemple que j'ai mis, montre nous du code le comportant, a la limite vire le reste et test ca tous seul dans un fichier.

Ensuite debug, c'est comme ca que tu va g'en sortir tu ne buche pas le tuto !

@+

Re: Besoin d'aide

par cagouille65 » 21 juil. 2011, 11:27

Bon et bien merci tout de meme a ceux qui ont répondu et tant pis pour moi

Re: Besoin d'aide

par cagouille65 » 20 juil. 2011, 09:06

Juste pour savoir si quelqu'un est prêt à m'aider ou non.....

Merci à tous

Re: Besoin d'aide

par cagouille65 » 19 juil. 2011, 12:04

C'est pour cela que je demande si quelqu'un pourrait me faire le code pour que je puisse reprendre depuis le debut et ainsi voir et comprendre quel démarche utiliser. Je ne veux pas que vous fassiez le programme à ma place mais cela me permettrait de comprendre la démarche logique du php car en vb on place les actions sur les objets directement (boutons, liste déroulante etc...), ce n'est pas du tout la même logique de prog.

Merci à tous pour le coup de main

Re: Besoin d'aide

par moogli » 18 juil. 2011, 22:32

1ère chose : <form action="tableau de base.php" method="post"> oublie les noms de fichiers avec des espaces c'est source d'ennuis, au pire ajoute des _ à la place des espaces

foreach ($_POST as $valeur)
{
}

c'est pour faire quoi ça ?

tu ne peux être certain de ce que va contenir $valeur. utilise $_POST['nom'] !

quand au reste c'est trop le souk.

oublie extract c'est pas simple pour suivre

quand au reste effectivement c'est le brin ^^


@+

Re: Besoin d'aide

par cagouille65 » 18 juil. 2011, 22:06

Bon, je viens de regarder mais mon problème reste entier alors je vais vous mettre mon code (ATTENTION!!! C'EST LE BORDEL!!!!).

Première page
<?php
#CONFIG
include 'config.php';

#DATAS
$oQuerySelect = $oBDD -> query('SELECT DISTINCT Nom_edition as name, id_edition as id FROM tbl_edition');
?>
<h3>liste des éditions</h3>
<form action="tableau de base.php" method="post">
  <p>
    <select name="nom">
<?php foreach( $oQuerySelect as $aRow )
  if( !empty($aRow['name']) )
    echo '    <option value="', $aRow['id'], '">', $aRow['name'], '</option>';
   ?>
    </select>
  </p>
  <input type="submit" value="Choisissez votre édition">
</form>
Deuxième page
<html>
<head>
<title>Catalogue de cartes magic</title>
</head>
<body>
<?php
$user="root";
$host="localhost";
$password="";
$database="db_magic";
$connexion = mysql_connect($host,$user,$password)
	or die ("Connexion au serveur impossible");
$db=mysql_select_db($database,$connexion)
	or die ("Connexion base impossible");
	foreach ($_POST as $valeur)
{
}

$rq = "SELECT * FROM tbl_cartes WHERE id_edition = '$valeur' ORDER BY numero";
$result = mysql_query($rq)
	or die ("problème sur le requête");
$rq1 = "SELECT Nom_edition FROM tbl_edition WHERE id_edition = '$valeur'";
$result1 = mysql_query($rq1)
	or die ("probleme sur la deuxieme requête");
while ($ligne1 = mysql_fetch_array($result1))
{extract ($ligne1);
echo "<h1>Edition $Nom_edition</h1>";
}
echo "<table cellspacing='5'>";
echo "<tr><td colspan='10'><hr></td></tr>";
while ($ligne = mysql_fetch_array($result))
{extract ($ligne);
echo "<tr>\n";
echo "<td>$numero</td>\n";

echo "<td>$Nom_carte</td>\n";
echo "<td>$diffusion</td>\n";
echo "<td>$couleur</td>\n";
echo "<td>$Type</td>\n";
echo "<td><input type='submit' value='-' name='-collection'></td>\n";
echo "<td style='text-align: center'><input type='text'
name='collecion' value='$collection' size='1'></td>\n";
echo "<td><input type='submit' value='+' name='+collection'></td>\n";
echo "<td><input type='submit' value='-' name='-jeu'></td>\n";
echo "<td style='text-align: center'><input type='text'
name='jeu' value='$jeu' size='1'></td>\n";
echo "<td><input type='submit' value='+' name='+jeu'></td>\n";
echo "<td><input type='checkbox'
name='foil' value='$_POST ['Foil']'></td>\n";
echo "</tr>\n";
echo "<tr><td colspan='10'><hr></td></tr>\n";
}
echo "</table>\n";
echo "<form action='newdepart.php' method='post'>";
Echo "<input type='submit' value='retour'>";
echo "<SCRIPT LANGUAGE='JavaScript'>";
echo "<input type='button' value='-' onclick='$('#button-1').val( $('#button-1').val()*1-1 );' />";
echo "<input type='text' name='' id='button-1' value='0' />";
echo "<input type='button' value='+' onclick='$('#button-1').val( $('#button-1').val()*1+1 );' />";
echo "</SCRIPT>" ;
?>
</body>
</html>
Bonne chance à ceux qui veulent y jeter un coup d'oeil. Et merci à tous

Re: Besoin d'aide

par moogli » 18 juil. 2011, 15:48

tu peux faire une requete préparé avec l'extension "classique" mysql(i) de php, regarde dans les tutos ou contribution (je sais plus) Stealth35 à fait un article chiadé sur le sujet ;)


@+

Re: Besoin d'aide

par cagouille65 » 18 juil. 2011, 15:05

Merci pour tout, je vais regarder ca chez moi ce soir si j'ai le temps. Pour le PDO, je n'utilise pas ce principe, (il faudrait peut être que je regarde...). Moi je passe par une connection manuelle.

Re: Besoin d'aide

par moogli » 18 juil. 2011, 14:55

on ne fait pas de code tous cuit, au mieux du didactique.

ce que j'ai mis plus haut revient à
<form actin="" method="post">
truc <input type="hidden" name="key[]" value="412" /><input type="textbox" name="quantite[]" value="125" /><input type="checkbox" name="amodifier[]" /><br />
machin <input type="hidden" name="key[]" value="415" /><input type="textbox" name="quantite[]" value="125" /><input type="checkbox" name="amodifier[]" /><br />
chose <input type="hidden" name="key[]" value="45" /><input type="textbox" name="quantite[]" value="125" /><input type="checkbox" name="amodifier[]" /><br />
<input type="submit" value="modifier" />
</form>
la validation
<?php
// on vérifie si le formulaire a été validé
if ( isset($_POST['key']) && isset($_POST['quantite']) && isset($_POST['amodifier'])) {
// connexion PDO + prépation de la requete préparée a ta charge le tout dans une variable $requeteprepare
// la requete sera du type update table set quantite = :quantite where id= :id !
// foreach pour parcourir le plus petit des tableaux
foreach( $_POST['amodifier'] as $index => $val ) {
// on vérifie que les deux autres tableaux on bien les mêmes index (pour le cas ou ^^ )
if (isset($_POST['quantite'][ $val ]) && isset($_POST['$key'][ $val ]) {
// association des valeurs aux paramètres de la requête préparée
$requeteprepare -> bindValue(':quantite', $_POST['quantite'][ $val ] , PDO::PARAM_INT);
$requeteprepare -> bindValue(':id', $_POST['$key'][ $val ] , PDO::PARAM_INT);
$requeteprepare -> execute();
}
}
}
?>
voila comment tu peux réaliser ce que tu souhaite.
un peu de doc :
- sur PDO (n'hésite pas a regarder la doc officiel plus complète ;) )
- selfhtml.org pour tous ce qui est (x)html, html n'y pas représenté !

@+

Re: Besoin d'aide

par cagouille65 » 18 juil. 2011, 14:24

Je te remercie pour ton aide. Mon problème actuellement est que c'est le bordel dans mon code. C'est pour cela que je demande a tous si quelqu'un pouvait prendre cinq minute pour me faire un exemple de code qui fonctionne pour voir où cela merde et comprendre où sont mes erreurs. J'ai déjà essayé plusieurs solutions mais sans aucun résultat. J'ai inclus pour chaque ligne une textbox de type hidden qui récupère l'id de chaque ligne et fais une boucle avec requête update sur un bouton mise à jour qui est censé vérifier chaque ligne de mon tableau pour voir si les quantités ont été modifiées mais sans aucun résultat. Mon code étant relativement désordonné, je n'arrive pas à voir où cela plante.

Donc pour résumer si quelqu'un pouvait me faire un bout de code qui fonctionne pour que je puisse le comparer au mien et comprendre où sont mes problèmes et erreurs, je l'en remercie d'avance.

Re: Besoin d'aide

par moogli » 18 juil. 2011, 13:33

salut,

quel est le code utilisé actuellement ?

pour ce que souhaite faire on utilise généralement la notation tableau dans les noms de champs html (par exemple <input type="text" name="quantite[]" /> <input type="checkbox" name="amodifier[]" />).
Avec ça tu aura une case texte et une checkbox avec le même index (en php tu récupère $_POST['quantite'] et $_POST['amodifier'] avec des index identique). Par contre dans $_POST['amodifier'] tu n'aura que les checkbox qui sont cochées au moment de la validation.

Donc avec ça tu modifie la quantité, tu clique sur la cas a cocher a coté pour 'valider' la modification !

lors du traitement du formulaire tu parcours $_POST['amodifier'] avec un foreach et test si l'équivalent existe dans $_POST['quantité'] et tu fait une mise a jour.
avec PDO tu peux utiliser une requête préparée.

Pour cibler correctement le tuple a mettre a jour il te faut avoir la clef primaire de cette table, pour cela utilise un champ "hidden" a coté de quantitée qui contient la clef primaire.
une autre solution et de fixer l'index en utilisant la clef primaire (name="quantite[ index]", name="amodifier[index]").

@+